Изображения в ответе навыка

Ваш навык может отвечать пользователю картинками. Яндекс.Диалоги поддерживают два способа встраивания картинок:

  • Отдельное изображение с опциональными заголовком, описанием и кнопками (в ответе навыка — свойство card с типом BigImage).
  • Изображения в списке вариантов (в ответе навыка — свойство card с типом ItemList). Для каждого варианта обязателен только текст — вы можете добавить иллюстрации только к тем пунктам списка, которые вы хотите проиллюстрировать.

Чтобы использовать картинки в ответах навыка:

  1. Загружайте нужные изображения на Яндекс.Диалоги с помощью описанного ниже API.

    Внимание. Ограничения на загрузку изображений:
    • Для одного аккаунта Яндекса можно загрузить не больше 100 МБ изображений.
    • Каждый файл должен быть размером не менее 1 КБ и не более 1 МБ.
  2. Ссылайтесь на загруженные изображения, формируя ответы согласно протоколу.

  1. Авторизация
  2. Проверить занятое место
  3. Загрузить изображение из интернета
  4. Загрузить файл изображения
  5. Получить список загруженных изображений
  6. Удалить изображение

Авторизация

Загружать картинки для навыка можно только от имени пользователя Яндекса, который создал этот навык в Диалогах. Для этого нужно получить OAuth-токен для Диалогов. Полученный токен необходимо указывать в каждом запросе к Диалогам, в заголовке Authorization:

Authorization: OAuth ARAAAAAB5vpbAAQ7o9abBlrUn0nshvcHZE4Irhw

Чтобы работать с изображениями для определенного навыка, нужно передавать его идентификатор в запросах. Идентификатор навыка можно получить из его адреса на Яндекс.Диалогах, например:

https://dialogs.yandex.ru/developer/skills/46s2f034-75d2-464b-a077-df73cfar05c1

Проверить занятое место

Для каждого аккаунта Яндекса на Диалоги можно загрузить не больше 100 МБ картинок. Чтобы узнать, сколько места уже занято, отправьте следующий запрос:

GET /api/v1/status

Host: https://dialogs.yandex.net
Authorization: OAuth <OAuth-токен>
curl
curl \
  -H 'Authorization: OAuth <OAuth-токен>' \
  'https://dialogs.yandex.net/api/v1/status'

Диалоги пришлют в ответе общий доступный объем для изображений и занятый объем:

{
  "images": {
    "quota": {
      "total": 104857600,
      "used": 902356
    }
  }
}

Загрузить изображение из интернета

Чтобы загрузить картинку для вашего навыка из интернета, передайте ее URL в запросе:

POST /api/v1/skills/<идентификатор навыка>/images

Host: https://dialogs.yandex.net
Authorization: OAuth <OAuth-токен>
Content-Type: application/json

{ "url": "<адрес изображения>" }
curl
curl \
  -H 'Authorization: OAuth <OAuth-токен>' \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{ "url": "<адрес изображения>" }' \
  'https://dialogs.yandex.net/api/v1/skills/<идентификатор навыка>/images'

Если картинку удалось скачать, Диалоги пришлют в ответе идентификатор изображения и адрес оригинала:

{
  "image": {
    "id": <идентификатор изображения>,
    "origUrl": <URL изображения>
  }
}

Загрузить файл изображения

Чтобы загрузить файл картинки для вашего навыка, передайте его в запросе:

POST /api/v1/skills/<идентификатор навыка>/images

Host: https://dialogs.yandex.net
Authorization: OAuth <OAuth-токен>
Content-Type: multipart/form-data

<содержимое файла>
curl
curl \
  -H 'Authorization: OAuth <OAuth-токен>' \
  -H 'Content-Type: multipart/form-data' \
  -X POST \
  -F file=@<путь к файлу> \
  'https://dialogs.yandex.net/api/v1/skills/<идентификатор навыка>/images'

Если Диалоги успешно получили картинку, в ответе придет идентификатор изображения и имя загруженного файла:

{
  "image": {
    "id": <идентификатор изображения>,
    "origUrl": <URL изображения>
  }
}

Получить список загруженных изображений

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

GET /api/v1/skills/<идентификатор навыка>/images

Host: https://dialogs.yandex.net
Authorization: OAuth <OAuth-токен>
curl
curl \
  -H 'Authorization: OAuth <OAuth-токен>' \
  'https://dialogs.yandex.net/api/v1/skills/<идентификатор навыка>/images'

Диалоги возвращают список изображений, загруженных для навыка:

{
  "images": [
    {
      "id": <идентификатор изображения>,
      "origUrl": <URL изображения>
    },
    ...
  ]
} 

Удалить изображение

Чтобы удалить загруженное изображение отправьте его идентификатор в запросе DELETE:

DELETE /api/v1/skills/<идентификатор навыка>/images/<идентификатор изображения>

Host: https://dialogs.yandex.net
Authorization: OAuth <OAuth-токен>
curl
curl \
  -H 'Authorization: OAuth <OAuth-токен>' \
  -X DELETE \
  'https://dialogs.yandex.net/api/v1/skills/<идентификатор навыка>/images/<идентификатор изображения>'

Если изображение указано верно, и было успешно удалено, Диалоги возвращают ответ:

{
  "result": "ok"
}