Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

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

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

  • OS: Linux/Windows

  • Go: 1.17+

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

Сборка из исходников

https://github.com/1C-Connect/1cconnect-text-bot

...

Note

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

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

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

...

Note

Данный бот отслеживает изменения конфигурации меню, содержимое можно менять “на горячую”, но стоит предварительно проверять через валидатор (например https://onlineyamltools.com/validate-yaml).

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

Info

Цифровое меню - это интерфейс в приложении 1С-Коннект, через который пользователь взаимодействует с ботом, воспроизведенном на вашем сервере.

...

  • Подготовить машину имеющую доступ в интернет и способную принимать HTTP запросы из интернета.

    • Лучшим выбором будет Linux, возможно использование виртуальной машины

  • Настроить пользователя API в кабинете администратора 1С-Коннект:

    • Раздел Администрирование -> Настройки API

    • Создать нового пользователя.

  • Включить опцию Внешний сервер для обработки данных в нужной линии:

    • Откройте в карточку линии и в разделе Чат-бот включите соответствующую настройку.

  • Необходимо получить ID линии для которой была включена внешняя обработка

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

  • Сконфигурировать и запустить приложение:

    • Создать конфигурационный файл. Пример лежит в файле config/config.yml.sample и отредактировать его.

    • Указать в блоке server адрес к серверу на котором развернут бот.

...

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

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

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

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

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

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

...

Code Block
buttons:
  - button:
      id: 1 # Нажатие на эту кнопку переведёт в nested_menu
      text: 'Текст кнопки'
      chat: 'Сообщение'
      menu:
        id: 'nested_menu'
        ...

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

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

...

Code Block
greeting_message: 'Здравствуйте.'

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

Code Block
buttons:
  - button:
      id: 1
      text: 'Текст кнопки'
      chat:
        - chat: 'Сообщение'

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

Code Block
buttons:
  - button:
      id: 1
      text: 'Текст кнопки'
      chat:
        - file: 'file.pdf'
          file_text: 'Сопроводительное сообщение к файлу.'

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

Code Block
buttons:
  - button:
      id: 9
      text: 'Закрыть обращение'
      close_button: true

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

Code Block
buttons:
  - button:
      id: 0
      text: 'Перевести на специалиста'
      redirect_button: true

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

Способ №1

Code Block
menus:
  start:
    answer:
      - chat: 'Здравствуйте.'
    buttons:
      - button:
          id: 1
          text: 'a'
          menu:
            id: 'новое_меню'
            answer:
              - chat: 'welcome'
            buttons:
              - button:
                  id: 1
                  text: 'Текст кнопки'
  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: 'Закрыть обращение'

Способ №2

Code Block
menus:
  start:
    answer:
      - chat: 'Здравствуйте.'
    buttons:
      - button:
          id: 1
          text: 'a'
          goto: 'новое_меню'

  новое_меню:
    answer:
      - chat: 'welcome'
    buttons:
      - button:
          id: 1
          text: 'Текст кнопки'

  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: 'Закрыть обращение'

...