17  /  80

Работа с клавиатурами

Просмотров: 2522 (Статистика ведётся с 06.02.2017)

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


Как клавиатуру добавить к чат-боту

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

Методы, которые поддерживают клавиатуру:

Рассмотрим на примере это сообщение:

restCommand('imbot.command.answer', Array(
   "COMMAND_ID" => $command['COMMAND_ID'],
   "MESSAGE_ID" => $command['MESSAGE_ID'],
   "MESSAGE" => "Hello! My name is EchoBot :)[br] I designed to answer your questions!",
   "KEYBOARD" => Array(
      Array(
        "TEXT" => "Bitrix24",
        "LINK" => "http://bitrix24.com",
        "BG_COLOR" => "#29619b",
        "TEXT_COLOR" => "#fff",
        "DISPLAY" => "LINE",
      ),
      Array(
        "TEXT" => "BitBucket",
        "LINK" => "https://bitbucket.org/Bitrix24com/rest-bot-echotest",
        "BG_COLOR" => "#2a4c7c",
        "TEXT_COLOR" => "#fff",
        "DISPLAY" => "LINE",
      ),
      Array("TYPE" => "NEWLINE"), // перенос строки
      Array("TEXT" => "Echo", "COMMAND" => "echo", "COMMAND_PARAMS" => "test from keyboard", "DISPLAY" => "LINE"),
      Array("TEXT" => "List", "COMMAND" => "echoList", "DISPLAY" => "LINE"),
      Array("TEXT" => "Help", "COMMAND" => "help", "DISPLAY" => "LINE"),
   )
), $_REQUEST["auth"]);

Примечание: функция restCommand - это метод отправки данных в Битрикс24, данный метод есть в примере ЭхоБота, и представлен здесь в качестве примера. Вы можете использовать свою функцию или javascript-метод BX24.callMethod или bitrix24-php-sdk.

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

  • TEXT - текст кнопки;
  • LINK - ссылка;
  • COMMAND - команда, которая будет отправлена боту;
  • COMMAND_PARAMS - параметры для команды;
  • BG_COLOR - цвет кнопки;
  • BLOCK - если указать Y, то после клика на одну кнопку блокироваться будет вся клавиатура;
  • DISABLED - если указать Y, то данная кнопка не будет кликабельной;
  • TEXT_COLOR - цвет текста;
  • DISPLAY - тип кнопки. Если указан тип BLOCK, то на одной строчке может быть только эта кнопка. Если указан тип LINE, то кнопки будут выстроены друг за другом;
  • WIDTH - ширина кнопки. Обратите внимание, для максимального удобства набор кнопок в одну линию не рекомендуется делать более 225 пикселей, это максимальная ширина на мобильном устройстве.
  • APP_ID - идентификатор установленного приложения для чата.
  • APP_PARAMS - параметры для запуска приложения для чата.

Обязательными полями является TEXT и либо поле LINK, либо поле COMMAND.

Если указан ключ LINK, то кнопка становится внешней ссылкой. Если указаны поля COMMAND и COMMAND_PARAMS, то кнопка является действием и отправляет команду чат-боту, не публикуя ее в чат.

Если указаны поля APP_ID и APP_PARAMS, то кнопка откроет окно с приложением для чата.

Если необходимо сделать две строки с кнопками в ряд, то для их разделения нужно добавить кнопку со следующим содержимым: "TYPE" => "NEWLINE".



Обработка команд чат-ботом

Для обработки нажатия кнопок клавиатуры, используются команды.

  1. Для того, чтобы команда отрабатывала в клавиатуре (и не только), необходимо ее предварительно зарегистрировать через метод imbot.command.register (чтобы команда была доступна только для клавиатуры, необходимо создать ее с ключом "HIDDEN" => "Y").

    В кнопке указывается следующие ключи:

    "COMMAND" => "page", // команда, которая будет отправлена чат-боту 
    "COMMAND_PARAMS" => "1", // параметры для команды
    
  2. Нажатие на кнопку сгенирирует событие ONIMCOMMANDADD.

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

  4. Внутри события, в массиве [data][COMMAND] будут переданы данные о вызванном событии. В нем появилось новое значение COMMAND_CONTEXT - это специальный ключ, описывающий в каком контексте была вызвана команда:
    • если команду написал пользователь самостоятельно, там будет TEXTAREA;
    • если команда пришла из клавиатуры или контекстного меню, то будет KEYBOARD.

Готовый пример, можно посмотреть в обновленной версии ЭхоБота,



Обработка открытия приложения для чата

Приложение для чата, запускаемые из контекстного меню, работают по принципам Контекстного приложения.



Примеры использования клавиатуры


  1. EchoBot
    Постраничная навигация, кнопки при вызове команды «Помощь»

  2. Марта
    Просто напишите марте Поиграй со мной!. Клавиатура используется как игровое поле:

  3. Giphy
    Кнопка Еще позволяет без повторного введения поискового слова просматривать другие картинки на эту же тему:



1
Курсы разработаны в компании «1С-Битрикс»