2017-02-09 4 views
1

Wir verwenden einen Dialog in unserem Outlook-Add-in für die Authentifizierung. Wir haben Logik in unserem Add-In, das zuerst nach der Unterstützung von Dialog-APIs sucht und dann prüft, ob das Add-In gerahmt ist. In diesem Fall öffnet es stattdessen ein neues Fenster für die Authentifizierung. Kürzlich hat sich die Dialog-API für OWA entzündet und uns einige Probleme bereitet.OWA: Dialog-API-Unterstützung

Wir haben einige frühere Probleme behoben, die sich auf die Reihenfolge beziehen, in der wir die Authentifizierung durchgeführt haben (wir verwenden ADAL.js) und Office initialisiert haben. Sobald wir jedoch über diese hinausgegangen sind, erscheint der Dialog nicht mehr mit dem Add-In unter Verwendung von Office.context.ui.messageParent.

Zusätzlich, obwohl die Add-in abonniert Microsoft.Office.WebExtension.EventType.DialogEventReceived Ereignisse, sie nicht gefeuert werden, wenn der Dialog geschlossen wird (in der Regel einen Dialog zu schließen gibt einen 12006 Fehlercode, die wir schützen zu).

Ich habe ein einfaches Outlook-Add-In erstellt, das nur einen Dialog öffnet und überprüft, dass es immer noch nicht mit dem Add-In in OWA kommunizieren kann. Ich habe den folgenden Code eingefügt.

Add-In-Code:

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"); 
        } 
       }); 
     }); 
    }) 
}; 

Dialog Code:

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

Für jetzt habe ich eingestellt unser Add-In zur ersten Überprüfung, ob es umrahmt wird (in diesem Fall öffnet ein neues Fenster zur Authentifizierung), bevor nach der Dialog-API gesucht wird oder diese verwendet wird. Dieser Ansatz ermöglicht es uns, unseren Produktionsfehler zu beheben und die OWA-Authentifizierung erneut zu aktivieren. Allerdings möchte ich den Dialog aufnehmen, sobald er funktioniert oder unser Add-In behoben ist.

Ist jemand dieses Problems bereits bekannt? 22.02

--- --- Aktualisierung

Es scheint, dass der Dialog kann nun Nachricht Eltern. Leider gibt es immer noch einen offenen Fehler, bei dem das Schließen des Dialogs kein Ereignis auslöst, das an das Add-In gesendet wird.

+0

Wenn Sie Ihr Manifest mit einer im Internet bereitgestellten Version Ihres Add-Ins teilen können, ist es möglicherweise einfacher, es erneut zu reproportieren. –

Antwort

0

Das Problem der Nachrichtenübergabe konnte nicht reproduziert werden.

In Bezug auf DialogEventReceived Ereignisse, die nicht ausgelöst werden, wenn das Dialogfeld geschlossen wird - dies ist ein bekanntes Problem, für das wir bereits an einem Fix arbeiten, aber danke für die Berichterstattung!

+0

Wir erhalten Ereignisse beim Schließen, wenn der Benutzer auf das X klickt, aber nicht, wenn der Benutzer ESC anklickt, während der Fokus auf unseren Steuerelementen innerhalb des Dialogs liegt. Ist das ein Teil des bekannten Problems? – lgaud

+0

@Igaud Check-out https://StackOverflow.com/Questions/46037829/No-Event-is-Fired-when-Closing-A-Dialog-VIA-ESC Dies ist immer noch ein Problem. –

Verwandte Themen