Повторное подключение к беседе в 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 (свойство не найдено), информирующую о том, что маркер, присоединенный к запросу, не настроен правильно.
Дополнительные ресурсы
- Основные понятия
- Аутентификация
- Receive activities via WebSocket stream (Получение действий через поток по протоколу WebSocket)