Implementación de la funcionalidad específica del canal con Bot Connector API
Algunos canales proporcionan características que no se pueden implementar mediante solo texto de mensaje y datos adjuntos. Para implementar la funcionalidad específica del canal, puede pasar metadatos nativos a un canal en la propiedad del channelData
objeto Activity. Por ejemplo, el bot puede usar la propiedad channelData
para indicar a Telegram que envíe un adhesivo o para indicar a Office 365 que envíe un correo electrónico.
En este artículo se describe cómo usar la propiedad channelData
de la actividad de un mensaje para implementar esta funcionalidad específica de canal:
Canal | Funcionalidad |
---|---|
Envío y recepción de un correo electrónico que contiene metadatos de importancia, cuerpo y asunto. | |
Slack | Envío de mensajes de Slack de plena fidelidad. |
Envío de notificaciones de Facebook de forma nativa. | |
Telegram | Acciones específicas de Telegram, como compartir una nota de voz o un adhesivo. |
Nota:
El valor de la propiedad channelData
de un objeto Activity
es un objeto JSON.
La estructura del objeto JSON variará según el canal y la funcionalidad que se implementa, tal como se describe a continuación.
Crear un mensaje de correo electrónico personalizado
Para crear un mensaje de correo electrónico, establezca la propiedad channelData
del objeto Activity
en un objeto JSON que contenga estas propiedades:
{
"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",
}
}
En este fragmento de código se muestra un ejemplo de la propiedad channelData
para un mensaje de correo electrónico personalizado.
"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"
}
Crear un mensaje de Slack de plena fidelidad
Para crear un mensaje de Slack de plena fidelidad, establezca la propiedad channelData
del objeto Activity
en un objeto JSON que especifique mensajes de Slack, adjuntos de Slack o botones de Slack.
Nota:
Para admitir botones en los mensajes de Slack, debe habilitar Mensajes interactivos cuando conecte el bot al canal de Slack.
En este fragmento de código se muestra un ejemplo de la propiedad channelData
para un mensaje de Slack personalizado.
"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"
}
]
}
]
}
Cuando un usuario hace clic en un botón dentro de un mensaje de Slack, el bot recibirá un mensaje de respuesta en el que la propiedad channelData
se rellena con un objeto JSON payload
. El objeto payload
especifica el contenido del mensaje original, identifica el botón donde se hizo clic e identifica al usuario que hizo clic en el botón.
En este fragmento de código se muestra un ejemplo de la propiedad channelData
en el mensaje que recibe un bot cuando un usuario hace clic en un botón en el mensaje de Slack.
"channelData": {
"payload": {
"actions": [
{
"name": "recommend",
"value": "yes"
}
],
//...
"original_message": "{...}",
"response_url": "https://hooks.slack.com/actions/..."
}
}
El bot puede responder a este mensaje de la forma normal o puede registrar su respuesta directamente en punto de conexión que haya especificado la propiedad response_url
del objeto payload
. Para obtener información sobre cuándo y cómo publicar una respuesta en response_url
, consulte Botones de Slack.
Crear una notificación de Facebook
Para crear una notificación de Facebook, establezca la propiedad channelData
del objeto Activity
en un objeto JSON que especifique estas propiedades:
Propiedad | Descripción |
---|---|
notification_type | Tipo de notificación (por ejemplo, REGULAR, SILENT_PUSH o NO_PUSH). |
attachment | Un elemento adjunto que especifica una imagen, un vídeo u otro tipo de elemento multimedia, o un adjunto con plantilla como, por ejemplo, un recibo. |
Nota:
Para obtener más información sobre el formato y el contenido de la propiedad notification_type
y la propiedad attachment
, consulte la documentación de la API de Facebook.
En este fragmento de código se muestra un ejemplo de la propiedad channelData
para un elemento adjunto con recibo de Facebook.
"channelData": {
"notification_type": "NO_PUSH",
"attachment": {
"type": "template",
"payload": {
"template_type": "receipt",
//...
}
}
}
Crear un mensaje de Telegram
Para crear un mensaje que implemente las acciones específicas de Telegram, como compartir una nota de voz o un sticker, establezca la propiedad channelData
del objeto Activity
en un objeto JSON que especifique estas propiedades:
Propiedad | Descripción |
---|---|
method | El método de Telegram Bot API al que se llamará. |
parámetros | Los parámetros del método especificado. |
Se admiten los métodos de Telegram siguientes:
- answerInlineQuery
- editMessageCaption
- editMessageReplyMarkup
- editMessageText
- forwardMessage
- banChatMember
- sendAudio
- sendChatAction
- sendContact
- sendDocument
- sendLocation
- sendMessage
- sendPhoto
- sendSticker
- sendVenue
- sendVideo
- sendVoice
- unbanChatMember
Para obtener más información sobre estos métodos de Telegram y sus parámetros, consulte la documentación de Telegram Bot API.
Nota:
- El parámetro
chat_id
es común a todos los métodos de Telegram. Si no especificachat_id
como parámetro, el marco proporcionará el identificador. - En lugar de pasar el contenido del archivo insertado, especifique el archivo mediante una dirección URL y el tipo de medio, tal como se muestra en el ejemplo siguiente.
- Dentro de cada mensaje que recibe su bot del canal de Telegram, la propiedad
channelData
incluirá el mensaje que su bot envió anteriormente.
En este fragmento de código se muestra un ejemplo de una propiedad channelData
que especifica un único método de Telegram.
"channelData": {
"method": "sendSticker",
"parameters": {
"sticker": {
"url": "https://domain.com/path/gif",
"mediaType": "image/gif",
}
}
}
En este fragmento de código se muestra un ejemplo de una propiedad channelData
que especifica una matriz de métodos de 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"
}
}
]