Freigeben über


In-App-Benachrichtigungen innerhalb modellbasierter Apps senden

Entwickler modellgesteuerter Apps können Benachrichtigungen so konfigurieren, dass sie App-Benutzern als Toast oder in der Mitteilungszentrale angezeigt werden. Ihre modellgesteuerte App fragt das System automatisch nach neuen Benachrichtigungen ab und zeigt diese dem Benutzer an. Der Absender der Benachrichtigung oder Ihr Systemadministrator kann konfigurieren, wie die Benachrichtigung angezeigt wird und wie sie verworfen werden kann. Benachrichtigungen werden in der Mitteilungszentrale angezeigt, bis der Empfänger sie verwirft oder sie ablaufen. Standardmäßig läuft eine Benachrichtigung nach 14 Tagen ab, aber Ihr Administrator kann diese Einstellung überschreiben.

Benachrichtigungen sind benutzerspezifisch. Jede Benachrichtigung ist für einen einzelnen Benutzer bestimmt, der beim Senden der Benachrichtigung als Empfänger identifiziert wird. Das Senden einer Benachrichtigung an ein Team wird nicht unterstützt. Wenn Sie Benachrichtigungen an mehrere Benutzer senden müssen, müssen Sie Benachrichtigungen für jeden einzelnen Benutzer erstellen.

In diesem Artikel werden die Schritte zum Senden von In-App-Benachrichtigungen an einen bestimmten Benutzer beschrieben. Weitere Informationen dazu, wie diese Benachrichtigungen in Anwendungen angezeigt werden, finden Sie unter In-App-Benachrichtigungen in modellgesteuerten Apps.

Funktion für In-App-Benachrichtigungen aktivieren

Um die In-App-Benachrichtigungsfunktion zu verwenden, müssen Sie die Einstellung In-App-Benachrichtigungen aktivieren. Diese Einstellung wird in der modellgesteuerten App gespeichert.

  1. Melden Sie sich bei Power Apps an.

  2. Öffnen Sie die Lösung, die die modellgesteuerte App enthält.

  3. Wählen Sie die modellgesteuerte App und dann das Split-Menü Bearbeiten aus, um den modernen App-Designer zu öffnen und zu verwenden.

  4. Öffnen Sie Einstellungen und wechseln Sie zu Features.

  5. Aktivieren Sie In-App-Benachrichtigungen.

    Benutzerdefinierte Seite als Hauptseite

  6. Wählen Sie zum Speichern der Einstellungsänderung die Option Speichern aus.

  7. Wählen Sie in der modellgesteuerten App Veröffentlichen aus.

Grundlegende In-App-Benachrichtigungen senden

Benachrichtigungen können über die SendAppNotification-Nachricht gesendet werden.

Unter SendAppNotification-Aktion erhalten Sie weitere Informationen zu der Nachricht und den Parametern.

Die SendAppNotification-Nachricht verfügt derzeit nicht über Anforderungs- und Antwortklassen im Dataverse SDK für .NET. Um stark typisierte Klassen für diese Nachricht zu erhalten, müssen Sie Klassen generieren oder die zugrunde liegenden OrganizationRequest- und OrganizationResponse-Klassen verwenden. Weitere Informationen: Nachrichten mit dem SDK für .NET verwenden.

Bei der SendAppNotification-Nachricht werden offene Typen verwendet und es werden so dynamische Eigenschaften für die In-App-Benachrichtigung ermöglicht. Beispielsweise kann eine Benachrichtigung null bis viele Aktionen und jede Aktion kann unterschiedliche Aktionstypen haben. Offene Typen ermöglichen dynamische Eigenschaften für die Aktionen abhängig von den ausgewählten Aktionstypen. Weitere Informationen: Verwenden von offenen Typen mit Custom-APIs

Die folgenden grundlegenden Beispiele zeigen, wie Sie die API zum Senden von In-App-Benachrichtigungen verwenden.

Screenshot einer Willkommensbenachrichtigung.

In diesem Beispiel wird die benutzerdefinierte Example.SendAppNotificationRequest-Funktion verwendet, die unten im Abschnitt Erstellen einer Funktion für Ihr Client-Skript beschrieben wird.

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(
    title = "Welcome",
    recipient = "/systemusers(<GUID of the user>)",
    body = "Welcome to the world of app notifications!",
    priority = 200000000,
    iconType = 100000000,
    toastType = 200000000,
);

Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
});

Benachrichtigungsabruf

In-App-Benachrichtigungen verwenden Abfragen, um regelmäßig Benachrichtigungen abzurufen, wenn die App ausgeführt wird. Neue Benachrichtigungen werden beim Start der modellgesteuerten App und bei einer Seitennavigation abgerufen, wenn der letzte Abruf länger als eine Minute zurückliegt. Bleibt ein Benutzer längere Zeit auf einer Seite, werden keine neuen Benachrichtigungen abgerufen, bis der Benutzer auf eine andere Seite geht.

Benachrichtigungstabelle

Mit der SendAppNotification-Nachricht gesendete Benachrichtigungen werden in der Benachrichtigungstabelle (appnotification) (Web-API appnotification) gespeichert. Dies sind die ausgewählten Spalten für die Tabelle.

Anzeigenname SchemaName Beschreibung
Titel Title Der Titel der Benachrichtigung.
Bes. OwnerId Der Benutzer, der die Benachrichtigung erhält. Während diese Spalte entweder auf einen Benutzer oder ein Team festgelegt werden kann, dürfen Sie sie nur auf einen Benutzer festlegen. Die Benachrichtigung kann nicht auf ein Team festgelegt werden.
Text Body Details zur Benachrichtigung.
Symboltyp IconType Die Liste der vordefinierten Symbole. Der Standardwert ist Info. Weitere Informationen finden Sie später in diesem Artikel unter Ändern des Benachrichtigungssymbols.
Popuptyp ToastType Die Liste der Benachrichtigungsverhaltensweisen. Der Standardwert ist Timed. Weitere Informationen finden Sie später in diesem Artikel unter Ändern des Benachrichtigungsverhaltens.
Priorität Priority Ermöglicht die Priorisierung von Benachrichtigungen, wodurch die Reihenfolge bestimmt wird, in der die Benachrichtigungen in der Mitteilungszentrale angezeigt werden. Weitere Informationen finden Sie später in diesem Artikel unter Ändern des Benachrichtigungsverhaltens.
Ablauf (Sekunden) TTLInSeconds Die Anzahl der Sekunden, ab wann die Benachrichtigung gelöscht werden soll, wenn sie nicht bereits verworfen wurde.
Daten Data JSON-Datei, die für die Erweiterbarkeit und das Parsen umfangreicherer Daten in die Benachrichtigung verwendet wird. Die maximale Länge beträgt 5,000 Zeichen.

Hinweis

Das appmoduleid-Feld wird in der Tabelle nicht verwendet.

Anpassen der Benachrichtigung

Zusätzlich zu den grundlegenden Eigenschaften der Benachrichtigung haben Sie Optionen zum Anpassen der an den Benutzer gesendeten Benachrichtigung. Das Anpassen der Benachrichtigung umfasst das Ändern der Stile in Title und Body der Benachrichtigung, Anpassen des Benachrichtigungssymbols und Ändern des Verhaltens der Benachrichtigung.

Verwenden von Markdown in Titel und Text

Die Title- und Body-Parameter der SendAppNotification-Nachricht unterstützen keinen in den Eigenschaften definierten Markdown. Sie können die Stile dieser Eigenschaften mithilfe von Markdown in der OverrideContent-Eigenschaft anpassen. Dieses Feld unterstützt das Überschreiben der einfachen Strings Title und Body mit einer begrenzten Teilmenge von Markdown-Stilen.

Folgende Markdown wird unterstützt.

Textstil Markdown
Fett **Bold**
Kursiv _Italic_
Aufzählungsliste - Item 1\r- Item 2\r- Item 3
Nummerierte Liste 1. Green\r2. Orange\r3. Blue
Hyperlinks [Title](url)

Zeilenumbrüche können mit \n\n\n\n in den Text einzufügen.

In diesem Beispiel wird gezeigt, wie Sie eine Benachrichtigung erstellen, indem Sie eine benutzerdefinierte Textdefinition hinzufügen, die einen Inline-Link enthält.

Benachrichtigung mit einem Textblock, der einen Inline-Link enthält.

In diesem Beispiel wird die benutzerdefinierte Example.SendAppNotificationRequest-Funktion verwendet, die unten im Abschnitt Erstellen einer Funktion für Ihr Client-Skript beschrieben wird.

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(title = "SLA critical",
    recipient = "/systemusers(<GUID of the user>)",
    body = "Record assigned to you is critically past SLA.",
    iconType = 100000003,
    toastType = 200000000,
    overrideContent = {
        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
        "title": "**SLA critical**",
        "body": "Case record [Complete overhaul required (sample)](?pagetype=entityrecord&etn=incident&id=0a9f62a8-90df-e311-9565-a45d36fc5fe8) assigned is critically past SLA and has been escalated to your manager."

    }
);

Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
});

In diesem Beispiel wird ein benutzerdefinierter Titel und eine Textdefinition hinzugefügt, die mehrere Links sowie Fett- und Kursivformatierung ermöglicht.

Benachrichtigung mit einem benutzerdefinierten Titel, mehreren Links sowie fett formatiertem Text und Kursivformatierung.

In diesem Beispiel wird die benutzerdefinierte Example.SendAppNotificationRequest-Funktion verwendet, die unten im Abschnitt Erstellen einer Funktion für Ihr Client-Skript beschrieben wird.

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(title = "Complete overhaul required (sample)",
    recipient = "/systemusers(<GUID of the user>)",
    body = "Maria Campbell mentioned you in a post.",
    priority = 200000000,
    iconType = 100000004,
    toastType = 200000000,
    expiry = 120000,
    overrideContent = {
        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
        "title": "[Complete overhaul required (sample)](?pagetype=entityrecord&etn=incident&id=0a9f62a8-90df-e311-9565-a45d36fc5fe8)",
        "body": "[Maria Campbell](?pagetype=entityrecord&etn=contact&id=43m770h2-6567-ebm1-ob2b-000d3ac3kd6c) mentioned you in a post: _\"**[@Paul](?pagetype=entityrecord&etn=contact&id=03f770b2-6567-eb11-bb2b-000d3ac2be4d)** we need to prioritize this overdue case, [@Robert](?pagetype=entityrecord&etn=contact&id=73f970b2-6567-eb11-bb2b-000d3ac2se4h) will work with you to engage with engineering team ASAP.\"_"
    }
);

// Use the request object to execute the function
Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        // Use response.json() to access the content of the response body.
        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
    // handle error conditions
});

Hinweis

OverrideContent wird nicht in Power Fx mit der xSendAppNotification-Funktion unterstützt.

Ändern des Benachrichtigungsverhaltens

Sie können das In-App-Benachrichtigungsverhalten ändern, indem Sie ToastType auf einen der folgenden Werte festlegen.

Popuptyp Behavior Wert
Zeitlich Die Benachrichtigung wird für kurze Zeit angezeigt (der Standardwert beträgt vier Sekunden) und verschwindet dann. 200000000
Ausgeblendet Die Benachrichtigung erscheint nur in der Mitteilungszentrale und nicht als Popupbenachrichtigung. 200000001

Ändern des Benachrichtigungssymbols

Sie können das In-App-Benachrichtigungssymbol ändern, indem Sie IconType auf einen der folgenden Werte festlegen. Wenn Sie ein benutzerdefiniertes Symbol verwenden, geben Sie den iconUrl-Parameter innerhalb des OverrideContent-Parameters an.

Symboltyp Wert Image
Info 100000000 Infosymbol
Erfolg 100000001 Symbol „Erfolg“
Fehler 100000002 Fehlersymbol
Warnung 100000003 Warnsymbol
Erwähnen Sie 100000004 Nennungssymbol
Benutzerdefiniert 100000005

Das folgende Beispiel zeigt die Verwendung der Web-API zum Senden einer Benachrichtigung mit einem benutzerdefinierten Symbol.

POST [Organization URI]/api/data/v9.2/SendAppNotification 
HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{
  "Title": "Welcome",
  "Body": "Welcome to the world of app notifications!",
  "Recipient": "/systemusers(<Guid of the user>)",
  "IconType": 100000005, // custom
  "OverrideContent": {
    "@odata.type": "#Microsoft.Dynamics.CRM.expando",
    "iconUrl": "/WebResources/cr245_AlertOn" //URL of the image file to be used for the notification icon
  }
}

Festlegen der Priorität der Benachrichtigung

Sie können die Reihenfolge ändern, in der Benachrichtigungen in der Mitteilungszentrale angezeigt werden, indem Sie die Priority festlegen. Im Folgenden sehen Sie die optionalen Werte:

Priorität Wert
Normal 200000000
Hoch 200000001

Der Standardwert ist Normal. Benachrichtigungen werden im Benachrichtigungscenter nach Priorität und Erstellt am-Datum in absteigender Reihenfolge sortiert. Benachrichtigungen mit hoher Priorität werden oben in der Liste in der Mitteilungszentrale angezeigt.

Benachrichtigungsaktionen

In-App-Benachrichtigungen unterstützen null bis viele Aktionen auf der Benachrichtigungskarte. Es gibt drei Arten von unterstützten Aktionstypen:

  • URL: Wenn die Aktion ausgewählt ist, navigiert der Webbrowser zur festgelegten URL.
  • Seitenbereich: Wenn die Aktion ausgewählt ist, wird in der App ein Seitenbereich geöffnet und der definierte Kontext wird in den Bereich geladen.
  • Teams-Chat: Wenn die Aktion ausgewählt ist, wird ein Teams-Chat mit definierten Benutzern im Kontext eines Dynamics 365-Datensatzes initiiert.

Definieren einer URL-Aktion

Der URL-Aktionstyp ermöglicht die Navigation von der Aktion in der App-Benachrichtigung zu einer festgelegten URL. Im Folgenden sehen Sie die Parameter für diesen Aktionstyp:

Parameter Erforderlich Datentyp Beschreibung
url Ja String Die URL der Webadresse, die geöffnet wird, wenn die Aktion ausgewählt ist.
navigationTarget Nein String Mit diesem Parameter können Sie festlegen, wo ein Navigationslink geöffnet wird. Folgende Optionen sind verfügbar:
  • dialog: Wird im Dialog für die Zentrale geöffnet.
  • inline: Standard. Öffnet sich in der aktuellen Seite.
  • newWindow: Wird in einer neuen Browserregisterkarte geöffnet.

Das folgende Beispiel zeigt, wie Sie eine Benachrichtigung mit einer einzelnen URL-Aktion erstellen.

App-Benachrichtigung mit einer einzigen Aktion.

In diesem Beispiel wird die benutzerdefinierte Example.SendAppNotificationRequest-Funktion verwendet, die unten im Abschnitt Erstellen einer Funktion für Ihr Client-Skript beschrieben wird.

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(title = "Congratulations",
    recipient = "/systemusers(<GUID of the user>)",
    body = "Your customer rating is now an A. You resolved 80% of your cases within SLA thi week and average customer rating was A+",
    iconType = 100000001,
    toastType = 200000000,
    overrideContent = {
        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
        "title": "**SLA critical**",
        "body": "Case record [Complete overhaul required (sample)](?pagetype=entityrecord&etn=incident&id=0a9f62a8-90df-e311-9565-a45d36fc5fe8) assigned is critically past SLA and has been escalated to your manager."

    },
    actions = {
        "@odata.type": "Microsoft.Dynamics.CRM.expando",
        "actions@odata.type": "#Collection(Microsoft.Dynamics.CRM.expando)",
        "actions": [
            {
                "title": "View cases",
                "data": {
                    "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                    "type": "url",
                    "url": "?pagetype=entitylist&etn=incident&viewid=00000000-0000-0000-00aa-000010001028&viewType=1039",
                    "navigationTarget": "newWindow"
                }
            }
        ]
    }
);

Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
});

Festlegen einer Seitenbereichsaktion

Eine Seitenbereichsaktion ermöglicht das Öffnen eines Seitenbereichs zum Laden einer definierten Seite, wenn die Aktion in der App-Benachrichtigung ausgewählt wird. Weitere Informationen: Erstellen von Seitenbereichen mithilfe einer Client-API.

Wenn Sie den Seitenbereich-Aktionstyp verwenden, haben Sie die Kontrolle über die Optionen des Seitenbereichs selbst und der Seite, die im Seitenbereich geladen wird.

  • Unter createPane erhalten Sie weitere Informationen über die optionalen Parameter für den Bereich, der erstellt wird.
  • Unter navigateTo (Client-API-Referenz) erhalten Sie weitere Informationen über die Parameter, die für die Seite festgelegt werden sollen, die im Seitenbereich geladen wird.

Das folgende Beispiel zeigt das Erstellen einer App-Benachrichtigung mit zwei Seitenbereichsaktionen.

In diesem Beispiel wird die benutzerdefinierte Example.SendAppNotificationRequest-Funktion verwendet, die unten im Abschnitt Erstellen einer Funktion für Ihr Client-Skript beschrieben wird.

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(title = "New task",
    recipient = "/systemusers(<GUID of the user>)",
    body = "A new task has been assigned to you to follow up on the Contoso account",
    iconType = 100000000,
    toastType = 200000000,
    actions = {
        "@odata.type": "Microsoft.Dynamics.CRM.expando",
        "actions@odata.type": "#Collection(Microsoft.Dynamics.CRM.expando)",
        "actions": [
            {
                "title": "View task",
                "data": {
                    "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                    "type": "sidepane",
                    "paneOptions": {
                        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                        "title": "Task Record",
                        "width": 400
                    },
                    "navigationTarget": {
                        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                        "pageType": "entityrecord",
                        "entityName": "task",
                        "entityId": "<Task ID>"
                    }
                }
            }
        ]
    }
);

Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
});

Festlegen einer Teams-Chat-Aktion

Eine Teams-Chat-Aktion ermöglicht Szenarios, in denen ein Teams-Chat über die App-Benachrichtigung initiiert wird. Bei dieser Aktion wird die eingebettete Teams-Funktion für Dynamics 365-Apps verwendet, die es Verkäufern und Agenten ermöglicht, in Microsoft Teams innerhalb der Kundenbindungsapps wie Vertriebshub, Kundenservicehub und benutzerdefinierten Apps zu chatten.

Hinweis

Der Microsoft Teams-Chat in Dynamics 365 muss aktiviert sein, um den Teams-Chat-Aktionstyp verwenden zu können. Weitere Informationen finden Sie unter Arbeiten mit dem Microsoft Teams-Chat in Dynamics 365.

Der Aktionstyp bietet folgende Optionen:

  • Erstellen Sie eine neue Chatsitzung oder öffnen Sie eine bestehende.
  • Verknüpfen Sie die Chatsitzung mit einem Dynamics 365-Datensatz oder erstellen Sie einen nicht verknüpften Chat.

Im Folgenden sind die Parameter zum Definieren einer Teams-Chat-Aktion für die App-Benachrichtigung aufgeführt.

Parameter Datentyp Beschreibung
chatId String Definieren Sie einen Wert für die Chat-ID, um einen vorhandenen Chat zu öffnen. Dies ist die ID der Teams-Chatsitzung, die aus der Eigenschaft ID der Entität Chat in Microsoft Graph abgerufen werden kann. Weitere Informationen: Chat abrufen. Für Teams-Chatsitzungen, die mit Dynamics 365-Datensätzen verknüpft wurden, wird die Zuordnung in der Tabelle Microsoft Teams-Chat-Zuordnungsentität (msdyn_teamschatassociation) in Dataverse gespeichert. Die ID für die Chatsitzung wird in der Eigenschaft Teams-Chat-ID dieser Tabelle gespeichert.

Lassen Sie diesen Parameter leer, um eine neue Chatsitzung zu starten.
memberIds GUID[] Ein Array von Microsoft Entra ID-Benutzer-ID-Werten aller Teilnehmenden, die in eine neue Chatsitzung einbezogen werden sollen. Mitglieder-ID-Werte sollten nicht festgelegt werden, wenn ein Wert für den Parameter chatId definiert wurde. Wenn chatId festgelegt wurde, wird der vorhandene Chat geöffnet und die Mitglieder des vorhandenen Chats werden beim Öffnen in den Chat einbezogen.
entityContext Expando Der Entitätskontext stellt den Dynamics 365-Datensatz bereit, mit dem die Chatsitzung verknüpft werden soll. Wenn sich die Chatsitzung beispielsweise auf einen bestimmten Kundenkontodatensatz bezieht, definieren Sie den Kontodatensatz in diesem Parameter, damit die Chatsitzung mit dem Konto verknüpft und in der Zeitskala des Kontos angezeigt wird.

Der Entitätskontext umfasst die Parameter entityName und recordId, die definiert werden müssen, um den Datensatz für den Entitätskontext zu ermitteln.

Ein Entitätskontext sollte nicht festgelegt werden, wenn ein Wert für den Parameter chatId definiert wurde. Wenn die chatId definiert wurde, wird der vorhandene Chat geöffnet und entityContext, ob verknüpft oder nicht, wurde dann bereits für den bestehenden Chat definiert. Wenn durch die Aktion eine neue Chatsitzung erstellt wird (d. h. der Parameter chatId wurde nicht bereitgestellt) und der Entitätskontext nicht definiert ist, dann wird die neue Chatsitzung nicht mit einem Dynamics 365-Datensatz verknüpft.
entityName String Teil des Entitätskontexts, der logische Name der Dataverse-Tabelle für den Datensatz, mit dem der Chat verbunden ist.
recordId GUID Teil des Entitätskontexts. Die ist die ID-Eigenschaft der Tabelle, die im Parameter entityName für den Datensatz definiert ist, mit dem der Chat verknüpft wird.
chatTitle String Der Titel des Teams-Chats.
initialMessage String Optional können Sie den Text einer Einführungsnachricht angeben, die beim Erstellen des Chats automatisch gesendet wird.

Das folgende Beispiel zeigt das Erstellen einer App-Benachrichtigung mithilfe einer einzigen Teams-Chataktion. Wenn die Aktion in der Toast-Benachrichtigung ausgewählt wird, wird der Chat mit den definierten Teilnehmern initiiert. Der Chat ist mit einem definierten Kontodatensatz verknüpft.

In diesem Beispiel wird die benutzerdefinierte Example.SendAppNotificationRequest-Funktion verwendet, die unten im Abschnitt Erstellen einer Funktion für Ihr Client-Skript beschrieben wird.

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(title = "New order posted",
    recipient = "/systemusers(<GUID of the user>)",
    body = "A new sales order has been posted for Contoso",
    iconType = 100000000,
    toastType = 200000000,
    actions = {
        "@odata.type": "Microsoft.Dynamics.CRM.expando",
        "actions@odata.type": "#Collection(Microsoft.Dynamics.CRM.expando)",
        "actions": [
            {
                "title": "Chat with sales rep",
                "data": {
                    "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                    "type": "teamsChat",
                    "memberIds@odata.type": "#Collection(String)",
                    "memberIds": ["<Microsoft Entra ID User ID 1>", "<Microsoft Entra ID User ID 2>"],
                    "entityContext": {
                        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                        "entityName": "account",
                        "recordId": "<Account ID value>"
                    }
                }
            }
        ]
    }
);

Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
});

Erstellen einer Funktion für Ihr Client-Skript

Die Client-API-Beispiele in diesem Thema enthalten Beispiele für Client-Skripting zum Senden von In-App-Benachrichtigungen. Bei den Beispielen wird eine SendAppNotificationRequest-Funktion aufgerufen. Um die Beispiele zu vervollständigen, müssen Sie die wiederverwendbare Funktion in Ihrer Umgebung erstellen. Unten finden Sie ein Beispiel der Funktion.

var Example = window.Example || {};
Example.SendAppNotificationRequest = function (
   title, 
   recipient, 
   body, 
   priority, 
   iconType, 
   toastType, 
   expiry, 
   overrideContent, 
   actions) 
{
    this.Title = title;
    this.Recipient = recipient;
    this.Body = body;
    this.Priority = priority;
    this.IconType = iconType;
    this.ToastType = toastType;
    this.Expiry = expiry;
    this.OverrideContent = overrideContent;
    this.Actions = actions;
};

Example.SendAppNotificationRequest.prototype.getMetadata = function () {
    return {
        boundParameter: null,
        parameterTypes: {
            "Title": {
                "typeName": "Edm.String",
                "structuralProperty": 1
            },
            "Recipient": {
                "typeName": "mscrm.systemuser",
                "structuralProperty": 5
            },
            "Body": {
                "typeName": "Edm.String",
                "structuralProperty": 1
            },
            "Priority": {
                "typeName": "Edm.Int",
                "structuralProperty": 1
            },
            "IconType": {
                "typeName": "Edm.Int",
                "structuralProperty": 1
            },
            "ToastType": {
                "typeName": "Edm.Int",
                "structuralProperty": 1
            },
            "Expiry": {
                "typeName": "Edm.Int",
                "structuralProperty": 1
            },
            "OverrideContent": {
                "typeName": "mscrm.expando",
                "structuralProperty": 5
            },
            "Actions": {
                "typeName": "mscrm.expando",
                "structuralProperty": 5
            },
        },
        operationType: 0, 
        operationName: "SendAppNotification",
    };
};

Weitere Beispiele für das Client-Skripting mithilfe der Client-API finden Sie unter Exemplarische Vorgehensweise: Schreiben Ihres ersten Client-Skripts.

Sicherheit für Benachrichtigungen verwalten

Bei der Funktion für In-App-Benachrichtigungen werden drei Tabellen verwendet. Ein Benutzer muss über die richtigen Sicherheitsrollen verfügen, um Benachrichtigungen zu empfangen und Benachrichtigungen an sich selbst oder andere Benutzer zu senden.

Zusätzlich zu den entsprechenden Tabellenberechtigungen muss einem Benutzer die Berechtigung In-App-Benachrichtigung senden (prvSendAppNotification) zugewiesen werden, um die SendAppNotification-Nachricht auszuführen. Die Berechtigung wird standardmäßig der Rolle Umgebungsersteller gewährt. Diese Berechtigung ist zum Senden von In-App-Benachrichtigungen erforderlich. Sie ist nicht erforderlich, um Benachrichtigungen zu erhalten.

Verbrauch Erforderliche Tabellenrechte
Der Benutzer hat keine In-App-Benachrichtigungsglocke und erhält keine In-App-Benachrichtigung Keine: Leserecht für die App-Benachrichtigungstabelle.
Der Benutzer kann In-App-Benachrichtigungen erhalten.
  • Einfach: Leserecht für die App-Benachrichtigungstabelle.
  • Die Rechte „Erstellen“, „Lesen“, „Schreiben“ und „Anhängen“ für die Benutzereinstellung bei modellgesteuerten Apps.
  • Rechte „Lesen“ und „AppendTo“ für die Einstellungsdefinition.
Der Benutzer kann In-App-Benachrichtigungen an sich selbst senden. Grundlegend: Berechtigungen zum Erstellen und Lesen für die App-Benachrichtigungstabelle sowie zum Senden von In-App-Benachrichtigungen.
Der Benutzer kann In-App-Benachrichtigungen an andere senden. Berechtigung „Lesen“ mit der Zugriffsebene „Lokal“, „Tief“ oder „Global“ in der App-Benachrichtigungstabelle basierend auf der Unternehmenseinheit des empfangenden Benutzers sowie die Berechtigung zum Senden von In-App-Benachrichtigungen.
Der Benutzende kann In-App-Benachrichtigungen löschen Global: „Löschen“-Rechte für die App-Benachrichtigungstabelle.

Benachrichtigungsspeicher

Da die Benachrichtigungstabelle der App die Datenbankspeicherkapazität der Organisation verwendet, ist es wichtig, die Menge der gesendeten Benachrichtigungen und die Ablaufeinstellung zu berücksichtigen. Weitere Informationen: Microsoft Dataverse-Speicherkapazität

In-App-Benachrichtigungen vs. Pushbenachrichtigungen

Der Power Apps-Benachrichtigungs-Konnektor ist für Pushbenachrichtigungen gedacht, die von In-App-Benachrichtigungen getrennt sind. Pushbenachrichtigungen werden nur in der Benachrichtigungsliste des Mobilgeräts angezeigt, um die App zu öffnen. In-App-Benachrichtigungen werden angezeigt, wenn die App geöffnet ist. Wir empfehlen, die Verwendung von Pushbenachrichtigungen auf Elemente mit hoher Priorität zu beschränken, um den Benutzer nicht zu überfordern. Hier erhalten Sie weitere Informationen:

SendAppNotification-Aktion
Erstellen einer Tabellenzeile über die Web-API
createRecord (Client-API-Referenz)
In-App-Benachrichtigungen in modellgesteuerten Apps
appnotification-Entitätstyp
Benachrichtigungs-(appnotification-)Tabelle/-Entitätsreferenz