Udostępnij za pośrednictwem


Implementowanie funkcji specyficznych dla kanału za pomocą interfejsu API łącznika bota

Niektóre kanały udostępniają funkcje, których nie można zaimplementować przy użyciu tylko tekstu i załączników wiadomości. Aby zaimplementować funkcjonalność specyficzną dla kanału, można przekazać metadane natywne do kanału we właściwości obiektu channelDataDziałania. Na przykład bot może użyć channelData właściwości , aby poinstruować Telegram, aby wysłać naklejkę lub poinstruować usługę Office365 o wysłaniu wiadomości e-mail.

W tym artykule opisano sposób użycia właściwości działania channelData komunikatów do zaimplementowania tej funkcji specyficznej dla kanału:

Kanał Funkcjonalność
E-mail Wysyłanie i odbieranie wiadomości e-mail zawierającej metadane treści, tematu i ważności
Slack Wysyłanie komunikatów Slack o pełnej wierności
Facebook Wysyłanie powiadomień na Facebooku natywnie
Telegram Wykonywanie akcji specyficznych dla telegramu, takich jak udostępnianie notatki głosowej lub naklejki

Uwaga

Wartość Activity właściwości obiektu channelData jest obiektem JSON. Struktura obiektu JSON będzie się różnić w zależności od kanału i zaimplementowanej funkcjonalności, jak opisano poniżej.

Tworzenie niestandardowej wiadomości e-mail

Aby utworzyć wiadomość e-mail, ustaw Activity właściwość obiektu channelData na obiekt JSON zawierający następujące właściwości:

{
    "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",
    }
}

Ten fragment kodu przedstawia przykład channelData właściwości niestandardowej wiadomości e-mail.

"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"
}

Tworzenie pełnej wierności komunikatu Slack

Aby utworzyć komunikat Slack o pełnej wierności, ustaw Activity właściwość obiektu channelData na obiekt JSON, który określa komunikaty usługi Slack, załączniki usługi Slack i/lub przyciski Usługi Slack.

Uwaga

Aby obsługiwać przyciski w komunikatach usługi Slack, należy włączyć komunikaty interakcyjne podczas łączenia bota z kanałem usługi Slack.

Ten fragment kodu przedstawia przykład channelData właściwości niestandardowego komunikatu usługi Slack.

"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"
                }
            ]
        }
    ]
}

Gdy użytkownik kliknie przycisk w komunikacie usługi Slack, bot otrzyma komunikat odpowiedzi, w którym channelData właściwość zostanie wypełniona obiektem payload JSON. Obiekt payload określa zawartość oryginalnego komunikatu, identyfikuje kliknięty przycisk i identyfikuje użytkownika, który kliknął przycisk.

Ten fragment kodu przedstawia przykład channelData właściwości w komunikacie odbieranym przez bota po kliknięciu przycisku w komunikacie Usługi Slack.

"channelData": {
    "payload": {
        "actions": [
            {
                "name": "recommend",
                "value": "yes"
            }
        ],
        //...
        "original_message": "{...}",
        "response_url": "https://hooks.slack.com/actions/..."
    }
}

Bot może odpowiedzieć na tę wiadomość w normalny sposób lub opublikować odpowiedź bezpośrednio do punktu końcowego określonego payload przez właściwość obiektu response_url . Aby uzyskać informacje o tym, kiedy i jak opublikować odpowiedź na adres response_url, zobacz Przyciski usługi Slack.

Tworzenie powiadomienia na facebooku

Aby utworzyć powiadomienie na Facebooku, ustaw Activity właściwość obiektu channelData na obiekt JSON, który określa następujące właściwości:

Właściwość Opis
notification_type Typ powiadomienia (na przykład REGULAR, SILENT_PUSH lub NO_PUSH).
Załącznik Załącznik określający obraz, wideo lub inny typ multimedialny albo szablonowy załącznik, taki jak potwierdzenie.

Uwaga

Aby uzyskać szczegółowe informacje o formacie i zawartości właściwości i attachment właściwości, zobacz dokumentację interfejsunotification_type API serwisu Facebook.

Ten fragment kodu przedstawia przykład channelData właściwości załącznika potwierdzenia na Facebooku.

"channelData": {
    "notification_type": "NO_PUSH",
    "attachment": {
        "type": "template",
        "payload": {
            "template_type": "receipt",
            //...
        }
    }
}

Tworzenie komunikatu telegramu

Aby utworzyć komunikat implementujący akcje specyficzne dla telegramu, takie jak udostępnianie notatki głosowej lub naklejki, ustaw Activity właściwość obiektu channelData na obiekt JSON, który określa następujące właściwości:

Właściwość Opis
method Metoda interfejsu API bota telegramu do wywołania.
parameters Parametry określonej metody.

Obsługiwane są następujące metody telegramu:

  • answerInlineQuery
  • editMessageCaption
  • editMessageReplyMarkup
  • editMessageText
  • forwardMessage
  • banChatMember
  • sendAudio
  • sendChatAction
  • sendContact
  • sendDocument
  • sendLocation
  • sendMessage
  • sendPhoto
  • sendSticker
  • sendVenue
  • sendVideo
  • sendVoice
  • unbanChatMember

Aby uzyskać szczegółowe informacje na temat tych metod telegramu i ich parametrów, zobacz dokumentację interfejsu API bota telegramu.

Uwaga

  • Parametr chat_id jest wspólny dla wszystkich metod Telegram. Jeśli nie określisz chat_id jako parametru, platforma podasz identyfikator.
  • Zamiast przekazywać zawartość pliku w tekście, określ plik przy użyciu adresu URL i typu nośnika, jak pokazano w poniższym przykładzie.
  • W każdej wiadomości odbieranej przez bota z kanału channelData Telegram właściwość będzie zawierać komunikat wysłany wcześniej przez bota.

Ten fragment kodu przedstawia przykład channelData właściwości, która określa jedną metodę Telegram.

"channelData": {
    "method": "sendSticker",
    "parameters": {
        "sticker": {
            "url": "https://domain.com/path/gif",
            "mediaType": "image/gif",
        }
    }
}

Ten fragment kodu przedstawia przykład channelData właściwości, która określa tablicę metod 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"
        }
    }
]

Dodatkowe zasoby