Оправка изображений, стикеров и видео в боте




Приложение 2. Паттерны разработки

Общие рекомендации

Нумерация темсценариев

В заголовке сценария рекомендуется указывать порядковый номер По темам рекомендуемая нумерация и наименование – в наименование порядковый номер. Приоритет = номер * 1000. Например, 1 => 1000, 1.2 => 1200, т.д.для удобства коммуникаций в ходе настройки.

Нумерация команд

По командам – приоритеты с шагом в 100.

Структура меню

  1. Каждая тема должна включать кнопку В начало, которая ведет к главному меню.
  2. Рекомендуется уровень вложенности не более трех (главное меню, меню для областираздела, и конкретная операции).
  3. В случае, если тема, вложенная более, чем на уровень 2, то должна быть кнопка, возвращающая к предыдущему действию

Первичная инициализация бота

В разных каналах инициализация бота идет по-разному. Например, в Telegram приходит текст /start. И пользователь бота ожидает, что отправка /start в любой момент приведет к перезапуску бота. Поэтому надо обеспечить, чтобы инициализация выполнялась и по первой фразе и по тексту /start.

Сложность в том, что при первом вызове тема может быть вызвана дважды: через инициализацию и по тексте. Решается это следующим образом:

  1. В начале стартовый темы устанавливается признак IsHelloShown = 1
  2. После установки признака запускается таймер на минуту для вызова темы [Очистка признака Hello] (код ResetHello)
  3. В теме [Очистка признака Hello] устанавливать IsHelloShown = 0

Формы сбора данных

Частой бизнес задачей является получение данных от клиента. Для решения задачи предназначена команда Получение данных.

В зависимости от формата запрашиваемых данных могут применяться следующий варианты:

  1. Получение произвольного текста

В случае запроса произвольного текста используется команда получения данных с пустым значением регулярного выражения.

  1. Получение текста по шаблону

Применяется если шаблон может быть проверен через регулярные выражения. Такое регулярное выражение указывается для команды получения данных.

  1. Получение текста со сложной проверкой

В таком сценарии командой Получения данных запрашивается строка без проверки формата. А затем в отдельном сценарии проводиться проверка полученного значения требуемыми алгоритмами.

Взаимодействие с внешними API

Для этого используется следующий паттерн:

  1. Задаются две темы.
    1. Тема А, указывающая что клиент должен ввести.

Например, «укажите Ваше ФИО»

    1. Тема Б, получающая данные
  1. Обработка текста клиента осуществляется следующим образом
    1. В теме А отражается запрос информации
    2. Для темы Б указывается логическое условие, что она выполняется после темы A (Последняя тема = “Тема А”)
    3. В события добавляется событие на произвольное сообщение клиента (маска *) для темы Б
  2. В самой теме Б выполняется необходимая обработка полученной информации.
  3. При последовательном сборе данных в каждую тему включается условие ее выполнения после предыдущей.

 

Обработка вопроса (текста) по умолчанию

В каждом боте необходимо реализовать ветку обработки текста, который не ожидается ботом. Для этого надо сделать событие на произвольный текст (шаблон *) и установить его последним по приоритету.

Такая тема должна:

  1. Переходить к основному поиску, если основной функцией бота является поиска (пример, поиск лекарств для Marko бота, поиск услуг для оплаты для Фрисби бота)
  2. Отражать текст о том, что бот не понял вопрос, и кнопку для перехода к основным функциям для бота.
  3. Отражать текст о том, что бот не понял вопрос, и переводить на оператора, если есть чат-центр

Как избавиться от текста «Выберите»

Выберите отражается по умолчанию, если при отправке кнопок не было ни одного текста. Вы можете до отправки кнопок отправить текстовое сообщение. Кнопки будут автоматически к нему присоединены. И текста "Выберите" не будет

Оправка изображений, стикеров и видео в боте

Для отправки изображений, стикеров и видео Sherlock Platform поддерживает дополнительные смарт теги:

  1. Для отправки изображения (или другого вложения) в тексте сообщения бота или шаблона можно использовать тег:

{"“tag_type"”:"image", "“title"”:"Пример фото", "“image_link"”:"” url_изображения "”}, где

tag_type – всегда image,

title – произвольное название изображения для пользователя,

image_link – ссылка на изображение

Имя файла в боте при этом может вычисляться через переменные. Например: {"“tag_type"”:"image", "“title"”:" #photo_name# ", "“image_link"”:"” #photo_url# "”}

Основное отличие применения данной функции от просто отправки ссылки в том, что файл обрабатывается и направляется в мессенджер как вложение. В зависимости от мессенджера просто ссылка и отправленный файл обрабатываются и отражаются мессенджером по различной логике.

  1. Специальная отправка видео сейчас поддерживается для ВКонтакте. Необходимость такой поддержки связана с тем, что при отправке видео как вложения или ссылки ВКонтакте не отражает плеер для видео.

Для отправки видео в родном формате ВКонтакте необходимо использовать смарт тег следующего формата:

{"“tag_type"”:"video", "“title"”:"Пример видео", "“video_vk_code"”:"53921536_456239079", "“video_link"”:"”url_видео", "video_vk_hash":"hash_видео_ВК"” }, где

tag_type – всегда video,

title – произвольное название видео для пользователя,

video_link – ссылка на видео для каналов, кроме ВКонтакте,

video_vk_code – идентификатор видео, загруженного ВКонтакте. Для получения данного идентификатора необходимо загрузить требуемое видео в группу и взять идентификатор из ссылки https://vk.com/video-134183993_456239025

video_vk_hash – необходимо для встраивания видео внутрь Sherlock

  1. Для отправки стикеров в Телеграм реализован смарт тег следующего формата

{"“tag_type"”:"sticker", "“title"”:"Пример стикера", "“sticker_tg_code"”: "CAADAgADCQMAAkb7rASr28NYSp2EigI", "“image_link"”:"” url_изображения "”}, где

tag_type – всегда sticker,

title – произвольное название стикера для пользователя,

sticker_tg_code – стикер для отправки. Строка с file_id файла, ранее загруженного на сервера Телеграмм (рекомендуется), или URL изображения.webp файла в Интернет, или непосредственно файл в формате multipart/form-data,

image_link – ссылка на избражение для каналов, кроме Telegram.

Для получения file_id стикера есть простой бот https://telegram.me/GetStickerIdBot

 

 

Поиск по XML с учетом Namespace

/*[local-name()='My_RootNode']/*[local-name()='id']

Смотри https://stackoverflow.com/questions/1089196/selectsinglenode-returning-null-for-known-good-xml-node-path-using-xpath

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: