Перейти к содержанию

Кнопки, изображения, подсказки в Диалогах: различия между версиями

Материал из Wiki yaboard
м правка текста
м правка текста
Строка 441: Строка 441:


{{#spoiler:show=Показать ответ | hide=Спрятать ответ |  
{{#spoiler:show=Показать ответ | hide=Спрятать ответ |  
<json>
{  
{  
   "response": {
   "response": {
Строка 474: Строка 473:
   "version": "1.0"
   "version": "1.0"
  }  
  }  
</json>
}}
}}



Версия от 09:40, 6 декабря 2019


Статья представляет собой адаптированный текст Стаса Серебренникова "Разбираем кнопки в Яндекс.Диалогах" и отлично дополняет документацию для диалогов Алисы простыми и наглядными примерами, включая нюансы отображения, а также запросы и ответы в json-формате.


К концу статьи мы научимся делать такие красивые меню, а для начала условимся называть кнопки c параметром "hide": true подсказками (suggests), и напомним, за что согласно официальной справке отвечают два других важных параметра:

  • url - ссылка, которую надо открыть при клике по картинке (не длиннее 1024 байт).
  • payload - любые данные в JSON-формате, которые по клику будут отправлены в Навык (не более 4096 байт).

Кнопка с url и payload

При нажатии откроется ссылка, указанная в параметре url.

<button type="button" class="spoilers-button" aria-expanded="false">Показать ответ (JSON)</button>


При нажатии кнопки диалог остановится и отправит в навык такой запрос:

<button type="button" class="spoilers-button" aria-expanded="false">Показать запрос</button>


Этот запрос можно использовать для сбора метрики (пользователь открыл сайт нажатием именно этой кнопки).

 Во время написания статьи обнаружен баг: запрос от кнопки с payload + url приходил только от Алисы в Яндекс.Браузере.
 Из мобильных клиентов запросы не приходили.

Подсказка с url и payload

При нажатии откроется ссылка, указанная в параметре url, и будет отправлен в навык запрос payload.

<button type="button" class="spoilers-button" aria-expanded="false">Показать ответ</button>
Как видим, ответ отличается только одной строкой ("hide": true), и в запросе здесь проявляется тот же баг с мобильными клиентами.

Кнопка с url

Кнопка и подсказка без payload визуально ничем не отличается от предыдущей.

Их различие - в действиях: по нажатию кнопка просто откроет ссылку (в навык ничего не отправится).

<button type="button" class="spoilers-button" aria-expanded="false">Показать ответ</button>

Подсказка с url

Подсказка без payload тоже не отправляет ничего в навык.

<button type="button" class="spoilers-button" aria-expanded="false">Показать ответ</button>

Кнопка с payload

<button type="button" class="spoilers-button" aria-expanded="false">Показать ответ</button>

В этом случае (указан только payload) запрос ButtonPressed приходит корректно со всех устройств:

<button type="button" class="spoilers-button" aria-expanded="false">Показать запрос</button>

Подсказка с payload

<button type="button" class="spoilers-button" aria-expanded="false">Показать ответ</button>

Так же, как в предыдущем случае, запрос приходит со всех устройств:

<button type="button" class="spoilers-button" aria-expanded="false">Показать запрос</button>

Галерея картинок в кнопках

У всех кнопок указан параметр url и payload, и их поведение аналогично кнопкам из пунктов 1 и 2.

<button type="button" class="spoilers-button" aria-expanded="false">Показать ответ</button>


При этом можно добавить и подсказки! Однако обычные кнопки добавить не получится, придется довольствоваться одной кнопкой в footer.

footer и header указывать необязательно.

Галерея картинок в кнопках с подсказками

Под списком картинок выводится подсказка.

<button type="button" class="spoilers-button" aria-expanded="false">Показать ответ</button>

В данном случае при нажатии на кнопку в чат отправится её текст, а в навык - запрос ButtonPressed с её payload.

Карточка с кнопкой и подсказкой

Вывод подсказки под карточкой с изображением.

Как и для списка, для карточки тоже можно добавить подсказки. Обычные кнопки отображаться не будут.

<button type="button" class="spoilers-button" aria-expanded="false">Показать ответ</button>

Поведение кнопок полностью соответствует предыдущим примерам и зависит от наличия/отсутствия параметров url/payload.


Удачи в создании красивых и полезных Навыков!