Protokollieren von Terminnotizen in einer externen Anwendung in mobilen Outlook-Add-Ins

Das Speichern Ihrer Terminnotizen und anderer Details in einer CRM-Anwendung (Customer Relationship Management) oder einer Notizenanwendung kann Ihnen helfen, besprechungen, an denen Sie teilgenommen haben, nachzuverfolgen.

In diesem Artikel erfahren Sie, wie Sie Ihr mobiles Outlook-Add-In einrichten, damit Benutzer Notizen und andere Details zu ihren Terminen in Ihrer CRM- oder Notizenanwendung protokollieren können. In diesem Artikel verwenden wir einen fiktiven CRM-Dienstanbieter namens "Contoso".

Unterstützte Clients

Das Protokollieren von Notizen für eine externe Anwendung aus einem mobilen Outlook-Add-In wird in Outlook für Android und unter iOS mit einem Microsoft 365-Abonnement unterstützt.

Einrichten der Umgebung

Schließen Sie den Outlook-Schnellstart ab, um ein Add-In-Projekt mit dem Yeoman-Generator für Office-Add-Ins zu erstellen.

Erfassen und Anzeigen von Terminnotizen

Sie können einen Funktionsbefehl oder einen Aufgabenbereich implementieren. Um Ihr Add-In zu aktualisieren, wählen Sie entweder die Registerkarte für den Funktionsbefehl oder den Aufgabenbereich aus, und befolgen Sie dann die Anweisungen.

Mit dieser Option kann ein Benutzer seine Notizen und andere Details zu seinen Terminen protokollieren und anzeigen, wenn er einen Funktionsbefehl im Menüband auswählt.

Konfigurieren des Manifests

Damit Benutzer Terminnotizen mit Ihrem Add-In protokollieren können, müssen Sie den Erweiterungspunkt MobileLogEventAppointmentAttendee im Manifest unter dem übergeordneten Element MobileFormFactorkonfigurieren. Andere Formfaktoren werden nicht unterstützt.

Hinweis

Add-Ins, die das einheitliche Manifest für Microsoft 365 (Vorschau) verwenden, werden auf mobilen Geräten derzeit nicht unterstützt.

  1. Öffnen Sie in Ihrem Code-Editor das Schnellstartprojekt.

  2. Öffnen Sie die manifest.xml Datei, die sich im Stammverzeichnis Ihres Projekts befindet.

  3. Wählen Sie den gesamten <VersionOverrides> Knoten aus (einschließlich Tags zum Öffnen und Schließen), und ersetzen Sie ihn durch den folgenden XML-Code. Stellen Sie sicher, dass Sie alle Verweise auf Contoso durch die Informationen Ihres Unternehmens ersetzen.

    <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
      <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
        <Description resid="residDescription"></Description>
        <Requirements>
          <bt:Sets>
            <bt:Set Name="Mailbox" MinVersion="1.3"/>
          </bt:Sets>
        </Requirements>
        <Hosts>
          <Host xsi:type="MailHost">
            <DesktopFormFactor>
              <FunctionFile resid="residFunctionFile"/>
              <ExtensionPoint xsi:type="AppointmentAttendeeCommandSurface">
                <OfficeTab id="TabDefault">
                  <Group id="apptReadGroup">
                    <Label resid="residDescription"/>
                    <Control xsi:type="Button" id="apptReadOpenPaneButton">
                      <Label resid="residLabel"/>
                      <Supertip>
                        <Title resid="residLabel"/>
                        <Description resid="residTooltip"/>
                      </Supertip>
                      <Icon>
                        <bt:Image size="16" resid="icon-16"/>
                        <bt:Image size="32" resid="icon-32"/>
                        <bt:Image size="80" resid="icon-80"/>
                      </Icon>
                      <Action xsi:type="ExecuteFunction">
                        <FunctionName>logCRMEvent</FunctionName>
                      </Action>
                    </Control>
                  </Group>
                </OfficeTab>
              </ExtensionPoint>
            </DesktopFormFactor>
            <MobileFormFactor>
              <FunctionFile resid="residFunctionFile"/>
              <ExtensionPoint xsi:type="MobileLogEventAppointmentAttendee">
                <Control xsi:type="MobileButton" id="appointmentReadFunctionButton">
                  <Label resid="residLabel"/>
                  <Icon>
                    <bt:Image size="25" scale="1" resid="icon-16"/>
                    <bt:Image size="25" scale="2" resid="icon-16"/>
                    <bt:Image size="25" scale="3" resid="icon-16"/>
                    <bt:Image size="32" scale="1" resid="icon-32"/>
                    <bt:Image size="32" scale="2" resid="icon-32"/>
                    <bt:Image size="32" scale="3" resid="icon-32"/>
                    <bt:Image size="48" scale="1" resid="icon-48"/>
                    <bt:Image size="48" scale="2" resid="icon-48"/>
                    <bt:Image size="48" scale="3" resid="icon-48"/>
                  </Icon>
                  <Action xsi:type="ExecuteFunction">
                    <FunctionName>logCRMEvent</FunctionName>
                  </Action>
                </Control>
              </ExtensionPoint>
            </MobileFormFactor>
          </Host>
        </Hosts>
        <Resources>
          <bt:Images>
            <bt:Image id="icon-16" DefaultValue="https://contoso.com/assets/icon-16.png"/>
            <bt:Image id="icon-32" DefaultValue="https://contoso.com/assets/icon-32.png"/>
            <bt:Image id="icon-48" DefaultValue="https://contoso.com/assets/icon-48.png"/>
            <bt:Image id="icon-80" DefaultValue="https://contoso.com/assets/icon-80.png"/>
          </bt:Images>
          <bt:Urls>
            <bt:Url id="residFunctionFile" DefaultValue="https://contoso.com/commands.html"/>
          </bt:Urls>
          <bt:ShortStrings>
            <bt:String id="residDescription" DefaultValue="Log appointment notes and other details to Contoso CRM."/>
            <bt:String id="residLabel" DefaultValue="Log to Contoso CRM"/>
          </bt:ShortStrings>
          <bt:LongStrings>
            <bt:String id="residTooltip" DefaultValue="Log notes to Contoso CRM for this appointment."/>
          </bt:LongStrings>
        </Resources>
      </VersionOverrides>
    </VersionOverrides>
    

Tipp

Weitere Informationen zu Manifesten für Outlook-Add-Ins finden Sie unter Office-Add-In-Manifeste und Hinzufügen von Unterstützung für Add-In-Befehle in Outlook auf mobilen Geräten.

Erfassen von Terminnotizen

In diesem Abschnitt erfahren Sie, wie Ihr Add-In Termindetails extrahieren kann, wenn der Benutzer die Schaltfläche Protokoll auswählt .

  1. Öffnen Sie im selben Schnellstartprojekt die Datei ./src/commands/commands.js in Ihrem Code-Editor.

  2. Ersetzen Sie den gesamten Inhalt der commands.js-Datei durch den folgenden JavaScript-Code.

    var event;
    
    Office.initialize = function (reason) {
      // Add any initialization code here.
    };
    
    function logCRMEvent(appointmentEvent) {
      event = appointmentEvent;
      console.log(`Subject: ${Office.context.mailbox.item.subject}`);
      Office.context.mailbox.item.body.getAsync(
        "html",
        { asyncContext: "This is passed to the callback" },
        function callback(result) {
          if (result.status === Office.AsyncResultStatus.Succeeded) {
            event.completed({ allowEvent: true });
          } else {
            console.error("Failed to get body.");
            event.completed({ allowEvent: false });
          }
        }
      );
    }
    
    // Register the function.
    Office.actions.associate("logCRMEvent", logCRMEvent);
    

Aktualisieren Sie als Nächstes die commands.html-Datei , um auf commands.jszu verweisen.

  1. Öffnen Sie im selben Schnellstartprojekt die Datei ./src/commands/commands.html in Ihrem Code-Editor.

  2. Suchen und ersetzen Sie <script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js"></script> durch Folgendes:

    <script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js"></script>
    <script type="text/javascript" src="commands.js"></script>
    

Anzeigen von Terminnotizen

Die Schaltflächenbezeichnung Protokoll kann so umgeschaltet werden, dass Ansicht angezeigt wird, indem die benutzerdefinierte Eigenschaft EventLogged für diesen Zweck reserviert ist. Wenn der Benutzer die Schaltfläche Anzeigen auswählt, kann er seine protokollierten Notizen für diesen Termin anzeigen.

Ihr Add-In definiert die Protokollanzeige. Beispielsweise können Sie die protokollierten Terminnotizen in einem Dialogfeld anzeigen, wenn der Benutzer die Schaltfläche Ansicht auswählt. Ausführliche Informationen zur Verwendung von Dialogfeldern finden Sie unter Verwenden der Office-Dialog-API in Ihren Office-Add-Ins.

Fügen Sie die folgende Funktion zu ./src/commands/commands.jshinzu. Diese Funktion legt die benutzerdefinierte Eigenschaft EventLogged für das aktuelle Terminelement fest.

function updateCustomProperties() {
  Office.context.mailbox.item.loadCustomPropertiesAsync(
    function callback(customPropertiesResult) {
      if (customPropertiesResult.status === Office.AsyncResultStatus.Succeeded) {
        let customProperties = customPropertiesResult.value;
        customProperties.set("EventLogged", true);
        customProperties.saveAsync(
          function callback(setSaveAsyncResult) {
            if (setSaveAsyncResult.status === Office.AsyncResultStatus.Succeeded) {
              console.log("EventLogged custom property saved successfully.");
              event.completed({ allowEvent: true });
              event = undefined;
            }
          }
        );
      }
    }
  );
}

Rufen Sie ihn dann auf, nachdem das Add-In die Terminnotizen erfolgreich protokolliert hat. Sie können es z. B. aus logCRMEvent aufrufen, wie in der folgenden Funktion gezeigt.

function logCRMEvent(appointmentEvent) {
  event = appointmentEvent;
  console.log(`Subject: ${Office.context.mailbox.item.subject}`);
  Office.context.mailbox.item.body.getAsync(
    "html",
    { asyncContext: "This is passed to the callback" },
    function callback(result) {
      if (result.status === Office.AsyncResultStatus.Succeeded) {
        // Replace `event.completed({ allowEvent: true });` with the following statement.
        updateCustomProperties();
      } else {
        console.error("Failed to get body.");
        event.completed({ allowEvent: false });
      }
    }
  );
}

Löschen des Terminprotokolls

Wenn Sie es Ihren Benutzern ermöglichen möchten, die Protokollierung rückgängig zu machen oder die protokollierten Terminnotizen zu löschen, damit ein Ersatzprotokoll gespeichert werden kann, haben Sie zwei Möglichkeiten.

  1. Verwenden Sie Microsoft Graph, um das benutzerdefinierte Eigenschaftenobjekt zu löschen , wenn der Benutzer die entsprechende Schaltfläche im Menüband auswählt.

  2. Fügen Sie die folgende Funktion zu ./src/commands/commands.js hinzu, um die benutzerdefinierte Eigenschaft EventLogged für das aktuelle Terminelement zu löschen.

    function clearCustomProperties() {
      Office.context.mailbox.item.loadCustomPropertiesAsync(
        function callback(customPropertiesResult) {
          if (customPropertiesResult.status === Office.AsyncResultStatus.Succeeded) {
            var customProperties = customPropertiesResult.value;
            customProperties.remove("EventLogged");
            customProperties.saveAsync(
              function callback(removeSaveAsyncResult) {
                if (removeSaveAsyncResult.status === Office.AsyncResultStatus.Succeeded) {
                  console.log("Custom properties cleared");
                  event.completed({ allowEvent: true });
                  event = undefined;
                }
              }
            );
          }
        }
      );
    }
    

Rufen Sie sie dann auf, wenn Sie die benutzerdefinierte Eigenschaft löschen möchten. Sie können es z. B. aus logCRMEvent aufrufen, wenn das Festlegen des Protokolls in irgendeiner Weise fehlgeschlagen ist, wie in der folgenden Funktion gezeigt.

function logCRMEvent(appointmentEvent) {
  event = appointmentEvent;
  console.log(`Subject: ${Office.context.mailbox.item.subject}`);
  Office.context.mailbox.item.body.getAsync(
    "html",
    { asyncContext: "This is passed to the callback" },
    function callback(result) {
      if (result.status === Office.AsyncResultStatus.Succeeded) {
        updateCustomProperties();
      } else {
        console.error("Failed to get body.");
        // Replace `event.completed({ allowEvent: false });` with the following statement.
        clearCustomProperties();
      }
    }
  );
}

Testen und Überprüfen

  1. Befolgen Sie die üblichen Anleitungen, um Ihr Add-In zu testen und zu überprüfen.
  2. Nachdem Sie das Add-In in Outlook im Web, unter Windows (klassisch oder neu (Vorschau)) oder macos querladen haben, starten Sie Outlook auf Ihrem Android- oder iOS-Mobilgerät neu.
  3. Öffnen Sie einen Termin als Teilnehmer, und überprüfen Sie dann, ob unter dem Karte Besprechungserkenntnisse eine neue Karte mit dem Namen Ihres Add-Ins neben der Schaltfläche Protokoll vorhanden ist.

Benutzeroberfläche: Protokollieren der Terminnotizen

Als Besprechungsteilnehmer sollte beim Öffnen einer Besprechung ein Bildschirm ähnlich der folgenden Abbildung angezeigt werden.

Die Schaltfläche

Benutzeroberfläche: Anzeigen des Terminprotokolls

Nachdem die Terminnotizen erfolgreich protokolliert wurden, sollte die Schaltfläche jetzt mit Ansicht statt protokollieren beschriftet werden. Es sollte ein Bildschirm ähnlich der folgenden Abbildung angezeigt werden.

Die Schaltfläche

Verfügbare APIs

Für dieses Feature sind die folgenden APIs verfügbar.

Weitere Informationen zu APIs, die in Outlook auf mobilen Geräten unterstützt werden, finden Sie unter In Outlook auf mobilen Geräten unterstützte JavaScript-APIs.

Einschränkungen

Es gelten mehrere Einschränkungen.

  • Der Name der Schaltfläche Protokollieren kann nicht geändert werden. Es gibt jedoch eine Möglichkeit, eine andere Bezeichnung anzuzeigen, indem eine benutzerdefinierte Eigenschaft für das Terminelement festgelegt wird. Weitere Informationen finden Sie im Abschnitt Anzeigen von Terminnotizen für Funktionsbefehle oder Aufgabenbereich .
  • Die benutzerdefinierte Eigenschaft EventLogged muss verwendet werden, wenn Sie die Bezeichnung der Schaltfläche Protokoll auf Ansicht und zurück umschalten möchten.
  • Das Add-In-Symbol sollte in Graustufen mit Hexadezimalcode #919191 oder dessen Entsprechung in anderen Farbformaten vorliegen.
  • Das Add-In sollte die Besprechungsdetails innerhalb des Timeoutzeitraums von einer Minute aus dem Terminformular extrahieren. Allerdings ist jede Zeit, die das Add-In z. B. in einem Dialogfeld für die Authentifizierung geöffnet hat, vom Timeoutzeitraum ausgeschlossen.

Siehe auch