4.3.3. Инструкция как запустить бота (для цифрового меню)?

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

 

Данная инструкция касается только конкретного примера бота и не распространяется на собственные реализации.

Требования к окружению

  • OS: Linux/Windows

  • Go: 1.22+

Сборка и запуск

Сборка из исходников и актуальная документация

GitHub - 1C-Connect/1cconnect-text-bot: Бот с произвольным текстовым меню

./build.sh

Сборка требует установленного окружения!
Installing Go

Запуск собранной версии

./connect-text-bot --config=config.yml --bot=bot.yml

Где:

  • --config - путь к конфигу (путь по умолчанию - ./config/config.yml).

  • --bot - путь к конфигу бота (путь по умолчанию - ./config/bot.yml).

Данный бот отслеживает изменения конфигурации меню, содержимое можно менять “на горячую”, но стоит предварительно проверять через валидатор (например Validate YAML - Online YAML Tools).

Разворачивание бота

Для корректной работы необходимо выполнить следующие требования и действия:

  • Указать логин/пароль ранее созданного пользователя API.

    • Указать ID линии в разделе lines, можно указывать несколько линий.

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

    • Приложение может быть запущено с указание путей к соответствующим файлам.

Конфигурация меню

Конфигурационный файл представляет собой yml файл вида:

menus: start: answer: - chat: 'Здравствуйте.' buttons: - button: id: 1 text: 'a' - button: id: 2 text: 'b' - button: id: 3 text: 'nested' menu: id: 'nested_menu' answer: - chat: 'Welcome to nested menu.' buttons: - button: id: 1 text: 'get information' chat: - chat: 'information' - button: back_button: true - button: id: 4 text: 'send file' chat: - file: 'file.pdf' file_text: 'you received file!' final_menu: answer: - chat: 'Могу ли я вам чем-то еще помочь?' buttons: - button: id: 1 text: 'Да' goto: 'start' - button: id: 2 text: 'Нет' chat: - chat: 'Спасибо за обращение!' close_button: true - button: redirect_button: true back_button: id: 8 text: 'Назад' redirect_button: id: 0 text: 'Соединить со специалистом' close_button: id: 9 text: 'Закрыть обращение' error_message: 'Команда неизвестна. Попробуйте еще раз'
  • Конфигурация состоит из различных меню. Меню start - появляется после первого сообщения от пользователя. final_menu - резюмирует диалог.

  • Каждое меню состоит из блоков answer и buttons.

  • Блок answer отвечает за сообщение при переходе на данный раздел. При переходе между меню есть возможность отправить текст:

Или файл:

Или несколько сообщений и файлов:

Также при нажатии на кнопку есть возможность отправить несколько сообщений или файлов:

Блок buttons - представляет собой список кнопок на данном уровне. У кнопки обязательно должен текст text.

Если у кнопки нет пункта goto, то после нажатия на неё будет совершен переход в final_menu.

Если у кнопки есть пункт menu, то после нажатия на неё будет совершен переход в подменю.

Настройки по умолчанию

Для специальных пунктов меню:

back_button - описывает кнопку “Назад”, которая переводит меню на уровень назад.

close_button - описывает кнопку “Закрыть обращение”, которая завершает работу с обращением.

redirect_button - описывает кнопку “Перевести на специалиста”, которая переводит работу из бот-мению на свободного
специалиста или ставит обращение в очередь, если нет свободных специалистов.

Можно задать описания по умолчанию:

Если в конфиге отсутствует final_menu будет использовано меню по умолчанию:

Если в конфиге отсутствует error_message будет использовано сообщение по умолчанию:

Можно сделать сделать так, чтобы бот здоровался только один раз.

Для этого необходимо добавить следующую строчку в конфиг бота (файл bot.yml):

А также задать текст приветственного сообщения (файл bot.yml):

Как отправить текст:

Как отправить файл:

Как закрыть обращение:

Как перевести обращение на свободного специалиста:

Как перевести на конкретного специалиста:

Как перевести на случайного специалиста из списка:

Как перевести обращение на другую линию:

Как выполнить команду на стороне сервера:

В команду можно передать данный относящиеся к структуре объекта User в формате {{ .User.НазваниеПоля }}

Скрипт example.sh имеет следующее содержание

Не забудьте сделать скрипт исполняемым

Как создать меню?

Способ №1

Способ №2