Implementar funcionalidade específica do canal com a API do Bot Connector
Alguns canais fornecem recursos que não podem ser implementados usando apenas texto de mensagem e anexos. Para implementar a funcionalidade específica do canal, você pode passar metadados nativos para um canal na propriedade do channelData
objeto Activity. Por exemplo, o bot pode usar a propriedade channelData
para instruir o Telegram a enviar um adesivo ou para instruir o Office 365 a enviar um email.
Este artigo descreve como usar a propriedade channelData
de uma atividade de mensagem para implementar esta funcionalidade específica do canal:
Canal | Funcionalidade |
---|---|
Enviar e receber um email que contém metadados de corpo, assunto e prioridade | |
Margem de atraso | Enviar mensagens do Slack com fidelidade total |
Enviar notificações do Facebook nativamente | |
Telegram | Executar ações específicas do Telegram, como compartilhar um memorando de voz ou um adesivo |
Observação
O valor da propriedade de um Activity
objeto channelData
é um objeto JSON.
A estrutura do objeto JSON varia de acordo com o canal e a funcionalidade que está sendo implementada, conforme descrito abaixo.
Criar uma mensagem de email personalizada
Para criar uma mensagem de email, defina a propriedade do Activity
objeto channelData
como um objeto JSON que contém essas propriedades:
{
"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",
}
}
Este snippet mostra um exemplo da propriedade channelData
para uma mensagem de email personalizada.
"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"
}
Criar uma mensagem do Slack com fidelidade total
Para criar uma mensagem do Slack com fidelidade total, defina a propriedade Activity
do objeto channelData
como um objeto JSON que especifica mensagens do Slack, anexos do Slack e/ou botões do Slack.
Observação
Para dar suporte a botões em mensagens do Slack, habilite a opção Mensagens Interativas ao conectar o bot ao canal do Slack.
Este snippet mostra um exemplo da propriedade channelData
para uma mensagem personalizada do Slack.
"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"
}
]
}
]
}
Quando um usuário clicar em um botão em uma mensagem do Slack, o bot receberá uma mensagem de resposta na qual a propriedade channelData
é populada com um objeto JSON payload
. O objeto payload
especifica o conteúdo da mensagem original, identifica o botão que recebeu o clique e identifica o usuário que clicou no botão.
Este snippet mostra um exemplo da propriedade channelData
na mensagem recebida por um bot quando um usuário clica em um botão na mensagem do Slack.
"channelData": {
"payload": {
"actions": [
{
"name": "recommend",
"value": "yes"
}
],
//...
"original_message": "{...}",
"response_url": "https://hooks.slack.com/actions/..."
}
}
O bot pode responder a essa mensagem da maneira normal ou postar sua resposta diretamente no ponto de extremidade especificado pela propriedade payload
do objeto response_url
. Para obter informações sobre quando e como publicar uma resposta para a response_url
, confira Botões do Slack.
Criar uma notificação do Facebook
Para criar uma notificação do Facebook, defina a propriedade Activity
do objeto channelData
em um objeto JSON que especifique estas propriedades:
Propriedade | Descrição |
---|---|
notification_type | O tipo de notificação (como REGULAR, SILENT_PUSH ou NO_PUSH). |
attachment | Um anexo que especifica uma imagem, um vídeo ou outro tipo de multimídia ou um anexo modelo como um recibo. |
Observação
Para obter detalhes sobre o formato e o conteúdo das propriedades notification_type
e attachment
, confira a documentação da API do Facebook.
Este snippet mostra um exemplo da propriedade channelData
para um anexo de recibo do Facebook.
"channelData": {
"notification_type": "NO_PUSH",
"attachment": {
"type": "template",
"payload": {
"template_type": "receipt",
//...
}
}
}
Criar uma mensagem do Telegram
Para criar uma mensagem que implementa ações específicas do Telegram, como compartilhar um memorando de voz ou um adesivo, defina a propriedade Activity
do objeto channelData
em um objeto JSON que especifique estas propriedades:
Propriedade | Descrição |
---|---|
method | O método de API do Bot do Telegram a ser chamado. |
parâmetros | Os parâmetros do método especificado. |
Há suporte para estes métodos do Telegram:
- answerInlineQuery
- editMessageCaption
- editMessageReplyMarkup
- editMessageText
- forwardMessage
- banChatMember
- sendAudio
- sendChatAction
- sendContact
- sendDocument
- sendLocation
- sendMessage
- sendPhoto
- sendSticker
- sendVenue
- sendVideo
- sendVoice
- unbanChatMember
Para obter detalhes sobre esses métodos do Telegram e seus parâmetros, confira a documentação da API do Bot do Telegram.
Observação
- O parâmetro
chat_id
é comum a todos os métodos do Telegram. Se você não especificarchat_id
como um parâmetro, a estrutura fornecerá a ID para você. - Em vez de passar o conteúdo do arquivo embutido, especifique o arquivo usando uma URL e um tipo de mídia, conforme mostrado no exemplo abaixo.
- Em cada mensagem que o bot recebe do canal do Telegram, a propriedade
channelData
incluirá a mensagem que o bot enviou anteriormente.
Este snippet mostra um exemplo de uma propriedade channelData
que especifica um único método do Telegram.
"channelData": {
"method": "sendSticker",
"parameters": {
"sticker": {
"url": "https://domain.com/path/gif",
"mediaType": "image/gif",
}
}
}
Este snippet mostra um exemplo de uma propriedade channelData
que especifica uma matriz de métodos do Telegram.
"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"
}
}
]