25  /  169

Работа с контекстным меню

Просмотров: 12248
Дата последнего изменения: 16.05.2022
Александр Суворов
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
1
2
3
4
5

Контекстное меню

Контекстное меню позволит пользователю взаимодействовать с чат-ботом или приложением для чата из контекстного меню сообщения.

Как добавить свои пункты в контекстное меню

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

Методы, которые поддерживают контекстное меню:

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

restCommand('im.message.add', Array(
   "DIALOG_ID" => 12,
   "MESSAGE" => "Hello! Message with context menu!",
   "MENU" => Array(
      Array(
        "TEXT" => "Bitrix24",
        "LINK" => "http://bitrix24.com",
      ),
      Array(
         "TEXT" => "Echo", 
         "COMMAND" => "echo", 
         "COMMAND_PARAMS" => "test from keyboard"
      ),
      Array(
         "TEXT" => "Open app", 
         "APP_ID" => "12", 
         "APP_PARAMS" => "TEST"
      ),
   )
), $_REQUEST["auth"]);

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

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

  • TEXT - текст кнопки;
  • LINK - ссылка;
  • COMMAND - команда, которая будет отправлена боту;
  • COMMAND_PARAMS - параметры для команды;
  • APP_ID - идентификатор установленного приложения для чата.
  • APP_PARAMS - параметры для запуска приложения для чата.
  • DISABLED - если указать Y, то данная кнопка не будет кликабельной.
  • ACTION - действие, может быть одно из следующих типов (REST ревизии 28):
    • PUT - вставить в поле ввода.
    • SEND - отправить текст.
    • COPY - копировать текст в буфер обмена.
    • CALL - позвонить.
    • DIALOG - открыть указанный диалог.
  • ACTION_VALUE - значение, для каждого типа означает свое (REST ревизии 28):
    • PUT - текст, который будет вставлен в поле ввода.
    • SEND - текст, который будет отправлен.
    • COPY - текст, который будет скопирован в буфер обмена.
    • CALL - номер телефона в международном формате.
    • DIALOG - идентификатор диалога, это может быть ID пользователя, либо ID чата в формате chatXXX.

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

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

Если указаны поля 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;
    • если команда пришла из контекстного меню, то будет MENU.


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

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



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