Инструкция по подключению
агента "Интеллектуальный бот"

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

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

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

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


Выбор статьи базы знаний для ответа


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

Для этого используется один или несколько классификаторов запросов, подключенных к агенту в разделе Классификаторы запросов. Классификаторы используют нейронные сети или другую логику для извлечения смысла запроса и выбора подходящей статьи БЗ. Они обучаются на базе примеров вопросов, указанных в статьях базы знаний напрямую (в разделе Примеры вопросов), либо на основе постоянно накапливаемой информации о том, какие статьи используют для ответов операторы.

Для каждого классификатора можно задать порог и вес. Каждый классификатор возвращает оценку уверенности в предоставленных им ответах в диапазоне 0-100%. Указав порог для классификатора можно выбрать, какую уверенность в ответе мы допускаем для ответа пользователю (ответы с вероятностью ниже порога не будут использоваться). Перед выбором итогового ответа, агент умножает уверенность на вес классификатора, и выбирает из полученного списка вариант с наибольшим значением вес*уверенность (таким образом, при необходимости можно приоритезировать необходимые классификаторы с помощью указания им большего веса).

В случае, если в результате был выбран подходящий вариант ответа из базы знаний – агент переходит к обработке выбранной статьи и формированию ответа пользователю.

В противном случае, если ни один ответ не вышел за пределы выбранного порога – пользователю будет отправлена:
  • статья указанная в настройке Статья, если бот не знает ответ в случае получения текстового вопроса от пользователя,
  • статья Статья при получении изображений и файлов в случае получения файла или изображения.



Формирование ответа пользователю

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

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

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


Форматирование ответа

Статья базы знаний позволяет использовать 3 вида форматирования:
  • простой текст, без форматирования – работает во всех каналах
  • HTML форматирование – работает только для вебчата
  • Markdown форматирование - унифицированный формат, который работает для мессенджеров и социальных сетей и позволяет унифицированно использовать их расширенные возможности

Использование кнопок

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

Имеется возможность добавлять синонимы к кнопкам. Бот распознает отправляемый пользователем текст и анализирует его на близость к тексту синонимов (если они есть) или к тексту надписи на отправленных кнопках (если синонимов нет). Распознавание происходит по нечеткому алгоритму (то есть не требуется полное совпадение синонима и отправленного пользователем текста). Если в результате бот решает что отправленный пользователем текст соответствует одной из кнопок – бот воспринимает такое сообщение как нажатие на кнопку. Данный механизм позволяет использовать механизм кнопок в каналах, где они не доступны, а также предоставить пользователям выбор - использовать кнопки, либо формировать ответ текстом.

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


Условия на ответы


Одна статья базы знаний может содержать несколько ответов.

Это может использоваться для:
  • случайного выбора одного из ответов – при установке соответствующей политики отправке в статье
  • выдачи нескольких ответов – при установке соответствующей политики отправке в статье
  • установке условий на выдачу ответа

Каждый ответ имеет блок условий, где можно указать условия, при которых данный ответ будет отправлен клиенту. В случае, если найден подходящий ответ с условиями – вариант ответа без условий использован не будет. В случае если условия ни одного ответа не удовлетворены – будет отправлен ответ без условий, при его наличии. Если условия ни одного ответа не удовлетворены и ответа без условий в статье нет – бот будет считать, что он не смог найти подходящий ответ (при отсутствии слотов для дальнейшего уточнения).

Если бот обнаруживает, что условия для нескольких ответов удовлетворяются (либо есть несколько ответов без условий) – бот использует политику отправки из статьи (все, первый или случайный ответ) для выбора ответа.

Для создания условий на ответы используется слоты. Слоты – это информация, которая может накапливаться в контексте диалога как в результате ответов клиента, так и в результате получения информации из других систем.

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

Слоты

В статье базы знаний во вкладке Слоты можно указать список слотов, значения которых бот может уточнять для формирования ответа клиенту. Сами слоты создаются в разделе База знаний / Слоты – там можно настроить их тип и другую необходимую информацию по ним (словари, регулярные выражения, вопросы для уточнения у пользователя и так далее).

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

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

Важно, что при вводе значений (кроме ввода простого текстового слота), бот продолжает анализировать ввод пользователя на возможную попытку перехода на другой сценарий и осуществляет такой переход при необходимости. При возврате к начальному сценарию – введенная ранее информация остается в контексте, таким образом пользователь сможет продолжить сценарий с того же места. При необходимости также можно принудительно очистить значения необходимых слотов командами – чтобы бот "забыл" введенную ранее информацию.

В случае, если пользователь просто отказывается от ввода очередной информации, бот осуществляет переход к статье, указанной в настройке агента Статья, если пользователь отказался от вопроса при запросе слота.

Для условий в ответах можно использовать = (для всех слотов), <, >, <=, >= (для числовых слотов и дат), а также специальные значения ATTEMPTS (количество попыток ввода), __FILLED__ (слот имеет какое-то значение) и __NOT_FILLED__ (слот не заполнен). Каждый ответ в статье может иметь несколько условий - они объединяются логикой И (то есть должны выполняться все указанные условия).


Дополнительно о слотах

В тексте ответов можно использовать значения слотов с помощью синтаксиса {{идентификатор_слота}}.

Существует ряд слотов, заполняемых автоматически:
  • channel_id - текущий канал пользователя (только для чтения)
  • sku_id - идентификатор товара из маркета соц. сети (только для чтения)
  • sku_title - название товара из маркета соц. сети (только для чтения)
  • has_sku - признак наличия sku_id или sku_title в слотах диалога (только для чтения)
  • sys_lastname - Анкета / Фамилия (автоматически синхронизируется с анкетой пользователя)
  • sys_firstname - Анкета / Имя (автоматически синхронизируется с анкетой пользователя)
  • sys_phone - Анкета / Номер телефона (автоматически синхронизируется с анкетой пользователя)
  • sys_email - Анкета / Email (автоматически синхронизируется с анкетой пользователя)
  • sys_birthdate - Дата рождения (автоматически синхронизируется с анкетой пользователя)
  • sys_contract - Номер контракта (автоматически синхронизируется с анкетой пользователя)

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

Также значение слота можно установить принудительно прямо в статье базы знаний с помощью команд (один ответ может содержать несколько команд, каждая на отдельной строке):
  • SET_SLOT_VALUE_slot_id текст - установить значение слота (в правой части выражения в качестве текста может быть конкретное значение или __SLOT_VALUE_slot2_id для подстановки значения другого слота)
  • SET_SLOT_VALUE_WITH_EXPRESSION_slot_id 5 + 3 - установить значение слота с использованием выражения (возможные операции: + и -)
  • DELETE_SLOT_VALUE_slot_id - очистить значение слота
  • DELETE_SLOT_VALUES regex - массово очистить значения слотов на основе регулярного выражения.


Команды и подключение интеграций

С помощью команд можно осуществлять из статей базы знаний переход к другим статьям и вызовы агентов (в том числе для интеграций):

/redirect <agent_id> <parameters>
Команда отправляет текущее сообщение от клиента указанному агенту, а также передает ему дополнительные параметры

/switch <agent_id>
Команда устанавливает агента в качестве агента по-умолчанию в текущем диалоге. Такой агент получит следующее сообщение клиента в диалоге

/switchredirect <agent_id> <parameters>
Команда выполняет обе предыдущие команды сразу

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

Также можно осуществить переход к другой статье с помощью команды /redirect aiassist2 intent_id="<article_id>"