Outlook错误:发送邮件时“加载项仍在工作”

时间:2018-07-30 14:49:42

标签: javascript office-js outlook-web-addins

我已经做了一个足够简单的owa插件,当用户启动它时,会打开一个对话框窗口(Office.context.ui.displayDialogAsync),用户可以在其中修改消息的某些方面(影响收件人和邮件标题) )。据我所知,当用户关闭对话框并且外接程序完成其工作时,所有异步请求几乎立即完成,但是尝试发送时仍会触发错误。

这似乎是由于打开对话框后,owa每秒大约将垃圾邮件发送到一个不存在的地址,并且直到几分钟后请求停止,直到出现超时,该错误才会出现各种各样的。 我的开发人员控制台中已经充满了;

aria-web-telemetry.js:1 POST 
https://browser.pipe.aria.microsoft.com/Collector/3.0/?qsp=true&content- 
type=application%2Fbond-compact-binary&client-id=NO_AUTH&sdk-version=AWT-Web- 
JS-1.1.1&x-apikey=db334b301e7b474db5e0f02f07c51a47-a1b5bc36-1bbe-482f-a64a- 
c2d9cb606706-7439&client-time-epoch-millis=1532959882460 404 (Not Found)

到目前为止,谷歌没有发现对我有帮助的任何信息,我只是无法理解为什么微软会打电话给一个不存在的地址。

当然,https://appsforoffice.microsoft.com/lib/1/hosted//ariatelemetry/aria-web-telemetry.js包含经过硬编码的网址。我该怎么办?

编辑1)

  • 我将自己的试用Windows服务器托管在虚拟机上,并使用该服务器的交换帐户。
  • 在所有浏览器上均发生错误。
    1. Firefox给了我Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://browser.pipe.aria.microsoft.com/Collector/3.0/?qsp=true&content-type=application%2Fbond-compact-binary&client-id=NO_AUTH&sdk-version=AWT-Web-JS-1.1.1&content-encoding=base64&x-apikey=a387cfcf60114a43a7699f9fbb49289e-9bceb9fe-1c06-460f-96c5-6a0b247358bc-7238&client-time-epoch-millis=1532965578192. (Reason: CORS request did not succeed).
    2. IE并没有给我任何我可以挑选的东西
    3. 上面的示例来自chrome
  • 我尚未将其安装在台式机上,因此到目前为止仅在网络上安装。

关于代码。 我的清单定义了按钮控件的动作

    <Action xsi:type="ExecuteFunction">
        <FunctionName>showMessageSecurityDialog</FunctionName>
    </Action>

该功能依次显示对话框 Office.context.ui.displayDialogAsync(window.location.origin + dialogPage, { height: 50, width: 75, displayInIframe: true }, dialogCallback);

在对话框上,当用户按下保存按钮时,它将运行 Office.context.ui.messageParent(true);表示我们已完成

从这里

    dialog = asyncResult.value;
    dialog.addEventHandler(
        Microsoft.Office.WebExtension.EventType.DialogMessageReceived, 
        messageHandler
    );
    dialog.addEventHandler(
        Microsoft.Office.WebExtension.EventType.DialogEventReceived,
        eventHandler
    );

被调用,它整齐地流入消息处理程序

dialog.close();
if (arg.message == true) {
    applyMessageSecurity();
}

applyMessageSecurity依次运行大量异步请求,当这些请求的承诺得到解决时,我会通过Office.context.mailbox.item.notificationMessages.addAsync("information", {type: "informationalMessage", persistent: false, message: "success"})让用户知道

afaik我们现在应该完成。所有代码都已运行完毕,该对话框已关闭,但是,后台仍然存在某些内容,导致owa认为该插件正在运行

1 个答案:

答案 0 :(得分:1)

请确保在对话框关闭后或代码完成所有工作后调用event.completed(),以便可以通知Outlook当前无用户界面代码已完成。您可以在this article中找到更多详细信息。