Implementar funcionalidade específica de canal com a API do Bot Connector
Alguns canais fornecem funcionalidades que não podem ser implementadas usando apenas texto de mensagem e anexos. Para implementar uma funcionalidade específica de canais, pode passar metadados nativos para um canal na propriedade do channelData
objeto Activity. Por exemplo, o seu bot pode usar a propriedade para instruir o channelData
Telegram a enviar um autocolante ou a instruir o Office365 a enviar um e-mail.
Este artigo descreve como usar a propriedade de uma atividade de channelData
mensagem para implementar esta funcionalidade específica do canal:
Canal | Funcionalidade |
---|---|
Enviar e receber um e-mail que contenha metadados de corpo, assunto e importância | |
Slack | Enviar mensagens de fidelidade completa |
Envie notificações do Facebook de forma nativa | |
Telegram | Execute ações específicas do Telegram, tais como partilhar um memorando de voz ou um autocolante |
Nota
O valor da propriedade de channelData
um Activity
objeto é um objeto JSON.
A estrutura do objeto JSON variará de acordo com o canal e a funcionalidade que está a ser implementada, conforme descrito abaixo.
Crie uma mensagem de e-mail personalizada
Para criar uma mensagem de e-mail, desajei a Activity
propriedade do channelData
objeto a um objeto JSON que contenha estas 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 channelData
propriedade para uma mensagem de e-mail 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"
}
Crie uma mensagem slack de fidelidade completa
Para criar uma mensagem slack de fidelidade completa, desajei a Activity
propriedade do channelData
objeto a um objeto JSON que especifica mensagens Slack, anexos Slack e/ou botões Slack.
Nota
Para suportar botões em mensagens Slack, tem de ativar mensagens interativas quando ligar o bot ao canal Slack.
Este snippet mostra um exemplo da channelData
propriedade para uma mensagem slack personalizada.
"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 utilizador clica num botão dentro de uma mensagem Slack, o seu bot receberá uma mensagem de resposta na qual a channelData
propriedade é povoada com um payload
objeto JSON. O payload
objeto especifica o conteúdo da mensagem original, identifica o botão que foi clicado e identifica o utilizador que clicou no botão.
Este snippet mostra um exemplo da channelData
propriedade na mensagem que um bot recebe quando um utilizador clica num botão na mensagem Slack.
"channelData": {
"payload": {
"actions": [
{
"name": "recommend",
"value": "yes"
}
],
//...
"original_message": "{...}",
"response_url": "https://hooks.slack.com/actions/..."
}
}
O seu bot pode responder a esta mensagem da forma normal, ou pode publicar a sua resposta diretamente no ponto final especificado pela payload
propriedade do response_url
objeto. Para obter informações sobre quando e como publicar uma resposta ao response_url
, consulte Botões Slack.
Criar uma notificação do Facebook
Para criar uma notificação do Facebook, desajei a Activity
propriedade do channelData
objeto a um objeto JSON que especifica estas propriedades:
Propriedade | Descrição |
---|---|
notification_type | O tipo de notificação (como, regular, SILENT_PUSH ou NO_PUSH). |
anexo | Um anexo que especifica uma imagem, vídeo ou outro tipo multimédia, ou um anexo de modelo, como um recibo. |
Nota
Para mais detalhes sobre o notification_type
formato e conteúdo do imóvel e attachment
propriedade, consulte a documentação da API do Facebook.
Este snippet mostra um exemplo da channelData
propriedade para um anexo de recibo do Facebook.
"channelData": {
"notification_type": "NO_PUSH",
"attachment": {
"type": "template",
"payload": {
"template_type": "receipt",
//...
}
}
}
Criar uma mensagem telegrama
Para criar uma mensagem que implemente ações específicas do Telegram, como partilhar um memorando de voz ou um autocolante, de definiu a Activity
propriedade do channelData
objeto num objeto JSON que especifica estas propriedades:
Propriedade | Descrição |
---|---|
método | O método da API do Telegram Bot para ligar. |
parâmetros | Os parâmetros do método especificado. |
Estes métodos telegrama são apoiados:
- respostaInlineQuery
- editMessageCaption
- editMessageReplyMarkup
- editMessageText
- forwardMessage
- banChatMember
- sendAudio
- sendChatAction
- enviarContact
- enviarDocumento
- envioLocalização
- enviar Mensagens
- sendPhoto
- sendSticker
- sendVenue
- sendVídeo
- sendVoice
- unbanChatMember
Para mais detalhes sobre estes métodos do Telegram e seus parâmetros, consulte a documentação da API do Telegram Bot.
Nota
- O
chat_id
parâmetro é comum a todos os métodos do Telegram. Se não especificarchat_id
como parâmetro, a estrutura fornecerá o ID para si. - Em vez de passar o conteúdo do ficheiro em linha, especifique o ficheiro utilizando um URL e um tipo de mídia como mostrado no exemplo abaixo.
- Dentro de cada mensagem que o seu bot recebe do canal Telegram, a
channelData
propriedade incluirá a mensagem que o seu bot enviou anteriormente.
Este snippet mostra um exemplo de uma channelData
propriedade que especifica um único método Telegram.
"channelData": {
"method": "sendSticker",
"parameters": {
"sticker": {
"url": "https://domain.com/path/gif",
"mediaType": "image/gif",
}
}
}
Este snippet mostra um exemplo de uma channelData
propriedade que especifica uma variedade de métodos telegrama.
"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"
}
}
]