Добавление мультимедийных вложений в сообщения с помощью API Bot Connector

Боты и каналы обычно обмениваются текстовыми строками, но некоторые каналы также поддерживают обмен вложениями, что позволяет боту отправлять пользователям сообщения с более широким набором возможностей. Например, бот может отправлять мультимедийные вложения (например, изображения, видео, аудио, файлы) и форматированные карточки. В этой статье описывается добавление вложений мультимедиа в сообщения с помощью службы соединителя ботов.

Совет

Сведения о функциях, поддерживаемых в каждом канале, см. в справочной статье о каналах .

Добавление мультимедийного вложения

Чтобы добавить мультимедийное вложение в сообщение, создайте объект Attachment , задайте name свойство , задайте contentUrl для свойства URL-адрес файла мультимедиа и задайте contentType для свойства соответствующий тип мультимедиа (например, image/jpg, audio/wav, video/mp4). Затем в объекте Действие, представляющем сообщение, укажите объект Attachment в массиве attachments.

Следующий пример демонстрирует запрос, который отправляет сообщение, содержащее текст и одно вложенное изображение. В этом примере запрос https://smba.trafficmanager.net/teams представляет базовый URI. Базовый URI для запросов, отправляемых вашим ботом, может отличаться. Дополнительные сведения о настройке базового URI см. в статье Справочник по API.

POST https://smba.trafficmanager.net/teams/v3/conversations/abcd1234/activities/5d5cdc723
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{
    "type": "message",
    "from": {
        "id": "12345678",
        "name": "sender's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
   },
   "recipient": {
        "id": "1234abcd",
        "name": "recipient's name"
    },
    "text": "Here's a picture of the duck I was telling you about.",
    "attachments": [
        {
            "contentType": "image/jpg",
            "contentUrl": "https://www.publicdomainpictures.net/pictures/30000/t2/duck-on-a-rock.jpg",
            "name": "duck-on-a-rock.jpg"
        }
    ],
    "replyToId": "5d5cdc723"
}

Для каналов, поддерживающих встроенные двоичные файлы изображения, можно задать contentUrl для свойства Attachment объекта значение двоичного файла образа base64 (например, data:image/jpg; base64,iVBORw0KGgo...). Канал отобразит изображение или URL-адрес изображения рядом с текстовой строкой сообщения.

{
    "type": "message",
    "from": {
        "id": "12345678",
        "name": "sender's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
   },
   "recipient": {
        "id": "1234abcd",
        "name": "recipient's name"
    },
    "text": "Here's a picture of the duck I was telling you about.",
    "attachments": [
        {
            "contentType": "image/jpg",
            "contentUrl": "data:image/jpg;base64,iVBORw0KGgo...",
            "name": "duck-on-a-rock.jpg"
        }
    ],
    "replyToId": "5d5cdc723"
}

В сообщение можно вложить файл видео или звуковой файл, используя ту же процедуру, которая описана выше для файла изображения. В зависимости от канала аудио- и видеоданные могут воспроизводится внутри сообщения или отображаться в виде ссылки.

Примечание

Бот также может получать сообщения, содержащие мультимедийные вложения. Например, сообщение, полученное ботом, может содержать вложение, если канал позволяет пользователю отправлять фотографию для анализа или документ для сохранения.

Добавление вложения AudioCard

Добавление вложения AudioCard или VideoCard ничем не отличается от добавления вложения мультимедиа. Например, следующий пример кода JSON демонстрирует добавление карточки аудиофайла в мультимедийное вложение.

{
    "type": "message",
    "from": {
        "id": "12345678",
        "name": "sender's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
   },
   "recipient": {
        "id": "1234abcd",
        "name": "recipient's name"
    },
    "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.audio",
      "content": {
        "title": "Allegro in C Major",
        "subtitle": "Allegro Duet",
        "text": "No Image, No Buttons, Autoloop, Autostart, Sharable",
        "duration": "PT2M55S",
        "media": [
          {
            "url": "https://contoso.com/media/AllegrofromDuetinCMajor.mp3"
          }
        ],
        "shareable": true,
        "autoloop": true,
        "autostart": true,
        "value": {
            // Supplementary parameter for this card
        }
      }
    }],
    "replyToId": "5d5cdc723"
}

Как только канал получит это вложение, он начнет воспроизведение звукового файла. Если пользователь взаимодействует со звуком, например, выбрав Пауза, канал отправит боту обратный вызов с json, который выглядит примерно так:

{
    ...
    "type": "event",
    "name": "media/pause",
    "value": {
        "url": // URL for media
        "cardValue": {
            // Supplementary parameter for this card
        }
    }
}

Имя события мультимедиа media/pause появится в поле activity.name. Список всех имен событий мультимедиа см. в таблице ниже.

Событие Описание
media/next Клиент перешел к следующему файлу мультимедиа.
media/pause Клиент приостановил воспроизведение мультимедиа.
media/play Клиент запустил воспроизведение мультимедиа.
media/previous Клиент перешел к предыдущему файлу мультимедиа.
media/resume Клиент возобновил воспроизведение мультимедиа.
media/stop Клиент остановил воспроизведение мультимедиа.

Дополнительные ресурсы