Перейти к содержанию

Интеграция VK Assistant с VK Teams

Общая информация

В случае интеграции VK Assistant и VK Teams зачастую требуется, чтобы бот в VK Teams, связанный с VK Assistant, добавлялся автоматически при логине пользователя в VK Teams.

При этом возможны два сценария:

  1. Пользователь входит в VK Teams, выполняется проверка на наличие бота, и при его отсутствии отправляется запрос в VK Assistant на приветствие. VK Assistant через бота отправляет приветственное сообщение (не создавая у себя сессию) и ждёт вопросов от пользователя.
  2. Пользователь входит в VK Teams, выполняется проверка на наличие бота, и при его отсутствии отправляется запрос в VK Assistant. VK Assistant создаёт сессию с заданным сценарием и через бота начинает диалог.

Шаг 1. Создание бота в VK Teams

На DEV/TEST окружении возможно создание бота через интерфейс VK Teams в @metabot. Однако на PROD рекомендуется пользоваться способом, указанным в данном разделе.

Выполнить команду:

/usr/local/bin/add_bot.sh 1000000001 da_bot Помощник da_bot_token 1 /usr/local/myteam/ic_task_notification.png

, где:

  • 1000000001 — uin;
  • da_bot — nick;
  • Помощник — name;
  • da_bot_token — указать nick+"_token";
  • 1 — право писать первым;
  • /usr/local/myteam/ic_task_notification.png — путь до аватара бота.

Вывод команды будет следующим:

* rapi setNick for 1000000001 to da_bot
da_bot: rapiSetNick ok, nick updated
001.1234578135.7777751343:1000000001

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

Шаг 2. Подключение бота VK Teams к VK Assistant

Для подключения бота, созданного в VK Teams, необходимо настроить следующие переменные окружения в компоненте core bots:

  • MY_TEAM — при использовании VK Teams — true.

  • MY_TEAM_DEBUG — для включение отладки — true.

  • MY_TEAM_TOKEN — токен бота, например, 001.1234578135.7777751343:1000000001.
  • MY_TEAM_DOMAIN — адрес Bot API, например, https://api.vkteams.<YOUR_DOMAIN>.ru/bot/v1.
  • GENERATE_BOT_USERS — автосоздание пользователей, пришедших в VK Assistant через бот — true.

  • MYTEAM_DIRECT_MESSAGE_TOKEN — секретный токен, генерируется случайным образом с необходимым уровнем сложности и задаётся при необходимости автоматического добавления бота пользователям.

Шаг 3. Настройка автоматического добавления бота при входе пользователя

В сервисе Boss в VK Teams выполняются следующие настройки (более подробная и актуальная информация в документации VK Teams):

  1. В /usr/local/nginx-im/html/myteam/myteam-config.json добавить:

    • digital-assistant — ID бота при его наличии, например 1000000001. Если значение пустое, значит считаем, что в данной инсталляции VK Teams нет VK Assistant.
    • digital-assistant-search-positioning — позволяет включить или отключить пин бота при клике на поиск, например, true.
  2. Применить:

    kubectl delete pod myteam-admin-* -n vkteams
    

    , где: * — уникальное имя пода. Имя пода необходимо получить с помощью вывода команды:

    kubectl get pods -A | grep admin
    
  3. Конфигурируется только сервис Boss, либо через командный порт, либо в imagine разделе конфигурационного файла (bos_pre.tcl):

    • digital_assistant_id — id бота — последние цифры токена, выданного при создании бота, например, 1000000001.
    • digital_assistant_auth_token — токен для хедера authorization, значение переменной окружения MYTEAM_DIRECT_MESSAGE_TOKEN компонента core/api VK Assistant.
    • digital_assistant_hostname — хост и порт VK Assistant, например, https://da.<YOUR_DOMAIN>.ru.
    • digital_assistant_fetch_events_endpoint — эндпоинт до VK Assistant, например, /core/api/Users/greet/myTeam/.
    • digital_assistant_tout — таймаут коннекта в секундах (по умолчанию 10).

    Внести полученные параметры и выполнить скрипт однострочник, применяющий конфигурацию:

    for port in $(pgrep bos_srv -a | sed -r 's/^.*-p ([0-9]+) .*/\1/g'); do \
    echo "cp set digital_assistant_id 1000000001" | /usr/local/bin/cpsh $port; \
    echo "cp set digital_assistant_auth_token myteamdirecttoken" | /usr/local/bin/cpsh $port; \
    echo "cp set digital_assistant_hostname https://da.вашдомен.ru" | /usr/local/bin/cpsh $port; \
    echo "cp set digital_assistant_fetch_events_endpoint /core/api/Users/greet/myTeam" | /usr/local/bin/cpsh $port; \
    echo "cp set digital_assistant_enabled true" | /usr/local/bin/cpsh $port; \
    echo "cp set digital_assistant_tout 7" | /usr/local/bin/cpsh $port; \
    done
    

    Внимание

    Рестарт сервера или сервисов Boss приведет к сбросу установленных значений до дефолтных.

  4. Для закрепления полученного результата при рестарте сервисов Boss необходимо дополнить конфигурационный файл /srv/oap/bos_pre.tcl в блоке set imagine_config:

    set imagine_config "
    digital_assistant_id 1000000001
    digital_assistant_auth_token myteamdirecttoken
    digital_assistant_hostname https://da.<YOUR_DOMAIN>.ru
    digital_assistant_fetch_events_endpoint /core/api/Users/greet/myTeam
    digital_assistant_enabled true
    digital_assistant_tout 7
    

    Проверить конфигурацию можно так:

    cpsh 4323
    cp get digital_assistant_id
    cp get digital_assistant_hostname
    cp get digital_assistant_fetch_events_endpoint
    cp get digital_assistant_enabled
    cp get digital_assistant_tout
    

Прочие настройки сервиса Boss:

  1. digital_assistant_kick_on_session_start — проверять наличие бота у пользователя только на логине учетки (по умолчанию false).
  2. digital_assistant_kick_on_fetch_events — проверять наличие бота у пользователя постоянно, до тех пор, пока он не добавится (по умолчанию false).

Настройка добавления бота с созданием новой сессии в VK Assistant:

Вместо digital_assistant_fetch_events_endpoint следует использовать digital_assistant_session_start_endpoint /core/api/Sessions/startServiceSession.