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:
- Fügen Sie die RSC-Berechtigung
ChatMessageReadReceipt.Read.Chat
wie folgt im App-Manifest hinzu:
"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
mitIsMessageRead
dem Handler.Die
IsMessageRead
Hilfsmethode ist nützlich, um zu bestimmen, ob die Nachricht von den Empfängern gelesen wird. Wenn kleinercompareMessageId
oder gleichLastReadMessageId
ist, wurde die Nachricht gelesen. Überschreiben Sie dieOnTeamsReadReceiptAsync
-Methode, um Lesebestätigungen mitIsMessageRead
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.-
id
: GUID für den Kanal. -
name
: Name des Teams wird nur in Fällen von Teambenennungsereignissen übergeben.
-
-
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.-
id
: GUID für den Kanal. -
name
: Kanalname wird nur in Fällen von Kanaländerungsereignissen übergeben.
-
-
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 InvalidBotApiHost aufrufen. |
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 | – |