Udostępnij za pośrednictwem


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.

Dodatkowe zasoby