Bot Connector API를 사용하여 채널별 기능 구현
일부 채널은 메시지 텍스트 및 첨부 파일만 사용하여 구현할 수 없는 기능을 제공합니다. 채널별 기능을 구현하려면 Activity 개체의 channelData
속성에 있는 채널에 네이티브 메타데이터를 전달할 수 있습니다. 예를 들어, 봇은 channelData
속성을 사용하여 Telegram에 스티커를 전송하도록 지시하거나 Office 365에 이메일을 전송하도록 지시할 수 있습니다.
이 문서에서는 메시지 작업의 channelData
속성을 사용하여 다음과 같은 채널 관련 기능을 구현하는 방법을 설명합니다.
채널 | 기능 |
---|---|
본문, 제목 및 중요 메타데이터를 포함하는 이메일 보내기 및 받기 | |
Slack | 완전히 신뢰할 수 있는 Slack 메시지 보내기 |
고유하게 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"
}
}
]