Bot Connector API를 사용하여 메시지에 미디어 첨부 파일 추가

일반적으로 봇 및 채널은 텍스트 문자열을 교환하지만, 일부 채널은 첨부 파일 교환도 지원하므로 이를 통해 봇에서 사용자에게 더 다양한 메시지를 보낼 수 있습니다. 예를 들어 봇은 미디어 첨부 파일(예: 이미지, 비디오, 오디오, 파일) 및 서식 있는 카드를 보낼 수 있습니다. 이 문서에서는 Bot Connector 서비스를 사용하여 미디어 첨부 파일을 메시지에 추가하는 방법을 설명합니다.

각 채널에서 지원되는 기능에 대한 자세한 내용은 채널 참조 문서를 참조하세요.

미디어 첨부 파일 추가

메시지에 미디어 첨부 파일을 추가하려면 Attachment 개체를 만들고, 속성을 설정하고name, 속성을 미디어 파일의 URL로 설정하고contentUrl, 속성을 적절한 미디어 형식(예: image/jpg, audio/wav, video/mp4)으로 설정합니다contentType. 그런 다음, 메시지를 나타내는 Activity 개체 내에서 attachments 배열 내에 Attachment 개체를 지정합니다.

다음 예제에서는 텍스트와 단일 이미지 첨부 파일을 포함하는 메시지를 보내는 요청을 보여 줍니다. 이 예제 요청에서 https://smba.trafficmanager.net/teams는 기본 URI를 나타냅니다. 봇이 실행하는 요청의 기본 URI는 다를 수 있습니다. 기본 URI를 설정하는 방법에 대한 자세한 내용은 API 참조를 참조하세요.

POST https://smba.trafficmanager.net/teams/v3/conversations/abcd1234/activities/5d5cdc723
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{
    "type": "message",
    "from": {
        "id": "12345678",
        "name": "sender's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
   },
   "recipient": {
        "id": "1234abcd",
        "name": "recipient's name"
    },
    "text": "Here's a picture of the duck I was telling you about.",
    "attachments": [
        {
            "contentType": "image/jpg",
            "contentUrl": "https://www.publicdomainpictures.net/pictures/30000/t2/duck-on-a-rock.jpg",
            "name": "duck-on-a-rock.jpg"
        }
    ],
    "replyToId": "5d5cdc723"
}

이미지의 인라인 이진 파일을 지원하는 채널의 경우 의 속성을 이미지의 Attachment base64 이진 파일로 설정할 contentUrl 수 있습니다(예: data:image/jpg; base64,iVBORw0KGgo...). 채널은 메시지의 텍스트 문자열 옆에 이미지 또는 이미지의 URL을 표시합니다.

{
    "type": "message",
    "from": {
        "id": "12345678",
        "name": "sender's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
   },
   "recipient": {
        "id": "1234abcd",
        "name": "recipient's name"
    },
    "text": "Here's a picture of the duck I was telling you about.",
    "attachments": [
        {
            "contentType": "image/jpg",
            "contentUrl": "data:image/jpg;base64,iVBORw0KGgo...",
            "name": "duck-on-a-rock.jpg"
        }
    ],
    "replyToId": "5d5cdc723"
}

이미지 파일에 대해 위에서 설명한 것과 동일한 프로세스를 사용하여 비디오 파일 또는 오디오 파일을 메시지에 첨부할 수 있습니다. 채널에 따라, 비디오 및 오디오가 인라인으로 재생되거나 링크로 표시될 수 있습니다.

참고

또한 봇에서 미디어 첨부 파일을 포함하는 메시지도 받을 수 있습니다. 예를 들어, 채널에서 사용자가 분석할 사진 또는 저장할 문서를 업로드하도록 허용할 경우 봇이 수신하는 메시지에 첨부 파일이 포함될 수 있습니다.

AudioCard 첨부 파일 추가

AudioCard 또는 VideoCard 첨부 파일을 추가하는 것은 미디어 첨부 파일을 추가하는 것과 같습니다. 예를 들어, 다음 JSON은 미디어 첨부 파일에 오디오 카드를 추가하는 방법을 보여 줍니다.

{
    "type": "message",
    "from": {
        "id": "12345678",
        "name": "sender's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
   },
   "recipient": {
        "id": "1234abcd",
        "name": "recipient's name"
    },
    "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.audio",
      "content": {
        "title": "Allegro in C Major",
        "subtitle": "Allegro Duet",
        "text": "No Image, No Buttons, Autoloop, Autostart, Sharable",
        "duration": "PT2M55S",
        "media": [
          {
            "url": "https://contoso.com/media/AllegrofromDuetinCMajor.mp3"
          }
        ],
        "shareable": true,
        "autoloop": true,
        "autostart": true,
        "value": {
            // Supplementary parameter for this card
        }
      }
    }],
    "replyToId": "5d5cdc723"
}

채널이 이 첨부 파일을 받으면 오디오 파일 재생이 시작됩니다. 예를 들어 사용자가 일시 중지를 선택하여 오디오와 상호 작용하는 경우 채널은 다음과 같은 JSON을 사용하여 봇에 콜백을 보냅니다.

{
    ...
    "type": "event",
    "name": "media/pause",
    "value": {
        "url": // URL for media
        "cardValue": {
            // Supplementary parameter for this card
        }
    }
}

미디어 이벤트 이름 media/pauseactivity.name 필드에 표시됩니다. 모든 미디어 이벤트 이름 목록은 아래 표를 참조하세요.

이벤트 Description
media/next 클라이언트가 다음 미디어로 건너뜀
media/pause 클라이언트가 미디어 재생을 일시 중지함
media/play 클라이언트가 미디어 재생을 시작함
media/previous 클라이언트가 이전 미디어로 건너뜀
media/resume 클라이언트가 미디어 재생을 다시 시작함
media/stop 클라이언트가 미디어 재생을 중지함

추가 리소스