Freigeben über


Meldungen in Bot-Unterhaltungen

Jede Nachricht in einer Unterhaltung ist ein Activity Objekt vom Typ messageType: message. Wenn ein Benutzer eine Nachricht sendet, sendet Microsoft Teams die Nachrichtenaktivität an Ihren Bot. Teams sendet ein JSON-Objekt an den Messagingendpunkt Ihres Bots, und Teams lässt nur einen Endpunkt für Messaging zu. Ihr Bot untersucht die Nachricht, um ihren Typ zu bestimmen und entsprechend zu reagieren.

Grundlegende Unterhaltungen werden über den Bot Framework-Connector, eine einzelne REST-API, verarbeitet. Diese API ermöglicht Es Ihrem Bot, mit Teams und anderen Kanälen zu kommunizieren. Das Bot Builder SDK bietet die folgenden Features:

  • Einfacher Zugriff auf den Bot Framework-Connector.
  • Funktionalität zum Verwalten des Konversationsflusses und -zustands.
  • Einfache Möglichkeiten zum Integrieren von Cognitive Services, z. B. verarbeitung natürlicher Sprache (Natural Language Processing, NLP).

Ihr Bot empfängt Nachrichten von Teams mithilfe der Text -Eigenschaft und sendet einzelne oder mehrere Nachrichtenantworten an die Benutzer.

Weitere Informationen finden Sie unter Benutzerzuordnung für Botnachrichten.

In der folgenden Tabelle sind die Aktivitäten aufgeführt, die Ihr Bot empfangen und maßnahmen ergreifen kann:

Typ Nutzdatenobjekt Bereich
Empfangen einer Nachrichtenaktivität Nachrichtenaktivität Alle
Aktivität "Nachricht bearbeiten empfangen" Aktivität zum Bearbeiten von Nachrichten Alle
Aktivität "Empfangen von Nachrichten wiederherstellen" Nachrichtenlöschungsaktivität Alle
Aktivität zum vorläufigen Löschen von Nachrichten empfangen Aktivität für vorläufiges Löschen von Nachrichten Alle

Empfangen einer Nachrichtenaktivität

Verwenden Sie die Text -Eigenschaft eines Activity -Objekts, um eine SMS zu empfangen. Verwenden Sie im Aktivitäts-Handler des Bots die Activity des Turn-Kontextobjekts, um eine einzelne Nachrichtenanforderung zu lesen.

Der folgende Code zeigt ein Beispiel für den Empfang einer Nachrichtenaktivität:


protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
  // Sends an activity to the sender of the incoming activity.
  await turnContext.SendActivityAsync(MessageFactory.Text($"Echo: {turnContext.Activity.Text}"), cancellationToken);
}

Empfangen einer Lesebestätigung

Mit der Einstellung Lesebestätigungen in Teams kann der Absender einer Chatnachricht benachrichtigt werden, wenn seine Nachricht vom Empfänger in Einzel- und Gruppenchats gelesen wurde. Nachdem der Empfänger die Nachricht gelesen hat, wird neben der Nachricht das Angezeigte angezeigt. Sie haben auch die Möglichkeit, Ihren Bot für den Empfang von Lesebestätigungsereignissen über die Einstellung Lesebestätigungen zu konfigurieren. Das Lesebestätigungsereignis hilft Ihnen, die Benutzererfahrung auf folgende Weise zu verbessern:

  • Sie können Ihren Bot so konfigurieren, dass er eine Folgenachricht sendet, wenn Ihr App-Benutzer die Nachricht im persönlichen Chat nicht gelesen hat.

  • Sie können eine Feedbackschleife mithilfe von Lesebestätigungen erstellen, um die Benutzererfahrung Ihres Bots zu optimieren.

Hinweis

  • Lesebestätigungen werden nur in Benutzer-zu-Bot-Chatszenarien unterstützt.
  • Lesebestätigungen für Bots unterstützen keine Team-, Kanal- und Gruppenchatbereiche.
  • Wenn ein Mandantenadministrator oder Benutzer die Einstellung Lesebestätigungen deaktiviert, empfängt der Bot das Lesebestätigungsereignis nicht.

Stellen Sie Folgendes sicher, um Lesebestätigungsereignisse für Ihren Bot zu empfangen:

    
"webApplicationInfo": {
    
     "id": "38f0ca43-1c38-4c39-8097e-47f62c686500",
     "resource": ""
},
"authorization": {
    "permissions": {
    "orgwide": [],
     "resourceSpecific": [
        {
        "name": "ChatMessageReadReceipt.Read.Chat",
        "type": "Application"
        }
        ]
     }
 }
    

Sie können RSC-Berechtigungen auch über Graph-API hinzufügen. Weitere Informationen finden Sie unter consentedPermissionSet.

  • Überschreiben Sie die -Methode OnTeamsReadReceiptAsync mit IsMessageRead dem Handler.

    Die IsMessageRead Hilfsmethode ist nützlich, um zu bestimmen, ob die Nachricht von den Empfängern gelesen wird. Wenn kleiner compareMessageId oder gleich LastReadMessageIdist, wurde die Nachricht gelesen. Überschreiben Sie die OnTeamsReadReceiptAsync -Methode, um Lesebestätigungen mit IsMessageRead der Hilfsmethode zu empfangen:

    
    protected override async Task OnTeamsReadReceiptAsync(ReadReceiptInfo readReceiptInfo, ITurnContext<IEventActivity> turnContext, CancellationToken cancellationToken) 
    {
        var lastReadMessageId = readReceiptInfo.LastReadMessageId;
       if (IsMessageRead("{id of the message that you care}", LastReadMessageId))
       {
            await turnContext.SendActivityAsync(MessageFactory.Text("User read the bot's message"), cancellationToken);    
        }
    }
    

    Im Folgenden finden Sie ein Beispiel für eine Ereignisanforderung für Lesebestätigungen, die ein Bot empfängt:

    {
        "name": "application/vnd.microsoft.readReceipt",
        "type": "event",
        "timestamp": "2023-08-16T17:23:11.1366686Z",
        "id": "f:b4783e72-9d7b-2ed9-ccef-ab446c873007",
        "channelId": "msteams",
        "serviceUrl": "https://smba.trafficmanager.net/amer/",
        "from": {
            "id": "29:1-8Iuh70W9pRqV8tQK8o2nVjxz33RRGDKLf4Bh7gKnrzN8s7e4vCyrFwjkPbTCX_Co8c4aXwWvq3RBLr-WkkVMw",
            "aadObjectId": "5b649834-7412-4cce-9e69-176e95a394f5"
        },
        "conversation": {
            "conversationType": "personal",
            "tenantId": "6babcaad-604b-40ac-a9d7-9fd97c0b779f",
            "id": "a:1xlimp68NSUxEqK0ap2rXuwC9ITauHgV2M4RaDPkeRhV8qMaFn-RyilMZ62YiVdqs8pp43yQaRKvv_U2S2gOS5nM-y_pOxVe4BW1qMGPtqD0Bv3pw-nJXF0zhDlZHMZ1Z"
        },
        "recipient": {
            "id": "28:9901a8b6-4fef-428b-80b1-ddb59361adeb",
            "name": "Test Bot"
        },
        "channelData": {
            "tenant": {
                "id": "6babcaad-604b-40ac-a9d7-9fd97c0b779f"
            }
        },
        "value": {
            "lastReadMessageId": "1692206589131"
        }
    }
    
    
  • Die Administratoreinstellung für Lesebestätigungen oder die Benutzereinstellung ist für den Mandanten aktiviert, damit der Bot die Lesebestätigungsereignisse empfängt. Der Mandantenadministrator oder der Benutzer muss die Einstellung für Lesebestätigungen aktivieren oder deaktivieren.

Nachdem der Bot in einem Benutzer-zu-Bot-Chatszenario aktiviert wurde, empfängt der Bot sofort ein Lesebestätigungsereignis, wenn der Benutzer die Nachricht des Bots liest. Sie können die Benutzerbindung nachverfolgen, indem Sie die Anzahl der Ereignisse zählen, und Sie können auch eine kontextbezogene Nachricht senden.

Senden einer Nachricht

Um eine SMS zu senden, geben Sie die Zeichenfolge an, die Sie als Aktivität senden möchten. Verwenden Sie im Aktivitätshandler des Bots die Methode des Turn-Kontextobjekts SendActivityAsync , um eine einzelne Nachrichtenantwort zu senden. Verwenden Sie die -Methode des SendActivitiesAsync -Objekts, um mehrere Antworten zu senden.

Der folgende Code zeigt ein Beispiel für das Senden einer Nachricht, wenn ein Benutzer zu einer Unterhaltung hinzugefügt wird:


protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
  // Sends an activity to the sender of the incoming activity.
  await turnContext.SendActivityAsync(MessageFactory.Text($"Hello and welcome!"), cancellationToken);
}

Hinweis

  • Die Nachrichtenaufteilung erfolgt, wenn eine SMS und eine Anlage in derselben Aktivitätsnutzlast gesendet werden. Teams teilt diese Aktivität in zwei separate Aktivitäten auf, eine mit einer SMS und die andere mit einer Anlage. Da die Aktivität aufgeteilt wird, erhalten Sie nicht die Nachrichten-ID als Antwort, die verwendet wird, um die Nachricht proaktiv zu aktualisieren oder zu löschen . Es wird empfohlen, separate Aktivitäten zu senden, anstatt von der Nachrichtenaufteilung abhängig zu sein.
  • Gesendete Nachrichten können lokalisiert werden, um eine Personalisierung bereitzustellen. Weitere Informationen finden Sie unter Lokalisieren Ihrer App.

Nachrichten, die zwischen Benutzern und Bots gesendet werden, enthalten interne Kanaldaten in der Nachricht. Diese Daten ermöglichen es dem Bot, auf diesem Kanal ordnungsgemäß zu kommunizieren. Mit dem Bot Builder SDK können Sie die Nachrichtenstruktur ändern.

Aktivität zum Bearbeiten von Nachrichten abrufen

Wenn Sie eine Nachricht bearbeiten, erhält der Bot eine Benachrichtigung über die Nachrichtenbearbeitungsaktivität.

Um eine Benachrichtigung zur Nachrichtenaktivität in einem Bot zu erhalten, können Sie den Handler überschreiben OnTeamsMessageEditAsync .

Es folgt ein Beispiel für eine Benachrichtigung zur Nachrichtenaktivität bearbeiten mit OnTeamsMessageEditAsync , wenn eine gesendete Nachricht bearbeitet wird:


protected override async Task OnTeamsMessageEditAsync(ITurnContext<IMessageUpdateActivity> turnContext, CancellationToken cancellationToken) 
{ 
var replyActivity = MessageFactory.Text("message is updated"); 
await turnContext.SendActivityAsync(replyActivity, cancellationToken); 
} 

Abrufen der Nachrichtenaktivität

Wenn Sie eine Nachricht wiederherstellen, erhält der Bot eine Benachrichtigung über die Wiederherstellen der Nachrichtenaktivität.

Um eine Benachrichtigung zur Wiederherstellen der Nachrichtenaktivität in einem Bot zu erhalten, können Sie den Handler überschreiben OnTeamsMessageUndeleteAsync .

Es folgt ein Beispiel für eine Wiederherstellen einer Nachrichtenaktivitätsbenachrichtigung mit OnTeamsMessageUndeleteAsync , wenn eine gelöschte Nachricht wiederhergestellt wird:


protected override async Task OnTeamsMessageUndeleteAsync(ITurnContext<IMessageUpdateActivity> turnContext, CancellationToken cancellationToken)
{ 
var replyActivity = MessageFactory.Text("message is undeleted"); 
await turnContext.SendActivityAsync(replyActivity, cancellationToken); 
} 

Aktivität zum vorläufigen Löschen von Nachrichten abrufen

Wenn Sie eine Nachricht vorläufig löschen, erhält der Bot eine Benachrichtigung über die Aktivität des vorläufigen Löschens von Nachrichten.

Um eine Meldungsaktivitätsbenachrichtigung für vorläufiges Löschen in einem Bot zu erhalten, können Sie den Handler überschreiben OnTeamsMessageSoftDeleteAsync .

Im Folgenden finden Sie ein Beispiel für eine Meldungsaktivität mit vorläufigem Löschen, wenn OnTeamsMessageSoftDeleteAsync eine Nachricht vorläufig gelöscht wird:


protected override async Task OnTeamsMessageSoftDeleteAsync(ITurnContext<IMessageDeleteActivity> turnContext, CancellationToken cancellationToken) 
{ 
var replyActivity = MessageFactory.Text("message is soft deleted"); 
await turnContext.SendActivityAsync(replyActivity, cancellationToken); 
} 

Vorgeschlagene Aktionen senden

Vorgeschlagene Aktionen helfen Benutzern, basierend auf der vorherigen Antwort oder Unterhaltung ideen, was als Nächstes gefragt werden soll. Ihr Bot sollte dem Benutzer kontextspezifische Vorschläge statt generischer oder fester Vorschläge anbieten. Sie können das große Sprachmodell (LLM) Ihres Bots verwenden, um bis zu drei Vorschläge zusammen mit den zugehörigen Antworten zu generieren. Anschließend können Sie diese Vorschläge extrahieren und als Optionen darstellen, die der Benutzer auswählen kann.

Wenn ein Benutzer eine Schaltfläche auswählt, bleibt sie auf den Rich Cards sichtbar und zugänglich. Für vorgeschlagene Aktionen sind die Schaltflächen jedoch so konzipiert, dass sie nach der Auswahl ausgeblendet werden, um zu verhindern, dass der Benutzer veraltete Optionen auswählen kann, die möglicherweise nicht mehr relevant sind.

Hinweis

  • SuggestedActions werden nur für 1:1-Chatbots mit textbasierten Nachrichten und adaptiven Karten unterstützt.
  • SuggestedActions werden für Chatbots mit Anlagen für jeden Konversationstyp nicht unterstützt.
  • imBack ist der einzige unterstützte Aktionstyp, und Teams zeigt bis zu drei vorgeschlagene Aktionen an.

Um einer Nachricht vorgeschlagene Aktionen hinzuzufügen, geben Sie eine Liste von Karte Aktionsobjekten an, die die Schaltflächen darstellen, die dem Benutzer für die sugestedActions -Eigenschaft des Aktivitätsobjekts angezeigt werden sollen.

Im Folgenden finden Sie ein Beispiel zum Implementieren und Ausführen vorgeschlagener Aktionen:

{
  "type": "message",
  "from": {
    "id": "12345678",
    "name": "sender's name"
  },
  "conversation": {
    "id": "abcd1234",
    "name": "conversation's name"
  },
  "recipient": {
    "id": "1234abcd",
    "name": "recipient's name"
  },
  "text": "What are the tasks for the day.",
  "inputHint": "expectingInput",
  "suggestedActions": {
    "actions": [
      {
        "type": "imBack",
        "title": "Create a new query identifying overdue tasks",
        "value": "Create a new query identifying overdue tasks"
      },
      {
        "type": "imBack",
        "title": "Create a new work item for this feature",
        "value": "Create a new work item for this feature"
            }
        ]
    },
  "replyToId": "5d5cdc723"
}

Im Folgenden wird ein Beispiel für vorgeschlagene Aktionen veranschaulicht:

Teams-Kanaldaten

Das channelData Objekt enthält Teams-spezifische Informationen und ist eine definitive Quelle für Team- und Kanal-IDs. Optional können Sie diese IDs zwischenspeichern und als Schlüssel für den lokalen Speicher verwenden. Der TeamsActivityHandler im SDK ruft wichtige Informationen aus dem channelData Objekt ab, um es zugänglich zu machen. Sie können jedoch immer über das -Objekt auf die turnContext ursprünglichen Daten zugreifen.

Das channelData -Objekt ist nicht in Nachrichten in persönlichen Unterhaltungen enthalten, da diese außerhalb eines Kanals stattfinden.

Ein typisches channelData Objekt in einer Aktivität, die an Ihren Bot gesendet wird, enthält die folgenden Informationen:

  • eventType: Teams-Ereignistyp wird nur in Fällen von Kanaländerungsereignissen übergeben.
  • tenant.id: Microsoft Entra Mandanten-ID, die in allen Kontexten übergeben wird.
  • team: Wird nur in Kanalkontexten übergeben, nicht im persönlichen Chat.
  • channel: Wird nur in Kanalkontexten übergeben, wenn der Bot erwähnt wird, oder für Ereignisse in Kanälen in Teams, in denen der Bot hinzugefügt wird.
  • channelData.teamsTeamId:Veraltet. Diese Eigenschaft ist nur aus Gründen der Abwärtskompatibilität enthalten.
  • channelData.teamsChannelId:Veraltet. Diese Eigenschaft ist nur aus Gründen der Abwärtskompatibilität enthalten.

Beispiel für ein channelData-Objekt

Der folgende Code zeigt ein Beispiel für ein channelData-Objekt (channelCreated-Ereignis):

"channelData": {
    "eventType": "channelCreated",
    "tenant": {
        "id": "72f988bf-86f1-41af-91ab-2d7cd011db47"
    },
    "channel": {
        "id": "19:693ecdb923ac4458a5c23661b505fc84@thread.skype",
        "name": "My New Channel"
    },
    "team": {
        "id": "19:693ecdb923ac4458a5c23661b505fc84@thread.skype"
    }
}

Nachrichteninhalt

Nachrichten, die von Ihrem Bot empfangen oder an diesen gesendet werden, können verschiedene Arten von Nachrichteninhalten enthalten.

Format Vom Benutzer zum Bot Vom Bot zum Benutzer Anmerkungen
Rich-Text ✔️ ✔️ Ihr Bot kann Rich-Text, Bilder und Karten senden. Benutzer können Rich-Text und Bilder an Ihren Bot senden.
Bilder ✔️ ✔️ Maximal 1.024 × 1.024 Pixel und 1 MB im PNG-, JPEG- oder GIF-Format. Unterstützt das animierte GIF nicht.
Karten ✔️ Unterstützte Karten finden Sie unter Microsoft Teams Karte Referenz.
Emojis ✔️ ✔️ Teams unterstützt Emojis über UTF-16, z. B. U+1F600 für grinsendes Gesicht.

Bildnachrichten

Um Ihre Nachricht zu verbessern, können Sie Bilder als Anlagen zu dieser Nachricht hinzufügen. Weitere Informationen zu Anlagen finden Sie unter Hinzufügen von Medienanlagen zu Nachrichten.

Bilder können maximal 1.024 × 1.024 Pixel und 1 MB im PNG-, JPEG- oder GIF-Format sein. Animierte GIFs werden nicht unterstützt.

Geben Sie die Höhe und Breite der einzelnen Bilder mithilfe von XML an. In Markdown ist die Bildgröße standardmäßig 256×256. Zum Beispiel:

  • Verwenden Sie: <img src="http://aka.ms/Fo983c" alt="Duck on a rock" height="150" width="223"></img>.
  • Verwenden Sie nicht: ![Duck on a rock](http://aka.ms/Fo983c).

Ein Konversationsbot kann adaptive Karten enthalten, die Geschäftsworkflows vereinfachen. Adaptive Karten bieten umfangreiche anpassbare Text-, Sprach-, Bild-, Schaltflächen- und Eingabefelder.

Adaptive Karten

Adaptive Karten können in einem Bot erstellt und in mehreren Apps wie Teams, Ihrer Website usw. angezeigt werden. Weitere Informationen finden Sie unter Adaptive Karten.

Der folgende Code zeigt ein Beispiel für das Senden einer einfachen adaptiven Karte:

{
    "type": "AdaptiveCard",
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.5",
    "body": [
    {
        "items": [
        {
            "size": "large",
            "text": " Simple Adaptivecard Example with a Textbox",
            "type": "TextBlock",
            "weight": "bolder",
            "wrap": true
        },
        ],
        "spacing": "extraLarge",
        "type": "Container",
        "verticalContentAlignment": "center"
    }
    ]
}

Hinzufügen von Benachrichtigungen zu Ihrer Nachricht

Es gibt zwei Möglichkeiten, eine Benachrichtigung über Ihre Anwendung zu senden:

  • Durch Festlegen der Notification.Alert -Eigenschaft für die Botnachricht.
  • Durch Senden einer Aktivitätsfeedbenachrichtigung mithilfe des Graph-API.

Mit der Notification.Alert -Eigenschaft können Sie Ihrer Nachricht Benachrichtigungen hinzufügen. Benachrichtigungen benachrichtigen Benutzer auf ein Ereignis in Ihrer Anwendung, z. B. neue Aufgaben, Erwähnungen oder Kommentare. Diese Warnungen beziehen sich darauf, worüber Benutzer arbeiten oder was sie sich ansehen müssen, indem sie einen Hinweis in ihren Aktivitätsfeed einfügen. Legen Sie für Benachrichtigungen, die von Ihrer Botnachricht ausgelöst werden sollen, die TeamsChannelData Eigenschaft objects Notification.Alert auf true fest. Ob eine Benachrichtigung ausgelöst wird, hängt von den Teams-Einstellungen des einzelnen Benutzers ab, und Sie können diese Einstellungen nicht überschreiben.

Wenn Sie eine beliebige Benachrichtigung generieren möchten, ohne eine Nachricht an den Benutzer zu senden, können Sie die Graph-API verwenden. Weitere Informationen finden Sie unter Senden von Aktivitätsfeedbenachrichtigungen mithilfe von Graph-API zusammen mit den bewährten Methoden.

Hinweis

Im Feld Zusammenfassung wird beliebiger Text des Benutzers als Benachrichtigung im Feed angezeigt.

Der folgende Code zeigt ein Beispiel für das Hinzufügen von Benachrichtigungen zu Ihrer Nachricht:

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
  // Returns a simple text message.
  var message = MessageFactory.Text("You'll get a notification, if you've turned them on.");
  message.TeamsNotifyUser();

  // Sends an activity to the sender of the incoming activity.
  await turnContext.SendActivityAsync(message);
}

Statuscodes von Bot-Konversations-APIs

Stellen Sie sicher, dass Sie diese Fehler in Ihrer Teams-App entsprechend behandeln. In der folgenden Tabelle sind die Fehlercodes und die Beschreibungen aufgeführt, unter denen die Fehler generiert werden:

Statuscode Fehlercode und Meldungswerte Beschreibung Wiederholungsanforderung Entwickleraktion
400 Code: Bad Argument
Meldung: *szenariospezifisch
Vom Bot bereitgestellte ungültige Anforderungsnutzlast. Weitere Informationen finden Sie in der Fehlermeldung. Nein Erneutes Auswerten der Anforderungsnutzlast auf Fehler. Überprüfen Sie die zurückgegebene Fehlermeldung auf Details.
401 Code: BotNotRegistered
Meldung: Für diesen Bot wurde keine Registrierung gefunden.
Die Registrierung für diesen Bot wurde nicht gefunden. Nein Überprüfen Sie die Bot-ID und das Kennwort. Stellen Sie sicher, dass die Bot-ID (Microsoft Entra ID) im Teams-Entwicklerportal oder über die Azure-Botkanalregistrierung in Azure mit aktiviertem Teams-Kanal registriert ist.
403 Code: BotDisabledByAdmin
Meldung: Der Mandantenadministrator hat diesen Bot deaktiviert.
Mandantenadministrator blockierte Interaktionen zwischen Dem Benutzer und der Bot-App. Der Mandantenadministrator muss die App für den Benutzer innerhalb von App-Richtlinien zulassen. Weitere Informationen finden Sie unter App-Richtlinien. Nein Beenden Sie die Veröffentlichung in einer Unterhaltung, bis die Interaktion mit dem Bot explizit von einem Benutzer in der Unterhaltung initiiert wurde, der angibt, dass der Bot nicht mehr blockiert ist.
403 Code: BotNotInConversationRoster
Meldung: Der Bot ist nicht Teil der Konversationsliste.
Der Bot ist nicht Teil der Unterhaltung. Die App muss in der Unterhaltung neu installiert werden. Nein Bevor Sie versuchen, eine weitere Konversationsanforderung zu senden, warten Sie auf ein installationUpdate Ereignis, das angibt, dass der Bot erneut hinzugefügt wird.
403 Code: ConversationBlockedByUser
Meldung: Der Benutzer hat die Konversation mit dem Bot blockiert.
Der Benutzer hat den Bot im persönlichen Chat oder in einem Kanal über Moderationseinstellungen blockiert. Nein Löschen Sie die Konversation aus dem Cache. Beenden Sie den Versuch, In Unterhaltungen zu posten, bis die Interaktion mit dem Bot explizit von einem Benutzer in der Unterhaltung initiiert wurde, was darauf hinweist, dass der Bot nicht mehr blockiert wird.
403 Code: ForbiddenOperationException
Meldung: Bot ist nicht im persönlichen Bereich des Benutzers installiert
Proaktive Nachrichten werden von einem Bot gesendet, der nicht in einem persönlichen Bereich installiert ist. Nein Bevor Sie versuchen, eine weitere Konversationsanforderung zu senden, installieren Sie die App im persönlichen Bereich.
403 Code: InvalidBotApiHost
Meldung: Ungültiger Bot-API-Host. Rufen Sie für GCC-Mandanten auf https://smba.infra.gcc.teams.microsoft.com.
Der Bot hat den öffentlichen API-Endpunkt für eine Konversation aufgerufen, die zu einem GCC-Mandanten gehört. Nein Aktualisieren Sie die Dienst-URL für die Konversation auf , https://smba.infra.gcc.teams.microsoft.com und wiederholen Sie die Anforderung.
403 Code: NotEnoughPermissions
Meldung: *szenariospezifisch
Der Bot verfügt nicht über die erforderlichen Berechtigungen zum Ausführen der angeforderten Aktion. Nein Bestimmen Sie die erforderliche Aktion anhand der Fehlermeldung.
404 Code: ActivityNotFoundInConversation
Meldung: Unterhaltung nicht gefunden.
Die angegebene Nachrichten-ID konnte in der Unterhaltung nicht gefunden werden. Die Nachricht ist nicht vorhanden, oder sie wird gelöscht. Nein Überprüfen Sie, ob die gesendete Nachrichten-ID ein erwarteter Wert ist. Entfernen Sie die ID, wenn sie zwischengespeichert wurde.
404 Code: ConversationNotFound
Meldung: Unterhaltung nicht gefunden.
Die Konversation wurde nicht gefunden, da sie nicht vorhanden ist oder gelöscht wird. Nein Überprüfen Sie, ob die gesendete Konversations-ID ein erwarteter Wert ist. Entfernen Sie die ID, wenn sie zwischengespeichert wurde.
412 Code: PreconditionFailed
Meldung: Fehler bei der Vorbedingung. Versuchen Sie es erneut.
Eine Vorbedingung ist für eine unserer Abhängigkeiten aufgrund mehrerer gleichzeitiger Vorgänge in derselben Konversation fehlgeschlagen. Ja Wiederholen Sie den Vorgang mit exponentiellem Backoff.
413 Code: MessageSizeTooBig
Nachricht: Die Nachrichtengröße ist zu groß.
Die Größe der eingehenden Anforderung war zu groß. Weitere Informationen finden Sie unter Formatieren Ihrer Botnachrichten. Nein Reduzieren Sie die Nutzlastgröße.
429 Code: Throttled
Meldung: Zu viele Anforderungen. Gibt auch den Zeitpunkt zurück, nach dem versucht werden soll.
Zu viele Anforderungen, die vom Bot gesendet werden. Weitere Informationen finden Sie unter Ratenlimit. Ja Versuchen Sie es mit dem Retry-After Header, um die Backoffzeit zu bestimmen.
500 Code: ServiceError
Meldung: *verschiedene
Internal server error. (Interner Serverfehler) Nein Melden Sie das Problem in der Entwicklercommunity.
502 Code: ServiceError
Meldung: *verschiedene
Dienstabhängigkeitsproblem. Ja Wiederholen Sie den Vorgang mit exponentiellem Backoff. Wenn das Problem weiterhin besteht, melden Sie das Problem in der Entwicklercommunity.
503 Der Dienst ist nicht verfügbar. Ja Wiederholen Sie den Vorgang mit exponentiellem Backoff. Wenn das Problem weiterhin besteht, melden Sie das Problem in der Entwicklercommunity.
504 Gatewaytimeout. Ja Wiederholen Sie den Vorgang mit exponentiellem Backoff. Wenn das Problem weiterhin besteht, melden Sie das Problem in der Entwicklercommunity.

Anleitung zur Wiederholung von Statuscodes

Die allgemeine Wiederholungsanleitung für jeden status Code ist in der folgenden Tabelle aufgeführt. Bot muss vermeiden, dass status Codes wiederholt werden, die nicht angegeben sind:

Statuscode Wiederholungsstrategie
403 Wiederholen Sie den Vorgang, indem Sie die GCC-API https://smba.infra.gcc.teams.microsoft.com für InvalidBotApiHostaufrufen.
412 Wiederholen Sie den Vorgang mit exponentiellem Backoff.
429 Versuchen Sie es mit dem Retry-After -Header, um die Wartezeit in Sekunden und zwischen Anforderungen zu bestimmen, falls verfügbar. Wiederholen Sie andernfalls nach Möglichkeit das exponentielle Backoff mit der Thread-ID.
502 Wiederholen Sie den Vorgang mit exponentiellem Backoff.
503 Wiederholen Sie den Vorgang mit exponentiellem Backoff.
504 Wiederholen Sie den Vorgang mit exponentiellem Backoff.

Codebeispiel

Beispielname Beschreibung Node.js .NETCore Python .NET Manifest
Teams-Unterhaltungsbot In dieser Beispiel-App wird gezeigt, wie verschiedene Botunterhaltungsereignisse verwendet werden, die in Bot Framework v4 verfügbar sind. View View View View
Lokalisierung von Teams-Apps Dieses Beispiel zeigt die Lokalisierung von Teams-Apps mithilfe von Bot und Registerkarte. View View

Nächster Schritt

Siehe auch