Dela via


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
Facebook 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_urlSlack-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 anger chat_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"
        }
    }
]

Ytterligare resurser