我正在尝试构建Outlook插件,并在Outlook Online(网络)上对其进行了测试,但是,“ Office.context.ui.messageParent ”无法与主机进行通话。
>在主机页面中,它在以下代码下运行以供用户登录(我将AzureAD SSO用于登录用户)
var fullUrl = location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '') + "/AzureAD/Login";
Office.context.ui.displayDialogAsync(fullUrl, { height: 60, width: 60, }, function (result) {
var dialog = result.value;
dialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogMessageReceived, processMessage);
});
function processMessage(arg) {
var resp = JSON.parse(arg.message);
console.log("Message received: " + JSON.stringify(resp));
}
它正确显示了具有AzureAD权限的对话框,用户表示同意,此后,该对话框应该通过使用以下代码(在对话框中)与主机进行对话:
Office.initialize = function (reason) {
$(document).ready(function () {
Office.context.ui.messageParent(true);
});
};
但是,主机不能在 processMessage 函数中获得任何消息。
但是,对于我的Word Online的Word加载项,相同的代码也可以正常工作。
我还检查了DialogAPI文档https://docs.microsoft.com/javascript/api/office/office.ui?product=outlook&view=office-js#displaydialogasync-startaddress--options--callback-
它提到:“ 在Word,Excel或PowerPoint加载项的DialogApi要求集中,对于Outlook的邮箱要求1.4中可以使用此方法。”
我确实在清单文件中放入了1.6。
<Hosts>
<Host Name="Mailbox" />
</Hosts>
<Requirements>
<Sets>
<Set Name="Mailbox" MinVersion="1.6" />
</Sets>
</Requirements>
还是没有运气,有什么主意吗?
谢谢