Implementera kanalspecifika funktioner med Bot Connector-API:et
Vissa kanaler innehåller funktioner som inte kan implementeras med endast meddelandetext och bifogade filer. Om du vill implementera kanalspecifika funktioner kan du skicka inbyggda metadata till en kanal i aktivitetsobjektets channelData
-egenskap. Din robot kan till exempel använda channelData
egenskapen för att instruera Telegram att skicka ett klistermärke eller instruera Office365 att skicka ett e-postmeddelande.
I den här artikeln beskrivs hur du använder en meddelandeaktivitets channelData
egenskap för att implementera den här kanalspecifika funktionen:
Kanal | Funktioner |
---|---|
E-post | Skicka och ta emot ett e-postmeddelande som innehåller metadata för brödtext, ämne och prioritet |
Slack | Skicka Slack-meddelanden med fullständig återgivning |
Skicka Facebook-meddelanden internt | |
Telegram | Utföra Telegram-specifika åtgärder, till exempel att dela ett röstmemorandum eller en dekal |
Anteckning
Värdet för ett Activity
objekts channelData
-egenskap är ett JSON-objekt.
Strukturen för JSON-objektet varierar beroende på vilken kanal och vilka funktioner som implementeras, enligt beskrivningen nedan.
Skapa ett anpassat e-postmeddelande
Om du vill skapa ett e-postmeddelande anger du Activity
objektets channelData
egenskap till ett JSON-objekt som innehåller följande egenskaper:
{
"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",
}
}
Det här kodfragmentet visar ett exempel på channelData
egenskapen för ett anpassat e-postmeddelande.
"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"
}
Skapa ett Slack-meddelande med fullständig återgivning
Om du vill skapa ett Slack-meddelande med fullständig återgivning anger du Activity
objektets channelData
egenskap till ett JSON-objekt som anger Slack-meddelanden, Slack-bifogade filer och/eller Slack-knappar.
Anteckning
Om du vill ha stöd för knappar i Slack-meddelanden måste du aktivera interaktiva meddelanden när du ansluter roboten till Slack-kanalen.
Det här kodfragmentet visar ett exempel på channelData
egenskapen för ett anpassat Slack-meddelande.
"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"
}
]
}
]
}
När en användare klickar på en knapp i ett Slack-meddelande får roboten channelData
ett svarsmeddelande där egenskapen är ifylld med ett payload
JSON-objekt. Objektet payload
anger innehållet i det ursprungliga meddelandet, identifierar knappen som klickades och identifierar användaren som klickade på knappen.
Det här kodfragmentet visar ett exempel på channelData
egenskapen i meddelandet som en robot tar emot när en användare klickar på en knapp i Slack-meddelandet.
"channelData": {
"payload": {
"actions": [
{
"name": "recommend",
"value": "yes"
}
],
//...
"original_message": "{...}",
"response_url": "https://hooks.slack.com/actions/..."
}
}
Roboten kan svara på det här meddelandet på vanligt sätt, eller så kan den publicera sitt svar direkt till den slutpunkt som anges av payload
objektets response_url
-egenskap. Information om när och hur du publicerar ett svar på finns i response_url
Slack-knappar.
Skapa ett Facebook-meddelande
Om du vill skapa ett Facebook-meddelande anger du Activity
objektets channelData
egenskap till ett JSON-objekt som anger följande egenskaper:
Egenskap | Beskrivning |
---|---|
notification_type | Typ av meddelande (till exempel REGULAR, SILENT_PUSH eller NO_PUSH). |
Bifogad fil | En bifogad fil som anger en bild, video eller annan multimediatyp eller en bifogad mall, till exempel ett kvitto. |
Anteckning
Mer information om format och innehåll för notification_type
egenskapen finns attachment
i Facebook API-dokumentationen.
Det här kodfragmentet visar ett exempel på channelData
egenskapen för en bifogad Facebook-kvittobilaga.
"channelData": {
"notification_type": "NO_PUSH",
"attachment": {
"type": "template",
"payload": {
"template_type": "receipt",
//...
}
}
}
Skapa ett Telegram-meddelande
Om du vill skapa ett meddelande som implementerar Telegram-specifika åtgärder, till exempel att dela ett röstmemorandum eller en dekal, anger du Activity
objektets channelData
egenskap till ett JSON-objekt som anger dessa egenskaper:
Egenskap | Beskrivning |
---|---|
metod | Den Telegram Bot API-metod som ska anropas. |
parametrar | Parametrarna för den angivna metoden. |
Dessa Telegram-metoder stöds:
- answerInlineQuery
- editMessageCaption
- editMessageReplyMarkup
- editMessageText
- forwardMessage
- banChatMember
- sendAudio
- sendChatAction
- sendContact
- sendDocument
- sendLocation
- sendMessage
- sendPhoto
- sendSticker
- sendVenue
- sendVideo
- sendVoice
- unbanChatMember
Mer information om dessa Telegram-metoder och deras parametrar finns i Telegram Bot API-dokumentationen.
Anteckning
- Parametern
chat_id
är gemensam för alla Telegram-metoder. Om du inte angerchat_id
som en parameter tillhandahåller ramverket ID:t åt dig. - I stället för att skicka infogat filinnehåll anger du filen med hjälp av en URL och medietyp enligt exemplet nedan.
- I varje meddelande som roboten tar emot från Telegram-kanalen
channelData
innehåller egenskapen det meddelande som roboten skickade tidigare.
Det här kodfragmentet visar ett exempel på en channelData
egenskap som anger en enda Telegram-metod.
"channelData": {
"method": "sendSticker",
"parameters": {
"sticker": {
"url": "https://domain.com/path/gif",
"mediaType": "image/gif",
}
}
}
Det här kodfragmentet visar ett exempel på en channelData
egenskap som anger en matris med Telegram-metoder.
"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"
}
}
]