OWA:对话框 API 支持

OWA: Dialog API support

我们在 Outlook 加载项中使用对话框进行身份验证。我们的加载项中有逻辑,首先检查对话框 API 支持,然后检查加载项是否被加框 - 在这种情况下,它会弹出一个新的 window 以进行身份​​验证。最近,对话框 API 为 OWA 亮了起来,给我们带来了一些问题。

我们修复了一些与执行身份验证(我们使用 ADAL.js)和初始化 Office 的顺序相关的先前问题。但是,一旦我们通过这些,对话框似乎就无法使用 Office.context.ui.messageParent 与加载项通信。

此外,即使加载项订阅了 Microsoft.Office.WebExtension.EventType.DialogEventReceived 事件,它们也不会在对话框关闭时触发(通常关闭对话框 returns 会出现 12006 错误代码,我们保护它)。

我创建了一个简单的 Outlook 加载项,它只打开一个对话框,并验证它仍然无法与 OWA 中的加载项通信。我在下面包含了代码。

插件代码:

Office.initialize = function (reason) {
    $(document).ready(function () {
        var resultArea = $("span");
        $("button").click(function () {
            resultArea.text("Opening dialog");
            Office.context.ui.displayDialogAsync(
                window.location.origin + "/TestAddin/Dialog.html",
                { height: 75, width: 25 },
                function (asyncResult) {
                    if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
                        var dialog = asyncResult.value;
                        dialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogMessageReceived, function handleAuthDialogMessage(message) {
                            dialog.close();
                            resultArea.text(message);
                        });
                        dialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogEventReceived, function handleAuthDialogMessage(message) {
                            resultArea.text("Event encountered");
                        });
                    } else {
                        resultArea.text("Dialog failed");
                    }
                });
        });
    })
};

对话框代码:

Office.initialize = function (reason) {
    $(document).ready(function () {
        Office.context.ui.messageParent("dialog-opened");
    })
};

现在我已经调整了我们的加载项,在检查或使用对话框 API。这种方法允许我们修复我们的生产错误,并重新启用 OWA 身份验证;但是,我想在对话框正常工作或我们的加载项修复后接受它:)

有人知道这个问题吗?

--- 更新 2/22 ---

看来对话框现在可以向家长发送消息了。不幸的是,仍然存在一个突出的错误,即关闭对话框不会触发要发送到加载项的事件。

无法重现消息父问题。

关于对话框关闭时未触发 DialogEventReceived 事件 - 这是一个已知问题,我们已经在努力修复,但感谢您的报告!