Прежде чем приступить к настройкам, рекомендуем ознакомиться со статьей об общей логике правил автоматизации в Омнидеске или посмотреть краткое видеоруководство по правилам
Задача: передать общение на первой линии AI-ассистенту.
Для реализации логики у вас должна быть подключена интеграция с OpenAI — Responses API.
Когда клиент пишет в поддержку, первым отвечает AI-ассистент. Клиент может позвать сотрудника по указанной в ответе инструкции. Сотрудник также подключится, если при обращении к AI-сервису возникнет ошибка. При необходимости обращение можно вернуть в работу AI-ассистенту.
На схеме отражена логика срабатывания правил. Для ее настройки вам понадобится создать 6 правил: 1 для входящих, 4 для измененных и 1 для текущих обращений.
Шаг 1: настройте ассистента
В примере используется интеграция «OpenAI — Responses API», которую при подключении мы назвали «AI-ассистент "ТвойПолет"». Подробнее о ее настройке и работе в Омнидеске — тут.
Пример инструкции и файл, загруженный в векторное хранилище, даны исключительно в иллюстративных целях и могут рассматриваться как один из возможных подходов, но не как образец.
1) В форме подключения / редактирования интеграции добавьте инструкцию для ассистента и определите его поведение. Наш тестовый ассистент для придуманного сервиса по продаже билетов «ТвойПолет» получил такие указания:
Пример инструкции для ассистента
#1. Роль Вы — сотрудник поддержки компании «ТвойПолет». Ваша задача — предоставлять точные ответы на основе данных из Vector Store, а также с учетом контекста и информации, предоставленной пользователем в ходе текущего диалога. Имя пользователя: [user_full_name] --- #2. Основные правила 2.1. Формулируйте один четкий и исчерпывающий ответ, без альтернативных версий. 2.2. НЕ начинайте с приветствия и краткого представления. Приветствие уже было озвучено. 2.3. Держите тон вежливым и профессиональным. 2.4. Всегда учитывайте контекст переписки: умейте связывать короткие или недописанные вопросы пользователя с темой, которая обсуждалась в предыдущих сообщениях текущей сессии. 2.5. Периодически обращайтесь к пользователю по имени [user_full_name], если имя передано. Делайте это естественным образом внутри ответа (не в каждом сообщении, а ненавязчиво и к месту), чтобы сохранять персональный и вежливый тон. --- #3. Алгоритм работы 3.1. Получение вопроса от пользователя. 3.2. Проверка формата сообщения: — Если сообщение состоит исключительно из файла неподдерживаемого формата, который ассистент не может обработать — ответьте фразой: К сожалению, не могу ответить на ваш вопрос. 3.3. Используйте историю диалога, чтобы учитывать предыдущие сообщения пользователя, понимать контекст текущего вопроса и отвечать на вопросы о самом диалоге. Информацию о компании, услугах и других предметных данных берите только из Vector Store. 3.4. Формирование ответа: — Если вопрос относится к предыдущей переписке — используйте историю диалога для ответа. — Если вопрос требует информации о компании, услугах и других предметных данных — используйте данные из Vector Store, учитывая историю диалога для понимания контекста вопроса. — Если вопрос пользователя слишком краток или неясен и его смысл невозможно восстановить из контекста — задайте уточняющий вопрос исключительно данной фразой: Сформулируйте вопрос как можно подробнее, пожалуйста, чтобы я смог предоставить исчерпывающий ответ. — Если вопрос пользователя содержателен и ясен, но данных нет ни в Vector Store, ни в истории диалога — сообщите об этом исключительно данной фразой: К сожалению, не могу ответить на ваш вопрос. — Если вы дважды подряд ответили пользователю фразой «К сожалению, не могу ответить на ваш вопрос» и на следующий его вопрос данных в Vector Store или истории диалога недостаточно — сообщите об этом исключительно данной фразой: Кажется, я не справляюсь. Лучше позовите человека! — Никогда не отвечайте фразами вида: ...в предоставленных данных нет информации... --- #4. Примеры Пример 1 (работа с Vector Store): Вопрос: «Сохраняется ли в моем личном кабинете информация по приобретенным билетам?» Ответ: «Да, полная информация по приобретенным билетам доступна в личном кабинете». Пример 2 (связывание контекста и уточнений): Предшествующий диалог: Пользователь: «Могу ли я отменить бронирование за 14 дней до вылета?» Ассистент: «Да, отмена за 14 дней до вылета осуществляется без штрафов с полным возвратом стоимости». Новый вопрос пользователя: «А за 7?» Ответ: «При отмене бронирования за 7 дней до вылета удерживается сбор в размере 20% от стоимости билета, остаток возвращается на карту».
Мы прямо указали, что предметные данные для ответа нужно брать только из загруженных нами файлов, а историю диалога — использовать для понимания контекста и вопросов о самой переписке.
2) Загрузите материалы в векторное хранилище. Мы для нашего тестового бота добавили этот файл: https://gist.github.com/cissav/de0f3295c2cfb08b9e6ae9f8b8d4b033
3) Включите учет контекста. В интеграции «OpenAI — Responses API» отметьте чекбокс «Учитывать контекст...».
Шаг 2: группы и доступ
Заранее создайте группу, в которую будете помещать обращения для ассистента — мы назвали ее «AI работает». Также создайте группу, куда будут перемещаться обращения, решенные ассистентом без привлечения сотрудника — мы назвали ее «Решено AI». Если используете рабочее время и SLA, исключите эти группы из настроек.
Ответы, отправляемые AI-ассистентом через правила, в Омнидеске рассматриваются как обычные автоответы, то есть не учитываются при расчете показателей скорости в статистике и при расчете SLA. Подробнее
Группу «AI работает» сделайте группой по умолчанию в каналах, где на первой линии будет отвечать ассистент. Если планируете передавать ассистенту не все обращения, то перемещать обращения в группу можно правилом 1 для входящих: в этом случае укажите в правиле ваши специфические условия.
Группа «Решено AI» нужна, чтобы перемещать в нее обращения, на которые ассистент ответил без помощи сотрудника: так будет проще анализировать работу AI и исключать такие обращения из общей статистики.
Правила, которые будут передавать сообщения клиента ассистенту, выставляют в обращении статус «в ожидании», так что отвлекать сотрудников они не будут. Но при желании можете полностью закрыть сотрудникам доступ к группам «AI работает» и «Решено AI» или настроить доступ к ним только в режиме просмотра.
Шаг 3: настройте правила
В нашем примере мы рассматриваем правила для чатов — в условиях за них отвечает опция «Канал — равен — любому синхронному каналу». Наши правила будут срабатывать без учета рабочего времени — как будто и бот, и сотрудники работают 24/7. Если вам нужна другая логика, учтите ее в условиях через указание нужного набора рабочих часов в блоке «Все заданные условия». Если вам нужна разная логика для рабочего и нерабочего времени, потребуется настроить отдельные правила для каждого периода.
1) Правило для входящих будет передавать первое сообщение клиента ассистенту, а его ответ — отправлять клиенту.
Первое сообщение пользователя в обращении передается через переменную [case_description]. Ответ ассистента фиксируется через переменную [ai_response_by_text_request], но вы можете также добавить в поле для отправки ответа свой текст, который всегда будет отправляться вместе с его ответом. Мы добавили:
приветствие;
пояснение для клиента, что с ним общается AI-ассистент, и инструкцию, как позвать человека.
2) Правило для измененных будет передавать ассистенту последующие сообщения клиента, а его ответы — отправлять в обращение.
Последующие ответы клиента в обращении передаются через переменную [last_message], а для ответа ассистента переменная прежняя — [ai_response_by_text_request]. Помимо нее мы оставили в поле ответа пояснение для клиента, что с ним общается AI-ассистент, и инструкцию, как позвать человека.
3) Правило для измененных подключает к общению сотрудника, когда клиент зовет его указанным в ответе ассистента способом.
Клиент не следует инструкции
Для ситуации, когда ассистент не справляется, мы отдельно указали в инструкции на стороне OpenAI фразу, которую нужно использовать, если дважды подряд не удалось дать клиенту полезный ответ. Если после фразы «Кажется, я не справляюсь. Лучше позовите человека!» клиент снова напишет боту, а не позовет сотрудника указанным вами способом, вы можете подключать сотрудника через правило.
Логика работы правила базируется на том, что условие «Тема или содержание — содержат — ...» проверяет текст темы обращения и трех последних сообщений в обращении. Триггер для срабатывания правила — сообщение, отправленное клиентом после ответа ассистента «Кажется, я не справляюсь. Лучше позовите человека!»
Пример условий такого правила для измененных обращений:
Правило поможет не упустить обращения от клиентов, которые запутались в сценариях, а также предотвратить нецелевое использование ассистента, например, в случае бессмысленных сообщений и пустой траты токенов. Действия такого правила можно настроить по аналогии с правилом 3, которое подключает к общению сотрудника, когда клиент зовет его указанным в ответе ассистента способом.
4) Правило для измененных подключает сотрудника, если вместо ответа ассистент отвечает ошибкой.
В некоторых случаях AI-ассистент может ответить ошибкой. При этом все остальные действия правил, отправляющих запрос в его адрес, выполняются — в том числе и выставление в обращении статуса «в ожидании». В таких ситуациях Омнидеск добавляет в обращение системную заметку и неудаляемую метку ai_error_in_rule_action:
Чтобы клиент не остался без ответа, эти ситуации можно отслеживать через правила для измененных обращений с помощью таких условий:
Подробнее об ошибках при работе AI-ассистента тут.
В Омнидеске нет возможности активировать чат через стандартные условия правил. Если для вашего сценария важно, чтобы чат перемещался в интерфейс активных чатов, такую логику можно настроить через вебхук в адрес API Омнидеска. Подробнее
Активация чата через API
Чаты в Омнидеске активируются, только когда в них добавляется сообщение клиента или ответ сотрудника. Чтобы активировать чат, можно выполнить через правило вебхук в адрес API Омнидеска, который добавит в обращение сообщение от имени клиента.
На стороне клиента такое сообщение отобразится только в его личном кабинете, в сам мессенджер оно не попадет. Тем не менее выбирайте текст, который будет одновременно понятен сотруднику и не смутит самого клиента, если он когда-нибудь его увидит.
Инструкция по настройке вебхука для активации чата
Вебхук в адрес API Омнидеска добавит сообщение от лица клиента и эмулирует активацию чата.
Выберите в правиле действие «Отправить вебхук»;
Выберите метод POST;
В поле «URL для отправки запроса» укажите:
https://[domen].omnidesk.ru/api/cases/[case_id]/messages.json
Если у вас подключен собственный домен, можете использовать его:
https://[name].[domen]/api/cases/[case_id]/messages.json
Отметьте чекбокс «требуется аутентификация через», выберите опцию «логин-пароль». В поле «Логин» нужно прописать логин (email-адрес) сотрудника с полным уровнем доступа, а в поле «Пароль» — API-ключ, который можно создать по пути: аккаунт администратора — раздел «Настройки» — подраздел «API»;
Выберите «Кастомный запрос» в формате JSON и в поле «Ваш кастомный запрос» укажите такой текст запроса:
{
"message" : {
"user_id" : "[user_id]",
"content" : "Ваш текст"
}
}
Пример правил
Если вы хотите распределить такой чат на доступных сотрудников, понадобится отдельное правило.
5) Правило для измененных возвращает обращение в работу ассистенту в ситуациях, когда сотрудник считает, что диалог может продолжить AI. Чтобы ассистент снова подключился, сотруднику нужно вернуть в обращение метку «ассистент».
Логика работы предполагается следующая:
Когда клиент зовет человека или вместо ответа ассистента мы получаем ошибку, к обращению подключается сотрудник. Если при проверке сотрудник понимает, что его вмешательство не требуется (например, ошибка была временной), он добавляет к обращению метку «ассистент» без ответа клиенту. После этого обращение автоматически возвращается в работу AI.
Если есть необходимость в участии человека, сотрудник может сам пообщаться с пользователем. К примеру, помочь с решением вопроса, с которым не справился ассистент. Но если очередной вопрос клиента уже будет по зубам (или что там у него?) ассистенту, вместо ответа сотрудник добавляет метку «ассистент» — и последний вопрос пользователя отправляется ассистенту.
6) Правило для текущих будет закрывать обращение, если клиент ничего больше не пишет — в этом случае мы предполагаем, что его вопрос успешно решил ассистент. Поскольку в нашем примере мы настраиваем правила для чатов, где общение ведется в режиме реального времени, мы указали условие «Часов в статусе «в ожидании» — более — 0,5». Такое правило будет закрывать обращения в диапазоне от 30 до 80 минут после последнего отправленного ответа AI. Подробнее о логике работы правил для текущих обращений тут.