Referenz zur Direct Line-API 3.0
Mit der Direct Line-API 3.0 kann Ihre Clientanwendung mit Ihrem Bot kommunizieren. Die Direct Line-API 3.0 verwendet die Branchenstandards REST und JSON über HTTPS.
Basis-URI
Verwenden Sie eine der folgenden Basis-URIs für alle API-Anforderungen, um auf direct Line API 3.0 zuzugreifen:
Verwenden Sie für globale Bots
https://directline.botframework.com
Geben Sie für einen regionalen Bot den folgenden URI gemäß der ausgewählten Region ein:
Region Basis-URI Europa https://europe.directline.botframework.com
Indien https://india.directline.botframework.com
Tipp
Eine Anforderung schlägt möglicherweise fehl, wenn Sie den globalen Basis-URI für einen regionalen Bot verwenden, da einige Anforderungen über geografische Grenzen hinausgehen können.
Headers
Zusätzlich zu den Standard-HTTP-Anforderungsheadern muss eine Direct Line-API-Anforderung einen Authorization
-Header enthalten, der einen Geheimnis oder ein Token zum Authentifizieren des Clients angibt, der die Anforderung sendet. Geben Sie den Authorization
-Header im folgenden Format an:
Authorization: Bearer SECRET_OR_TOKEN
Ausführliche Informationen zum Abrufen eines Geheimnisses oder eines Tokens, mit denen der Client seine Direct Line-API-Anforderungen authentifizieren kann, finden Sie unter Authentifizierung.
HTTP-Statuscodes (Azure Cognitive Search)
Der HTTP-Statuscode, der mit jeder Antwort zurückgegeben wird, gibt das Ergebnis der entsprechende Anforderung an.
HTTP-Statuscode | Bedeutung |
---|---|
200 | Die Anforderung war erfolgreich. |
201 | Die Anforderung war erfolgreich. |
202 | Die Anforderung wurde für die Verarbeitung akzeptiert. |
204 | Die Anforderung war erfolgreich, aber es wurden keine Inhalte zurückgegeben. |
400 | Die Anforderung war falsch formatiert oder auf andere Weise fehlerhaft. |
401 | Der Client ist nicht berechtigt, die Anforderung zu stellen. Dieser Statuscode tritt häufig aufgrund eines fehlenden oder falsch formatierten Authorization -Headers auf. |
403 | Der Client darf den angeforderten Vorgang nicht ausführen. Der Vorgang kann aus den folgenden Gründen fehlschlagen.
|
404 | Die angeforderte Ressource wurde nicht gefunden. In der Regel weist dieser Statuscode auf einen ungültigen Anforderungs-URI hin. |
500 | Innerhalb des Direct Line-Diensts ist ein interner Serverfehler aufgetreten. |
502 | Der Bot ist nicht verfügbar oder hat einen Fehler zurückgegeben. Dies ist ein häufig auftretender Fehlercode. |
Hinweis
Der HTTP-Statuscode 101 wird für den WebSocket-Verbindungspfad verwendet. Vermutlich wird der Code jedoch von Ihrem WebSocket-Client verarbeitet.
Fehler
Jede Antwort, die einen HTTP-Statuscode im Bereich 4xx oder 5xx angibt, enthält ein ErrorResponse-Objekt im Text der Antwort, das Informationen zum Fehler bereitstellt. Wenn Sie eine Fehlerantwort im Bereich 4xx erhalten, überprüfen Sie das ErrorResponse-Objekt, um die Fehlerursache zu identifizieren und Ihr Problem zu beheben, bevor Sie die Anforderung erneut senden.
Hinweis
HTTP-Statuscodes und Werte, die in der code
-Eigenschaft innerhalb des ErrorResponse-Objekts festgelegt werden, sind stabil. Werte in der message
-Eigenschaft innerhalb des ErrorResponse-Objekts können sich im Laufe der Zeit ändern.
In den folgenden Codeausschnitten wird eine Beispielanforderung und die resultierende Fehlermeldung gezeigt.
Anfordern
POST https://directline.botframework.com/v3/directline/conversations/abc123/activities
[detail omitted]
Antwort
HTTP/1.1 502 Bad Gateway
[other headers]
{
"error": {
"code": "BotRejectedActivity",
"message": "Failed to send activity: bot returned an error"
}
}
Tokenvorgänge
Verwenden Sie diese Vorgänge zum Erstellen oder Aktualisieren eines Tokens, mit dessen Hilfe ein Client auf eine einzelne Konversationen zugreifen kann.
Vorgang | Beschreibung |
---|---|
Token generieren | Generiert ein Token für eine neue Konversation. |
Token aktualisieren | Aktualisiert ein Token. |
Generieren eines Tokens
Generiert ein Token, das für eine Konversation gültig ist.
POST /v3/directline/tokens/generate
Inhalt | Beschreibung |
---|---|
Anforderungstext | Ein TokenParameters-Objekt. |
Rückgabe | Ein Conversation-Objekt. |
Aktualisieren eines Tokens
Aktualisiert das Token.
POST /v3/directline/tokens/refresh
Inhalt | Beschreibung |
---|---|
Anforderungstext | – |
Rückgabe | Ein Conversation-Objekt. |
Konversationsvorgänge
Mit den folgenden Vorgängen starten Sie eine Konversation mit Ihrem Bot und tauschen Aktivitäten zwischen Client und Bot aus.
Vorgang | Beschreibung |
---|---|
Konversation starten | Startet eine neue Konversation mit dem Bot. |
Konversationsinformationen abrufen | Ruft Informationen zu einer vorhandenen Konversation ab. Dieser Vorgang generiert eine WebSocket-Stream-URL, mit denen ein Client erneut eine Verbindung zu einer Konversation herstellen kann. |
Aktivitäten abrufen | Ruft Aktivitäten des Bots ab. |
Aktivität senden | Sendet eine Aktivität an den Bot. |
Datei(en) hochladen und senden | Lädt Dateien hoch und sendet sie als Anlagen. |
Starten einer Konversation
Startet eine neue Konversation mit dem Bot.
POST /v3/directline/conversations
Inhalt | Beschreibung |
---|---|
Anforderungstext | Ein TokenParameters-Objekt. |
Rückgabe | Ein Conversation-Objekt. |
Abrufen von Konversationsinformationen
Ruft Informationen zu einer vorhandenen Konversation ab und generiert eine neue WebSocket-Stream-URL, mit der ein Client erneut eine Verbindung zu einer Konversation herstellen kann. Sie können den watermark
-Parameter im Anforderungs-URI optional so festlegen, dass die neueste Nachricht vom Client angezeigt wird.
GET /v3/directline/conversations/{conversationId}?watermark={watermark_value}
Inhalt | Beschreibung |
---|---|
Anforderungstext | – |
Rückgabe | Ein Conversation-Objekt. |
Abrufen von Aktivitäten
Ruft Aktivitäten vom Bot für die angegebene Konversation ab. Sie können den watermark
-Parameter im Anforderungs-URI optional so festlegen, dass die neueste Nachricht vom Client angezeigt wird.
GET /v3/directline/conversations/{conversationId}/activities?watermark={watermark_value}
Inhalt | Beschreibung |
---|---|
Anforderungstext | – |
Rückgabe | Ein ActivitySet-Objekt. Die Antwort enthält watermark als Eigenschaft des ActivitySet -Objekts. Clients sollten durch die verfügbaren Aktivitäten blättern, indem der watermark -Wert erhöht wird, bis keine Aktivitäten mehr zurückgegeben werden. |
Senden einer Aktivität
Sendet eine Aktivität an den Bot.
POST /v3/directline/conversations/{conversationId}/activities
Inhalt | Beschreibung |
---|---|
Anforderungstext | Ein Activity-Objekt. |
Rückgabe | Ein ResourceResponse-Objekt, das eine id -Eigenschaft mit der ID der Aktivität enthält, die an den Bot gesendet wurde. |
Datei(en) hochladen und senden
Lädt Dateien hoch und sendet sie als Anlagen. Legen Sie den userId
-Parameter im Anforderungs-URI auf die ID des Benutzers fest, der die Anlagen sendet.
POST /v3/directline/conversations/{conversationId}/upload?userId={userId}
Inhalt | Beschreibung |
---|---|
Anforderungstext | Füllen Sie für eine einzelne Anlage den Anforderungstext mit dem Dateiinhalt. Für mehrere Anlagen erstellen Sie einen mehrteiligen Anforderungstext, der einen Teil für jede Anlage und (optional) auch einen Teil für das Activity-Objekt enthält, das als Container für die angegebenen Anlagen verwendet werden soll. Weitere Informationen finden Sie unter Senden einer Aktivität an den Bot. |
Rückgabe | Ein ResourceResponse-Objekt, das eine id -Eigenschaft mit der ID der Aktivität enthält, die an den Bot gesendet wurde. |
Hinweis
Hochgeladene Dateien werden nach 24 Stunden gelöscht.
Schema
Das Direct Line 3.0-Schema umfasst alle Objekte, die im Bot Framework-Schema definiert sind, sowie einige Direct Line-spezifische Objekte.
ActivitySet-Objekt
Definiert eine Aktivitätenmenge.
Eigenschaft | Typ | Beschreibung |
---|---|---|
Aktivitäten | Activity[] | Array von Aktivität-Objekten. |
watermark | Zeichenfolge | Maximaler Wasserzeichenwert für Aktivitäten innerhalb der Menge. Ein Client kann mit dem watermark -Wert beim Abrufen von Aktivitäten des Bots oder beim Erstellen einer WebSocket-Stream-URL die neueste Nachricht kennzeichnen. |
Conversation-Objekt
Definiert eine Direct Line-Konversation.
Eigenschaft | Typ | Beschreibung |
---|---|---|
conversationId | Zeichenfolge | ID, die Konversation, für die das angegebene Token gültig ist, eindeutig identifiziert. |
eTag | Zeichenfolge | Ein HTTP-ETag (Entitätstag). |
expires_in | Zahl | Die Anzahl der Sekunden bis zum Ablauf des Tokens. |
referenceGrammarId | Zeichenfolge | ID für die Verweisgrammatik für diesen Bot. |
streamUrl | Zeichenfolge | URL für den Nachrichtendatenstrom der Konversation. |
token | Zeichenfolge | Token, das für die angegebene Konversation gültig ist. |
TokenParameters-Objekt
Parameter für die Tokenerstellung.
Eigenschaft | Typ | BESCHREIBUNG |
---|---|---|
eTag | Zeichenfolge | Ein HTTP-ETag (Entitätstag). |
trustedOrigins | string[] | Vertrauenswürdige Ursprünge, die in das Token eingebettet werden sollen. |
Benutzer | ChannelAccount | Das Benutzerkonto, das in das Token eingebettet werden soll. |
Aktivitäten
Für jedes Activity-Objekt, das ein Client von einem Bot über Direct Line erhält, gilt Folgendes:
- Anlagekarten werden beibehalten.
- URLs für hochgeladene Anhänge werden mithilfe eines privaten Links anonymisiert.
- Die
channelData
-Eigenschaft wird gespeichert, ohne dass Änderungen an ihr vorgenommen werden.
Clients können mehrere Aktivitäten eines Bot als Teil eines ActivitySet-Objekts enthalten.
Wenn ein Client ein Activity
-Objekt über Direct Line an den Bot sendet, gilt Folgendes:
- Die
type
Eigenschaft gibt die Typaktivität an, die gesendet wird (in der Regel Nachricht). - Für die
from
-Eigenschaft muss automatisch eine vom Client ausgewählte Benutzer-ID festgelegt werden. - Anlagen können URLs zu vorhandenen Ressourcen oder URLs enthalten, die über den Direct Line-Anlageendpunkt hochgeladen wurden.
- Die
channelData
-Eigenschaft wird gespeichert, ohne dass Änderungen an ihr vorgenommen werden. - Die Gesamtgröße der Aktivität darf bei der Serialisierung und Verschlüsselung für JSON 256.000 Zeichen nicht überschreiten. Es wird empfohlen, Aktivitäten unter 150K zu halten. Wenn weitere Daten erforderlich sind, sollten Sie die Aktivität aufteilen oder Anlagen verwenden.
Clients können pro Anforderung eine einzelne Aktivität senden.
Zusätzliche Ressourcen
- Bot Framework -- Activity (Bot Framework-Aktivität)