Implémenter des fonctionnalités spécifiques au canal avec l’API Bot Connector
Certains canaux fournissent des fonctionnalités qui ne peuvent pas être implémentées en utilisant uniquement du texte de message et des pièces jointes. Pour implémenter des fonctionnalités spécifiques au canal, vous pouvez transmettre des métadonnées natives à un canal dans la propriété de l’objet channelData
Activity. Par exemple, votre bot peut utiliser la propriété channelData
pour indiquer à Telegram d’envoyer un autocollant, ou pour demander à Office 365 d’envoyer un e-mail.
Cet article explique comment utiliser une propriété channelData
d’activité de message pour implémenter cette fonctionnalité propre au canal :
Channel | Fonctionnalités |
---|---|
Envoyer et recevoir un e-mail qui contient un corps, un objet et des métadonnées d’importance | |
Slack | Envoyer des messages Slack de fidélité |
Envoyer des notifications Facebook en mode natif | |
Telegram | Effectuer des actions spécifiques à Telegram, comme le partage d’un mémo vocal ou d’un autocollant |
Remarque
La valeur d’une propriété channelData
de l’objet Activity
est un objet JSON.
La structure de l’objet JSON varie en fonction du canal et des fonctionnalités implémentées, comme décrit ci-dessous.
Créer un message électronique personnalisé
Pour créer un e-mail, définissez la propriété channelData
de l’objet Activity
sur un objet JSON qui contient ces propriétés :
{
"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",
}
}
Cet extrait de code montre un exemple de la propriété channelData
d’un e-mail personnalisé.
"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"
}
Créer un message Slack de fidélité optimale
Pour créer un message Slack de fidélité optimale, définissez la propriété channelData
de l’objet Activity
sur un objet JSON qui spécifie des messages Slack, des pièces jointes Slack et/ou des boutons Slack.
Remarque
Pour prendre en charge des boutons dans les messages Slack, vous devez activer Interactive Messages (Messages interactifs) lorsque vous connectez votre bot au canal Slack.
Cet extrait de code montre un exemple de la propriété channelData
pour un message Slack personnalisé.
"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"
}
]
}
]
}
Lorsqu’un utilisateur clique sur un bouton dans un message Slack, votre bot reçoit un message de réponse dans lequel la propriété channelData
est remplie par un objet JSON payload
. L’objet payload
précise le contenu du message d’origine, il identifie le bouton qui a été cliqué et identifie l’utilisateur qui a cliqué sur le bouton.
Cet extrait de code montre un exemple de la propriété channelData
dans le message reçu par un bot lorsqu’un utilisateur clique sur un bouton dans le message Slack.
"channelData": {
"payload": {
"actions": [
{
"name": "recommend",
"value": "yes"
}
],
//...
"original_message": "{...}",
"response_url": "https://hooks.slack.com/actions/..."
}
}
Votre bot peut répondre à ce message normalement, ou il peut publier sa réponse directement sur le point de terminaison spécifié par la propriété response_url
de l’objet payload
. Pour plus d’informations sur le moment et la façon de publier une réponse sur response_url
, consultez Slack Buttons.
Créer une notification Facebook
Pour créer une notification Facebook, définissez la propriété channelData
de l’objet Activity
sur un objet JSON qui contient ces propriétés :
Propriété | Description |
---|---|
notification_type | Type de notification (par exemple, REGULAR, SILENT_PUSH ou NO_PUSH). |
attachment | Pièce jointe qui spécifie une image, une vidéo ou un autre type multimédia, ou encore une pièce jointe basée sur un modèle, comme un accusé de réception. |
Remarque
Pour plus d’informations sur le format et le contenu de la propriété notification_type
et de la propriété attachment
, consultez la documentation de l’API Facebook.
Cet extrait de code montre un exemple de la propriété channelData
pour une pièce jointe d’accusé de réception de Facebook.
"channelData": {
"notification_type": "NO_PUSH",
"attachment": {
"type": "template",
"payload": {
"template_type": "receipt",
//...
}
}
}
Créer un message Telegram
Pour créer un message qui implémente des actions propres à Telegram, tels que le partage d’un mémo vocal ou d’un autocollant, définissez la propriété channelData
de l’objet Activity
sur un objet JSON qui spécifie ces propriétés :
Propriété | Description |
---|---|
method | Méthode de l’API Bot Telegram à appeler. |
parameters | Paramètres de la méthode spécifiée. |
Les méthodes Telegram prises en charge sont les suivantes :
- answerInlineQuery
- editMessageCaption
- editMessageReplyMarkup
- editMessageText
- forwardMessage
- banChatMember
- SendVideo
- sendChatAction
- sendContact
- sendDocument
- sendLocation
- SendMessage
- sendPhoto
- sendSticker
- sendVenue
- sendVideo
- sendVoice
- unbanChatMember
Pour plus d’informations sur ces méthodes Telegram et leurs paramètres, consultez la documentation de l’API Bot Telegram.
Remarque
- Le paramètre
chat_id
est commun à toutes les méthodes Telegram. Si vous ne spécifiezchat_id
pas en tant que paramètre, l’infrastructure fournit l’ID pour vous. - Au lieu de passer le contenu de fichier inline, spécifiez le fichier à l’aide d’une URL et d’un type de média, comme indiqué dans l’exemple ci-dessous.
- Dans chaque message que votre bot reçoit du canal Telegram, la propriété
channelData
inclut le message précédemment envoyé par votre bot.
Cet extrait de code montre l’exemple d’une propriété channelData
qui spécifie une méthode Telegram unique.
"channelData": {
"method": "sendSticker",
"parameters": {
"sticker": {
"url": "https://domain.com/path/gif",
"mediaType": "image/gif",
}
}
}
Cet extrait de code montre l’exemple d’une propriété channelData
qui spécifie un tableau de méthodes 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"
}
}
]