Пишем умного консультанта для сайта с открытыми линиями Битрикс24

Пишем умного консультанта для сайта с открытыми линиями Битрикс24
Пишем умного консультанта для сайта с открытыми линиями Битрикс24

  1. Введение: зачем нужны нейросети в открытых линиях
  2. Как это работает
  3. Создаем бота в Битрикс24
  4. Создаем открытую линию, добавляем туда чат - бота и устанавливаем виджет онлайн - чата на сайт
  5. Работаем с API ChatGPT
  6. Создаем функционал для обращений к ChatGPT
  7. Подключаем ChatGPT к боту открытых линий
  8. Заключение

Данная статья рассказывает о простом примере реализации чат - бота с подключенным ИИ от OpenAI. Функционал, о котором пойдет речь не является полной и подробной реализацией того, что было написано мной - он предназначен для того, чтобы реализовать минимальный функционал работы. При желании его можно и нужно улучшать и расширять.

Введение: зачем нужны нейросети в открытых линиях

Представьте себе сценарий: сотрудник компании, ответственный за взаимодействие с клиентами на сайте, конец рабочего дня, 4 онлайн чата. Как ответить всем клиентам одновременно и ничего не перепутать? И домой при этом во время уйти ! Вот тут на помощь и приходят нейросетевые технологии - современные технологии, основанные на искусственных нейронных сетях. В этом сценарии они помогут разгрузить работу сотрудника по общению с клиентами, а в некоторых случаях и вовсе заменить. Клиенты останутся довольны быстрым ответом, сотрудник доволен тем что ушел домой во время, и в целом всем будет хорошо :)  

Нейросетевые технологии

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

Такие технологии лежат в основе современных достижений вроде распознавания речи и изображений, автоматического перевода, генерации текста и изображений, анализа медицинских снимков, прогнозирования спроса и управления автономным транспортом. Благодаря им работают голосовые помощники, системы рекомендаций на платформах вроде Яндекса или YouTube, а также инструменты для обработки естественного языка. Нейросетевые технологии продолжают быстро развиваться, становясь всё более точными и универсальными, и играют ключевую роль в цифровой трансформации бизнеса, науки и повседневной жизни.

Открытые линии

Открытые линии в Битрикс24 - это инструмент для централизованного управления всеми входящими сообщениями от клиентов из разных каналов: мессенджеров, социальных сетей и онлайн-чата на сайте. Все обращения поступают в единый интерфейс CRM, где их видят ответственные сотрудники, что исключает потерю запросов и ускоряет реакцию.

Применение технологии нейросетей в совокупности с открытыми линиями помогает ускорить время реакции на сообщение клиента: нейросеть способна отвечать круглосуточно и практически без задержек. Для того чтобы ответы нейросети были адекватными по заданной специфичной области вопроса, предварительно ее можно дообучить или использовать готовые решения, как например Assistant API для ChatGPT. Правильно обученная нейросеть может вообще заменить собой человека - консультанта, ответственного за ответы на сообщения клиентов на корпоративном сайте. В случае, если у ИИ нет ответа на запрос клиента - тогда можно подключать к чату "живого" консультанта для решения более сложных вопросов. В этом кейсе мы этим и займемся - разберем как самому написать онлайн - консультанта на основе ИИ с подключением его к открытым линиям Битрикс24.

Как это работает

Однажды один из моих клиентов, активно использующих ChatGPT и Битрикс24, попросил написать ему такой код, чтобы консультант на основе ChatGPT мог отвечать клиентам обратившимся через виджет открытых линий на сайте автоматически без участия человека. Клиент пишет в онлайн - чат на сайте, сообщение отправляется к созданному в OpenAI ассистенту, ассистент создает диалог, обрабатывает сообщение и выдает ответ. В случае, если клиент пишет второе сообщение в тот же чат, контекст не должен теряться.

Работает это так:

  • В Битрикс24 создается Бот
  • Этот бот добавляется в чат открытых линий Битрикс24
  • Когда клиент обращается в чат на сайте, сообщение принимает бот 
  • Проверяет, был ли создан диалог ранее, получает данные диалога 
  • С помощью специально написанных функций транслирует сообщения клиента к Assistant API ChatGPT, если этот диалог ранее транслировался - передаются параметры предыдущего диалога
  • При получении ответа от Assistant API ChatGPT, бот переправляет ответ клиенту.
  • Если клиент хочет обратиться непосредственно к живому оператору и поговорить с человеком - бот передает диалог оператору

Создаем бота в Битрикс24

Создаем скрипт - обработчик для бота Битрикс24

Скрипт - обработчик для бота Битрикс24 нужен для того, чтобы принимать от бота какую то информацию и обрабатывать ее по алгоритму. Например, в нашем случае мы используем обработчик для того, чтобы получать сообщения клиента из чата, и реагировать на них. Скрипт - обработчик - это основа бота в Битрикс24, который реализует всю логику работы. 

Чтобы создать бота в Битрикс24, сделайте следующее: 

  1. Зайдите на свой портал
  2. В левом меню найдите пункт Разработчикам и кликните по нему
  3. Нажмите на плитку Другое - Локальное приложение
  4. Укажите Тип - серверное, путь к обработчику - адрес вашего скрипта, на который будут приходить данные от бота, путь для первоначальной установки -  адрес вашего скрипта, на который будут приходить данные от бота при первоначальном запуске
  5. Установите галочку - Использует только API
  6. В настройке прав укажите права - Открытые линии(imopenlines) и Создание и управление чат-ботами(imchatbot)

Для создания приложения у вас должны быть права администратора, и должна быть активна подписка 1С-Битрикс24. Маркетплейс

Пример файла обработчика

Пример файла обработчика для бота открытых линий Битрикс24

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

Чтобы создать открытую линию заходим в CRM - Клиенты - Контакт - центр и нажимаем на плитку онлайн - чат. В открывшемся выпадающем меню выбираем Создать открытую линию.

Для открытой линии нужно указать наименование и дать доступ сотрудникам, которые будут видеть сообщения в этой открытой линии. При нажатии на кнопку настроек справа от поля ввода наименования можно указать дополнительные настройки открытой линии. 

Нам нужно открыть настройки, перейти на вкладку Чат-боты и поставить галочку При обращении клиента назначить ответственным чат-бота, после чего выбрать нашего созданного ранее чат-бота.

Настройки для него мы установим такие:

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

Теперь установим код виджета на сайт. Для этого нужно открыть опять CRM - Клиенты - Контакт - центр и нажимаем на плитку Виджет на сайт. 
В открывшемся окне вы увидите Код для вставки - скопируйте его и вставьте в шаблон вашего сайта, перед закрывающим тегом

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

Работаем с API ChatGPT

Для реализации взаимодействия с ChatGPT мы будем использовать API, а именно Assistant API. Assistant API от OpenAI - это инструмент для разработчиков, позволяющий создавать и встраивать в собственные приложения настраиваемых ИИ‑помощников (ассистентов) на базе моделей OpenAI.

Для того, чтобы ассистент правильно отвечал на нужные вопросы, его нужно сперва настроить, то есть загрузить в него все нужные инструкции/документацию и прочий контент необходимый для генерации ответов. Сделать это можно через интерфейс OpenAI или через API. На этом шаге останавливаться мы не будем - настройка ассистента это тема для отдельной статьи. Предположим что у нас уже есть настроенный ассистент, и все необходимые данные для работы с ним через API - идентификатор ассистента, и ключ API. 

Для работы нам потребуется несколько функций :

  • Функция - обертка для cURL, выполняющая запрос к API (function _request($url, $post = array()))
  • Функция отправки сообщения в диалог (function sendMessageToThread($message, $thread_id = false))
  • Функция получения ответа из диалога (getAnswer($run_id, $thread_id))
  • Функция получения сообщения по его идентификатору (getMessageById($thread_id, $message_id))
  • Функция получения статуса в текущем диалоге - для того, чтобы понимать получен ли полный ответ от нейросети или нет (function getRunStatus($run_id, $thread_id))

Как работает Assistant API

  1. Создание ассистента - Задайте инструкции, выберите модель и инструменты
  2. Инициализация Thread - При начале диалога создайте поток для конкретного пользователя
  3. Добавление сообщений - Пользователь отправляет запрос через Message, который добавляется в Thread
  4. Запуск обработки (Run) - Вызовите ассистента для анализа Thread и генерации ответа. Ассистент может:
    • использовать инструменты (например, выполнить код);
    • обратиться к загруженным документам;
    • сформировать ответ на основе модели.    
  5. Получение результата - Ассистент добавляет ответ в Thread как новое Message

Создаем функционал для обращений к ChatGPT

Функция отправки сообщения в чат function sendMessageToThread($message, $thread_id = false)

Функция отправки сообщения в чат function sendMessageToThread($message, $thread_id = false) - 1
Функция отправки сообщения в чат function sendMessageToThread($message, $thread_id = false) - 2

Функция получения ответа из диалога function getAnswer($run_id, $thread_id)

Функция получения ответа из диалога function getAnswer($run_id, $thread_id)

Функция получения сообщения по его идентификатору function getMessageById($thread_id, $message_id)

Функция получения сообщения по его идентификатору function getMessageById($thread_id, $message_id)

Функция получения статуса в текущем диалоге function getRunStatus($run_id, $thread_id)

Функция получения статуса в текущем диалоге function getRunStatus($run_id, $thread_id)

Функцию - обертку _request($url, $post = array()) писать не будем, обыкновенная обертка для PHP cURL

Как можно заметить, в коде каждой функции есть $url = PROXY_DOMAIN."/layer_proxy.php";

На момент написания статьи прямого доступа к API ChatGPT из России не было, поэтому все запросы к API направляются сперва на зарубежный хостинг, а затем уже оттуда непосредственно к API. На зарубежном хостинге в корневой папке домена размещается PHP - скрипт, который принимает на себя запрос, авторизует и перенаправляет запрос дальше в случае успешной авторизации. Рассматривать его тоже не будем.

Подключаем ChatGPT к боту открытых линий

Пишем скрипт обработки входящих сообщений в открытые линии Битрикс24 и переправляем сообщения ИИ, и обратно.

Для того, чтобы реагировать на сообщения пользователей, наш бот должен принимать эти сообщения и выполнять какую - то обработку. Получение сообщений происходит в событии ONIMBOTMESSAGEADD (incoming.php), далее все данные передаются в метод класса бота - handleIncomingMesage. В нем происходит основная обработка сообщения и запускается обмен данными с нейросетью.

Обработка входящих сообщений в открытых линиях Битрикс24 и взаимодействие с API ChatGPT - 1
Обработка входящих сообщений в открытых линиях Битрикс24 и взаимодействие с API ChatGPT - 2
Обработка входящих сообщений в открытых линиях Битрикс24 и взаимодействие с API ChatGPT - 3

Заключение

В статье мы рассмотрели каким образом можно добавить ИИ - функционал в виджет открытых линий Битрикс24. Как писалось ранее, статья ознакомительная, поэтому некоторые детали и реализации опущены (конфиг - файлы и прочее). Материалов данной статьи достаточно для того, чтобы понять принцип работы и создать свой чат-бот с ИИ - функционалом. В качестве примера взят ChatGPT, но при желании можно использовать и другие облачные нейросети или вообще установленный где - нибудь локально Ollama. 

Мы предлагаем внедрение облачного Битрикс24 для вашего бизнеса. В нашем арсенале:

  • Первичная настройка облака под ваши нужды
  • Автоматизация процессов: настройка роботов и сущностей CRM
  • Перенос текущих бизнес-процессов в систему
  • Консультации по работе с Битрикс24
  • Поддержка на всех этапах внедрения

Свяжитесь с нами по телефонам указанным на сайте или через форму обратной связи, чтобы узнать больше.

image