다음을 통해 공유


API 참조 - 직접 회선 API 3.0

직업 회선 API 3.0을 사용하여 클라이언트 애플리케이션이 봇과 통신하도록 할 수 있습니다. 직접 회선 API 3.0은 HTTPS를 통해 업계 표준 REST 및 JSON을 사용합니다.

기본 URI

직접 회선 API 3.0에 액세스하려면 모든 API 요청에 대해 다음 기본 URI 중 하나를 사용합니다.

  • 글로벌 봇의 경우 https://directline.botframework.com

  • 지역 봇의 경우 선택한 지역에 따라 다음 URI를 입력합니다.

    지역 기본 URI
    유럽 https://europe.directline.botframework.com
    인도 https://india.directline.botframework.com

일부 요청이 지리적 경계를 넘어갈 수 있으므로 지역 봇에 전역 기본 URI를 사용하는 경우 요청이 실패할 수 있습니다.

헤더

표준 HTTP 요청 헤더 외에도 직접 회선 API 요청에는 요청을 발급하는 클라이언트를 인증하기 위한 비밀 또는 토큰을 지정하는 헤더가 포함되어 Authorization 야 합니다. 다음 형식을 사용하여 Authorization 헤더를 지정합니다.

Authorization: Bearer SECRET_OR_TOKEN

클라이언트가 직접 회선 API 요청을 인증하는 데 사용할 수 있는 비밀 또는 토큰을 가져오는 방법에 대한 자세한 내용은 인증을 참조하세요.

HTTP 상태 코드

각 응답과 함께 반환되는 HTTP 상태 코드는 해당 요청의 결과를 나타냅니다.

HTTP 상태 코드 의미
200 요청이 성공했습니다.
201 요청이 성공했습니다.
202 처리를 위해 요청이 수락되었습니다.
204 요청이 성공했지만 콘텐츠가 반환되지 않았습니다.
400 요청의 형식이 잘못되었거나 요청이 잘못되었습니다.
401 클라이언트는 요청을 할 권한이 없습니다. 헤더가 없거나 형식이 Authorization 잘못되어 이 상태 코드가 발생하는 경우가 많습니다.
403 클라이언트는 요청된 작업을 수행할 수 없습니다. 작업은 다음과 같은 이유로 실패할 수 있습니다.
  • 잘못된 토큰: 요청이 이전에 유효했지만 만료된 code 토큰을 사용하는 경우 ErrorResponse 개체 내에서 반환되는 Error속성이 로 TokenExpired설정됩니다.
  • 데이터 경계 위반: 봇이 지역 봇이지만 기본 URI가 지역이 아닌 경우 일부 요청은 지리적 경계를 초과할 수 있습니다.
  • 대상 리소스가 잘못되었습니다. 대상 봇 또는 사이트가 잘못되었거나 삭제되었습니다.
404 요청된 리소스를 찾을 수 없습니다. 일반적으로 이 상태 코드는 잘못된 요청 URI를 나타냅니다.
500 Direct Line 서비스 내에서 내부 서버 오류가 발생했습니다.
502 봇이 사용 불가능하거나 오류를 반환했습니다. 이는 일반적인 오류 코드입니다.

참고 항목

HTTP 상태 코드 101은 WebSocket 연결 경로에서 사용되지만 WebSocket 클라이언트에서 처리할 가능성이 높습니다.

Errors

4xx 범위 또는 5xx 범위의 HTTP 상태 코드를 지정하는 모든 응답에서 오류 관련 정보를 제공하는 응답 본문에는 ErrorResponse 개체가 포함됩니다. 4xx 범위에서 오류 응답을 수신하는 경우 ErrorResponse 개체를 검사하여 오류의 원인을 확인하고 요청을 다시 제출하기 전에 문제를 해결합니다.

참고 항목

ErrorResponse 개체 내code 속성에 지정된 HTTP 상태 코드 및 값은 안정적입니다. ErrorResponse 개체 내의 속성에 지정된 message 값은 시간이 지남에 따라 변경될 수 있습니다.

다음 코드 조각은 예제 요청 및 결과 오류 응답을 보여줍니다.

Request

POST https://directline.botframework.com/v3/directline/conversations/abc123/activities
[detail omitted]

Response

HTTP/1.1 502 Bad Gateway
[other headers]
{
    "error": {
        "code": "BotRejectedActivity",
        "message": "Failed to send activity: bot returned an error"
    }
}

토큰 작업

이러한 작업을 사용하여 클라이언트가 단일 대화에 액세스하는 데 사용할 수 있는 토큰을 만들거나 새로 고칩니다.

연산 설명
토큰 생성 새 대화에 대한 토큰을 생성합니다.
새로 고침 토큰 토큰을 새로 고칩니다.

토큰 생성

한 대화에 유효한 토큰을 생성합니다.

POST /v3/directline/tokens/generate
콘텐츠 설명
요청 본문 TokenParameters 개체
반환 Conversation 개체

새로 고침 토큰

토큰을 새로 고칩니다.

POST /v3/directline/tokens/refresh
콘텐츠 설명
요청 본문 해당 없음
반환 Conversation 개체

대화 작업

이러한 작업을 사용하여 봇과의 대화를 열고 클라이언트와 봇 간에 활동을 교환합니다.

연산 설명
대화 시작 봇과 새 대화를 엽니다.
대화 정보 가져오기 기존 대화에 대한 정보를 가져옵니다. 이 작업은 클라이언트가 대화에 다시 연결하는사용할 수 있는 새 WebSocket 스트림 URL을 생성합니다.
활동 가져오기 봇에서 활동을 검색합니다.
활동 보내기 봇에 활동을 보냅니다.
파일 업로드 및 보내기 파일을 첨부 파일로 업로드하고 보냅니다.

대화 시작

봇과 새 대화를 엽니다.

POST /v3/directline/conversations
콘텐츠 설명
요청 본문 TokenParameters 개체
반환 Conversation 개체

대화 정보 가져오기

기존 대화에 대한 정보를 가져오고 클라이언트가 대화에 다시 연결하는사용할 수 있는 새 WebSocket 스트림 URL도 생성합니다. 필요에 따라 요청 URI에서 watermark 매개 변수를 제공하여 클라이언트에 표시된 가장 최근 메시지를 나타냅니다.

GET /v3/directline/conversations/{conversationId}?watermark={watermark_value}
콘텐츠 설명
요청 본문 해당 없음
반환 Conversation 개체

활동 가져오기

지정된 대화에 대한 활동을 봇에서 검색합니다. 필요에 따라 요청 URI에서 watermark 매개 변수를 제공하여 클라이언트에 표시된 가장 최근 메시지를 나타냅니다.

GET /v3/directline/conversations/{conversationId}/activities?watermark={watermark_value}
콘텐츠 설명
요청 본문 해당 없음
반환 ActivitySet 개체입니다. 응답은 개체의 ActivitySet 속성으로 포함 watermark 됩니다. 클라이언트는 활동이 반환되지 않을 때까지 값을 이동하여 watermark 사용 가능한 활동을 페이징해야 합니다.

활동 보내기

봇에 활동을 보냅니다.

POST /v3/directline/conversations/{conversationId}/activities
콘텐츠 설명
요청 본문 Activity 개체
반환 봇에 전송된 활동의 ID를 id 지정하는 속성이 포함된 ResourceResponse입니다.

파일 업로드 및 보내기

파일을 첨부 파일로 업로드하고 보냅니다. userId 요청 URI에서 매개 변수를 설정하여 첨부 파일을 보내는 사용자의 ID를 지정합니다.

POST /v3/directline/conversations/{conversationId}/upload?userId={userId}
콘텐츠 설명
요청 본문 단일 첨부 파일의 경우 요청 본문을 파일 콘텐츠로 채웁니다. 여러 첨부 파일의 경우 각 첨부 파일에 대해 하나의 파트가 포함된 다중 파트 요청 본문을 만들고 지정된 첨부 파일의 컨테이너 역할을 해야 하는 활동 개체에 대한 부분 하나도(선택 사항)합니다. 자세한 내용은 봇에 활동 보내기를 참조 하세요.
반환 봇에 전송된 활동의 ID를 id 지정하는 속성이 포함된 ResourceResponse입니다.

참고 항목

업로드된 파일은 24시간 후에 삭제됩니다.

스키마

Direct Line 3.0 스키마에는 Bot Framework 스키마에서 정의한 모든 개체와 Direct Line과 관련된 일부 개체가 포함됩니다.

ActivitySet 개체

활동 집합을 정의합니다.

속성 Type 설명
활동 작업[] 활동 개체의 배열입니다.
워터 마크 string 집합 내 활동의 최대 워터마크입니다. 클라이언트는 watermark 값을 사용하여 봇에서 활동을 검색하거나 새 WebSocket 스트림 URL을 생성할 때 확인한 가장 최근 메시지를 나타낼 수 있습니다.

대화 개체

직접 회선 대화를 정의합니다.

속성 Type 설명
conversationId string 지정된 토큰이 유효한 대화를 고유하게 식별하는 ID입니다.
eTag string HTTP ETag(엔터티 태그)입니다.
expires_in number 토큰이 만료될 때까지의 시간(초)입니다.
referenceGrammarId string 이 봇에 대한 참조 문법의 ID입니다.
streamUrl string 대화의 메시지 스트림에 대한 URL입니다.
token string 지정된 대화에 유효한 토큰입니다.

TokenParameters 개체

토큰을 만들기 위한 매개 변수입니다.

속성 Type 설명
eTag string HTTP ETag(엔터티 태그)입니다.
trustedOrigins string[] 토큰 내에 포함할 신뢰할 수 있는 원본입니다.
user ChannelAccount 토큰에 포함할 사용자 계정입니다.

활동

클라이언트가 Direct Line을 통해 봇에서 수신하는 각 활동에 대해:

  • 첨부 파일 카드 유지됩니다.
  • 업로드된 첨부 파일의 URL은 프라이빗 링크와 함께 숨겨집니다.
  • 속성은 channelData 수정 없이 유지됩니다.

클라이언트는 ActivitySet의 일부로 봇에서 여러 활동을 받을 수 있습니다.

클라이언트가 Direct Line을 Activity 통해 봇에 보내는 경우:

  • 이 속성은 type 보내는 형식 활동(일반적으로 메시지)을 지정합니다.
  • 속성은 from 클라이언트에서 선택한 사용자 ID로 채워져야 합니다.
  • 첨부 파일에는 기존 리소스에 대한 URL 또는 직접 회선 첨부 파일 엔드포인트를 통해 업로드된 URL이 포함될 수 있습니다.
  • 속성은 channelData 수정 없이 유지됩니다.
  • JSON으로 직렬화되고 암호화될 때 활동의 전체 크기는 256K 자를 초과할 수 없습니다. 활동을 150K 미만으로 유지하는 것이 좋습니다. 더 많은 데이터가 필요한 경우 활동을 위로 분할하거나 첨부 파일을 사용하는 것이 좋습니다.

클라이언트는 요청당 단일 작업을 보낼 수 있습니다.

추가 리소스