Direct Line API 3.0에서 대화에 다시 연결Reconnect to a conversation in Direct Line API 3.0

클라이언트는 WebSocket 인터페이스를 사용하여 메시지를 수신하는 경우, 연결이 끊어지면 다시 연결해야 할 수 있습니다.If a client is using the WebSocket interface to receive messages but loses its connection, it may need to reconnect. 이 시나리오에서 클라이언트는 대화에 다시 연결하는 데 사용할 수 있는 새 WebSocket 스트림 URL을 생성해야 합니다.In this scenario, the client must generate a new WebSocket stream URL that it can use to reconnect to the conversation.

새 WebSocket 스트림 URL 생성Generate a new WebSocket stream URL

기존 대화에 다시 연결하는 데 사용할 수 있는 새 WebSocket 스트림 URL을 생성하려면 다음 요청을 실행합니다.To generate a new WebSocket stream URL that can be used to reconnect to an existing conversation, issue this request:

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

이 요청 URI에서 {conversationId} 를 대화 ID로 바꾸고, {watermark_value} 를 워터마크 값으로 바꿉니다(watermark 매개 변수를 사용할 수 있는 경우).In this request URI, replace {conversationId} with the conversation ID and replace {watermark_value} with the watermark value (if the watermark parameter is available). watermark 매개 변수는 선택 사항입니다.The watermark parameter is optional. 요청 URI에 watermark 매개 변수가 지정된 경우 워터마크부터 대화가 재생되므로 메시지가 손실되지 않도록 보장됩니다.If the watermark parameter is specified in the request URI, the conversation replays from the watermark, guaranteeing that no messages are lost. 요청 URI에서 watermark 매개 변수가 생략되면 연결 요청 이후에 수신된 메시지만 재생됩니다.If the watermark parameter is omitted from the request URI, only messages received after the reconnection request are replayed.

다음 코드 조각은 다시 연결 요청 및 응답의 예제를 제공합니다.The following snippets provide an example of the Reconnect request and response.

요청Request

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

응답Response

요청이 성공적이면 응답에는 대화의 ID, 토큰 및 새 WebSocket 스트림 URL가 포함됩니다.If the request is successful, the response will contain an ID for the conversation, a token, and a new WebSocket stream URL.

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..."
}

대화에 다시 연결Reconnect to the conversation

클라이언트는 새 WebSocket 스트림 URL을 사용하여 60초 이내에 대화에 다시 연결해야 합니다.The client must use the new WebSocket stream URL to reconnect to the conversation within 60 seconds. 이 시간 동안 연결을 설정할 수 없는 경우, 클라이언트는 다른 다시 연결 요청을 실행하여 새 스트림 URL을 생성해야 합니다.If the connection cannot be established during this time, the client must issue another Reconnect request to generate a new stream URL.

Direct Line 설정에서 "향상된 인증 옵션"을 사용하도록 설정한 경우 올바르게 구성된 토큰이 요청에 연결되지 않으면 400 "MissingProperty" 오류가 발생할 수 있습니다.If you have "Enhanced authentication option" enabled in the Direct Line settings, you might get a 400 "MissingProperty" error if you don't have a correctly configured token attached to the request.

추가 리소스Additional resources