Повторное подключение к беседе в API Direct Line 3.0

Если клиент использует интерфейс WebSocket для получения сообщений, но теряет подключение, может возникнуть необходимость повторного подключения. В этом сценарии клиент должен создать новый URL-адрес потока по протоколу WebSocket, который можно использовать для повторного подключения к диалогу.

Создание нового URL-адреса потока по протоколу WebSocket

Чтобы создать новый URL-адрес потока по протоколу WebSocket, который можно использовать для повторного подключения к существующему диалогу, выполните этот запрос:

GET https://directline.botframework.com/v3/directline/conversations/{conversationId}?watermark={watermark_value}
Authorization: Bearer SECRET_OR_TOKEN

В этом URI запроса замените {conversationId} идентификатором диалога, а {watermark_value} — значением водяного знака (если доступен параметр watermark). Параметр watermark не обязателен. Если в URI запроса указан параметр watermark, диалог воспроизводится начиная с водяного знака, за счет чего ни одно сообщение не будет потеряно. Если в URI запроса параметр watermark пропущен, будут воспроизведены только те сообщения, которые были получены после выполнения запроса о повторном подключении.

Ниже приведены примеры фрагментов кода для запроса о повторном подключении и ответа на него.

Запрос

GET https://directline.botframework.com/v3/directline/conversations/abc123?watermark=0000a-42
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn

Ответ

Если запрос выполнен, ответ будет содержать идентификатор диалога, маркер и новый URL-адрес потока по протоколу 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..."
}

Повторное подключение к диалогу

Клиент должен использовать новый URL-адрес потока по протоколу WebSocket, чтобы повторно подключиться к диалогу в течение 60 секунд. Если подключение не удается установить в течение этого времени, клиент должен отправить еще один запрос на повторное подключение, чтобы создать новый URL-адрес потока.

Если параметр Enhanced authentication option (Расширенная проверка подлинности) включен в Direct Line, вы можете получить ошибку с кодом 400 — MissingProperty (свойство не найдено), информирующую о том, что маркер, присоединенный к запросу, не настроен правильно.

Дополнительные ресурсы