javascript - 展望错误 : "Add-in still working" when sending message

标签 javascript office-js outlook-web-addins

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

似乎是因为当对话框打开时,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包含硬编码的 url。我能做什么?

编辑 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-6a0b247358 bc-7238&client-time-epoch-millis= 1532965578192。 (原因:CORS请求没有成功)
    2. IE 并没有真正给我任何我可以挑选的东西
    3. 上面的例子来自chrome
  • 我还没有在桌面上安装它,所以目前只有网络版。

至于代码。 我的 list 定义了按钮控件的操作

    <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 依次运行大量异步请求,当这些请求的 promise 得到解决时,我通过 Office.context.mailbox.item.notificationMessages.addAsync("information", {类型:“informationalMessage”,持久性:false,消息:“成功”})

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

最佳答案

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

关于javascript - 展望错误 : "Add-in still working" when sending message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51596688/

相关文章:

javascript - Outlook AddIn GetAsync 成功但不返回任何内容

javascript - Outlook getAccessTokenAsync 错误代码 :13003 on desktop

outlook-addin - Outlook Web App (Exchange 2013 On-Premise) API 1.2 如何访问电子邮件正文?

javascript - 从一个数组中删除代表另一个数组的重复数据

javascript - 替换正文中的单词

office365 - 带有通过 Office 365 管理中心部署的加载项的 AutoOpen 任务 Pane

javascript - office-js:未捕获类型错误:window.external.GetContext 不是函数

ms-office - 为什么在页面重新加载/重定向后使用旧值初始化 Outlook 的 RoamingSettings 对象?

javascript - 使用 jquery 或 native javascript 函数编码 URL(包括 & 等字符)?

JavaScript 全局化 : How to compare two dates?