Добавление мультимедийных вложений в сообщения с помощью 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 | Клиент остановил воспроизведение мультимедиа. |