【发布时间】:2019-02-27 05:15:32
【问题描述】:
我目前正在编写一些代码,作为带有 office-js 库的 Outlook 插件的一部分。
基本上,单击“发送”按钮后,我的应用程序应该将当前打开的消息保存为草稿,然后调用可以发送消息的 Microsoft Graph API。
我的代码目前在客户端看起来像这样:
Office.context.mailbox.item.saveAsync(
async function callback(result) {
if (result.status === "succeeded") {
const messageId = result.value
await axios.post("/api/send", {
headers: { "Authorization": "Bearer " + accessToken },
data: {
messageId
}
});
}
else {
console.log(result.error)
}
}
);
然后,在我的服务器上,我正在调用 Graph API:
const graphData = await fetch(
`https://graph.microsoft.com/v1.0/me/messages/${messageId}/send`,
{
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ' + graphToken,
'Content-Length': '0'
}
}
);
直到今天这一切都运行良好。但是,我现在看到,无论我按发送哪条消息,我一直看到来自我对 Office.context.mailbox.item.saveAsync() 的呼叫的相同消息 ID:
// console.log(messageId)
AAMkAGE4ZWVlNjI1LTk3NjAtNDFmYy1hZDhkLTU3ZWY0ZjJiMDk5YgBGAAAAAACghEgqiSFAQo8v+Kh2wPqEBwDoiTH7R3zxTZ+n2OMFzElyAAAAAAEPAADoiTH7R3zxTZ+n2OMFzElyAAAT/OkjAAA=
然后我得到一个“不支持的段类型”。从 Microsoft Graph 返回的错误,我认为这是因为消息 ID 并不真正存在。
我不确定这是怎么发生的,但我认为这可能与我目前正在开发的帐户有关。直到昨天,我还在免费试用已过期的 MS Office。我今天又重新订阅了,但是这个bug还是出现了。
但是,即使在今天之前,我也遇到了这种模式的不可预知的行为。有时,电子邮件在第一次尝试时不会发送,没有明显的错误,有时,电子邮件会发送,但电子邮件不会消失,在用户面前留下一个悬而未决的草稿。
我很想听听这方面的任何帮助或建议,因为这引起了相当多的挫败感!
【问题讨论】:
-
您是否在调用 MS Graph API 发送消息之前将 EWS ID 转换为 REST ID?查看 Office.context.mailbox.convertToRestId docs.microsoft.com/en-us/javascript/office/objectmodel/…
标签: microsoft-graph-api outlook-addin office-js outlook-web-addins