다음을 통해 공유


Bot Connector API를 사용하여 채널별 기능 구현

일부 채널은 메시지 텍스트 및 첨부 파일만 사용하여 구현할 수 없는 기능을 제공합니다. 채널별 기능을 구현하려면 Activity 개체의 channelData 속성에 있는 채널에 네이티브 메타데이터를 전달할 수 있습니다. 예를 들어, 봇은 channelData 속성을 사용하여 Telegram에 스티커를 전송하도록 지시하거나 Office 365에 이메일을 전송하도록 지시할 수 있습니다.

이 문서에서는 메시지 작업의 channelData 속성을 사용하여 다음과 같은 채널 관련 기능을 구현하는 방법을 설명합니다.

채널 기능
Email 본문, 제목 및 중요 메타데이터를 포함하는 이메일 보내기 및 받기
Slack 완전히 신뢰할 수 있는 Slack 메시지 보내기
Facebook 고유하게 Facebook 알림 보내기
Telegram 음성 메모 또는 스티커 공유와 같은 Telegram 관련 작업 수행

참고

Activity 개체의 channelData 속성 값은 JSON 개체입니다. JSON 개체의 구조는 아래 설명된 대로 채널 및 구현하는 기능에 따라 달라집니다.

사용자 지정 전자 메일 메시지 만들기

이메일 메시지를 만들려면 Activity 개체의 channelData 속성을 이러한 속성을 포함하는 JSON 개체로 설정합니다.

{
    "type": "ActivityTypes.Message",
    "locale": "en-Us",
    "channelID": "email",
    "fromName": { "id": "mybot@mydomain.com", "name": "My bot"},
    "recipientName": { "id": "joe@otherdomain.com", "name": "Joe Doe"},
    "conversation": { "id": "123123123123", "topic": "awesome chat" },
    "channelData":
    {
        "htmlBody": "<html><body style = \"font-family: Calibri; font-size: 11pt;\" >This is more than awesome.</body></html>",
        "importance": "high",
        "ccRecipients": "Yasemin@adatum.com;Temel@adventure-works.com",
    }
}

이 코드 조각은 사용자 지정 이메일 메시지에 대한 channelData 속성의 예제를 보여 줍니다.

"channelData":
{
    "htmlBody": "<html><body style = \"font-family: Calibri; font-size: 11pt;\" >This is more than awesome.</body></html>",
    "importance": "high",
    "ccRecipients": "Yasemin@adatum.com;Temel@adventure-works.com"
}

완전히 신뢰할 수 있는 Slack 메시지 만들기

완전히 신뢰할 수 있는 Slack 메시지를 만들려면 Activity 개체의 channelData 속성을 Slack 메시지, Slack 첨부 파일 및/또는 Slack 단추를 지정하는 JSON 개체로 설정합니다.

참고

설정 단추에서 Slack 메시지를 지원 해야 합니다 대화형 메시지 때 있습니다 봇을 연결 Slack 채널에 있습니다.

이 코드 조각은 사용자 지정 Slack 메시지에 대한 channelData 속성의 예제를 보여 줍니다.

"channelData": {
   "text": "Now back in stock! :tada:",
   "attachments": [
        {
            "title": "The Further Adventures of Slackbot",
            "author_name": "Stanford S. Strickland",
            "author_icon": "https://api.slack.com/img/api/homepage_custom_integrations-2x.png",
            "image_url": "http://i.imgur.com/OJkaVOI.jpg?1"
        },
        {
            "fields": [
                {
                    "title": "Volume",
                    "value": "1",
                    "short": true
                },
                {
                    "title": "Issue",
                    "value": "3",
                    "short": true
                }
            ]
        },
        {
            "title": "Synopsis",
            "text": "After @episod pushed exciting changes to a devious new branch back in Issue 1, Slackbot notifies @don about an unexpected deploy..."
        },
        {
            "fallback": "Would you recommend it to customers?",
            "title": "Would you recommend it to customers?",
            "callback_id": "comic_1234_xyz",
            "color": "#3AA3E3",
            "attachment_type": "default",
            "actions": [
                {
                    "name": "recommend",
                    "text": "Recommend",
                    "type": "button",
                    "value": "recommend"
                },
                {
                    "name": "no",
                    "text": "No",
                    "type": "button",
                    "value": "bad"
                }
            ]
        }
    ]
}

사용자가 Slack 메시지 내의 단추를 클릭하면 봇은 channelData 속성이 payload JSON 개체로 채워진 응답 메시지를 받습니다. payload 개체는 원본 메시지의 콘텐츠를 지정하고, 클릭된 단추를 식별하고, 단추를 클릭한 사용자를 식별합니다.

이 코드 조각은 사용자가 Slack 메시지에서 단추를 클릭할 때 봇에서 수신하는 메시지에서 channelData 속성의 예제를 보여줍니다.

"channelData": {
    "payload": {
        "actions": [
            {
                "name": "recommend",
                "value": "yes"
            }
        ],
        //...
        "original_message": "{...}",
        "response_url": "https://hooks.slack.com/actions/..."
    }
}

봇은 일반적인 방식으로 이 메시지에 응답하거나 payload 개체의 response_url 속성으로 지정된 엔드포인트에 해당 응답을 직접 게시할 수 있습니다. response_url에 응답을 게시하는 시기 및 방법에 대한 정보는 Slack 단추를 참조하세요.

Facebook 알림 만들기

Facebook 알림을 만들려면 Activity 개체의 channelData 속성을 이러한 속성을 지정하는 JSON 개체로 설정합니다.

속성 Description
notification_type 알림 유형(예: REGULAR, SILENT_PUSH 또는 NO_PUSH)입니다.
attachment 이미지, 비디오 또는 다른 멀티미디어 형식을 지정하는 첨부 파일 또는 영수증과 같은 템플릿 기반 첨부 파일입니다.

참고

notification_type 속성 및 attachment 속성의 형식 및 콘텐츠에 대한 자세한 내용은 Facebook API 설명서를 참조하세요.

이 코드 조각은 Facebook 영수증 첨부 파일에 대한 channelData 속성의 예제를 보여 줍니다.

"channelData": {
    "notification_type": "NO_PUSH",
    "attachment": {
        "type": "template",
        "payload": {
            "template_type": "receipt",
            //...
        }
    }
}

Telegram 메시지 만들기

음성 메모 또는 스티커 공유와 같은 Telegram 관련 작업을 구현하는 메시지를 만들려면 Activity 개체의 channelData 속성을 이러한 속성을 지정하는 JSON 개체로 설정합니다.

속성 Description
method 호출할 Telegram Bot API 메서드입니다.
매개 변수 지정된 메서드의 매개 변수입니다.

다음과 같은 Telegram 메서드가 지원됩니다.

  • answerInlineQuery
  • editMessageCaption
  • editMessageReplyMarkup
  • editMessageText
  • forwardMessage
  • banChatMember
  • sendAudio
  • sendChatAction
  • sendContact
  • sendDocument
  • sendLocation
  • sendMessage
  • sendPhoto
  • sendSticker
  • sendVenue
  • sendVideo
  • sendVoice
  • unbanChatMember

이러한 Telegram 메서드 및 해당 매개 변수에 대한 자세한 내용은 Telegram Bot API 설명서를 참조하세요.

참고

  • chat_id 매개 변수는 모든 Telegram 메서드에 공통적입니다. 를 매개 변수로 지정 chat_id 하지 않으면 프레임워크에서 ID를 제공합니다.
  • 파일 콘텐츠 인라인을 전달하는 대신 아래 예제에서와 같이 URL 및 미디어 형식을 사용하여 파일을 지정합니다.
  • 봇이 Telegram 채널에서 받는 각 메시지 내에서 channelData 속성은 봇이 이전에 전송한 메시지를 포함합니다.

이 코드 조각은 단일 Telegram 메서드를 지정하는 channelData 속성의 예제를 보여 줍니다.

"channelData": {
    "method": "sendSticker",
    "parameters": {
        "sticker": {
            "url": "https://domain.com/path/gif",
            "mediaType": "image/gif",
        }
    }
}

이 코드 조각은 Telegram 메서드의 배열을 지정하는 channelData 속성의 예제를 보여줍니다.

"channelData": [
    {
        "method": "sendSticker",
        "parameters": {
            "sticker": {
                "url": "https://domain.com/path/gif",
                "mediaType": "image/gif",
            }
        }
    },
    {
        "method": "sendMessage",
        "parameters": {
            "text": "<b>This message is HTML formatted.</b>",
            "parse_mode": "HTML"
        }
    }
]

추가 리소스