Ponowne nawiązywanie połączenia z konwersacją w interfejsie API Direct Line 3.0
Jeśli klient używa interfejsu WebSocket do odbierania komunikatów, ale traci połączenie, może być konieczne ponowne nawiązanie połączenia. W tym scenariuszu klient musi wygenerować nowy adres URL strumienia protokołu WebSocket, którego może użyć do ponownego nawiązania połączenia z konwersacją.
Generowanie nowego adresu URL strumienia protokołu WebSocket
Aby wygenerować nowy adres URL strumienia protokołu WebSocket, który może służyć do ponownego nawiązywania połączenia z istniejącą konwersacją, należy wysłać następujące żądanie:
GET https://directline.botframework.com/v3/directline/conversations/{conversationId}?watermark={watermark_value}
Authorization: Bearer SECRET_OR_TOKEN
W tym identyfikatorze URI żądania zastąp ciąg {conversationId} identyfikatorem konwersacji i zastąp ciąg {watermark_value} wartością znaku wodnego (jeśli watermark
parametr jest dostępny). Parametr watermark
jest opcjonalny.
watermark
Jeśli parametr jest określony w identyfikatorze URI żądania, konwersacja odtwarza znak wodny, co gwarantuje, że żadne komunikaty nie zostaną utracone.
watermark
Jeśli parametr zostanie pominięty z identyfikatora URI żądania, będą odtwarzane tylko komunikaty odebrane po ponownym połączeniu żądania.
Poniższe fragmenty kodu zawierają przykład żądania ponownego połączenia i odpowiedzi.
Żądanie
GET https://directline.botframework.com/v3/directline/conversations/abc123?watermark=0000a-42
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn
Reakcja
Jeśli żądanie zakończy się pomyślnie, odpowiedź będzie zawierać identyfikator konwersacji, token i nowy adres URL strumienia protokołu WebSocket.
HTTP/1.1 200 OK
[other headers]
{
"conversationId": "abc123",
"token": "RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn",
"streamUrl": "https://directline.botframework.com/v3/directline/conversations/abc123/stream?watermark=000a-4&t=RCurR_XV9ZA.cwA..."
}
Ponowne nawiązywanie połączenia z konwersacją
Klient musi użyć nowego adresu URL strumienia Protokołu WebSocket , aby ponownie nawiązać połączenie z konwersacją w ciągu 60 sekund. Jeśli w tym czasie nie można nawiązać połączenia, klient musi wydać kolejne żądanie ponownego połączenia w celu wygenerowania nowego adresu URL strumienia.
Jeśli w ustawieniach Direct Line włączono opcję rozszerzonego uwierzytelniania, może zostać wyświetlony błąd 400 "MissingProperty", jeśli nie masz poprawnie skonfigurowanego tokenu dołączonego do żądania.