Прежде чем приступить к настройкам, рекомендуем ознакомиться со статьей об общей логике правил автоматизации в Омнидеске или посмотреть краткое видеоруководство по правилам
Задача: передать общение на первой линии AI-ассистенту.
Когда клиент пишет в поддержку, первым на его сообщение отвечает ассистент. У клиента есть инструкция, как позвать человека — если он ей следует, то к диалогу подключается сотрудник. Также сотрудник подключится, если Open AI ответит ошибкой. Обращение можно вернуть в работу ассистенту, если после общения с человеком снова потребуется его помощь.
На схеме отражена логика срабатывания правил. Для ее настройки вам понадобится создать 6 правил: 1 для входящих, 4 для измененных и 1 для текущих обращений.

Шаг 1: настройте ассистента
Подробно про настройки ассистента на стороне OpenAI и то, как они учитываются в Омнидеске, — тут.
Пример инструкции и файл, загруженный в Vector Store, даны исключительно в иллюстративных целях и могут рассматриваться как один из возможных подходов, но не как образец.
1) Напишите инструкцию для ассистента и определите его поведение. Наш тестовый ассистент для придуманного сервиса по продаже билетов «ТвойПолет» получил такие указания:
Пример инструкции для ассистента
#1. Роль Вы — сотрудник поддержки компании «ТвойПолет». Ваша задача — предоставлять точные ответы только на основе данных из Vector Store. --- #2. Основные правила 2.1. Формулируйте один четкий и исчерпывающий ответ, без альтернативных версий. 2.2. НЕ начинайте с приветствия и краткого представления. Приветствие уже было озвучено. 2.3. Держите тон вежливым и профессиональным. --- #3. Алгоритм работы 3.1. Получение вопроса от пользователя. 3.2. Проверка формата сообщения: - Если сообщение состоит исключительно из файла неподдерживаемого формата, который ассистент не может обработать — ответьте фразой: К сожалению, не могу ответить на ваш вопрос. 3.3. Поиск информации в Vector Store. 3.4. Формирование ответа: - Если информация найдена — дайте полный и точный ответ. - Если вопрос пользователя слишком краток или неясен — задайте уточняющий вопрос исключительно данной фразой: Сформулируйте вопрос как можно подробнее, пожалуйста, чтобы я смог предоставить исчерпывающий ответ. - Если вопрос пользователя содержателен и ясен, но данных в Vector Store недостаточно — сообщите об этом исключительно данной фразой: К сожалению, не могу ответить на ваш вопрос. - Если вы дважды подряд ответили пользователю фразой: К сожалению, не могу ответить на ваш вопрос., и на следующий его вопрос данных в Vector Store недостаточно — сообщите об этом исключительно данной фразой: Кажется, я не справляюсь. Лучше позовите человека! - Никогда не отвечайте фразами вида: ...в предоставленных данных нет информации... --- #4. Пример Вопрос: «Сохраняется ли в моем личном кабинете информация по приобретённым билетам?» Ответ: «Да, полная информация по приобретённым билетам доступна в личном кабинете».
Мы прямо указали, чтобы ассистент использовал для своих ответов только загруженные нами файлы;
Мы отдельно прописали фразу, которую ассистент должен использовать, если трижды подряд не смог дать клиенту полезный ответ. В нашей последовательности правил мы не учитываем такой сценарий, чтобы не раздувать инструкцию. Но вы при желании можете отслеживать такие ситуации правилом для измененных обращений и подключать к обращению сотрудника. Понадобятся такие условия:

2) Загрузите данные для ответов ассистента в Vector Store. Мы для нашего тестового бота добавили этот файл: https://gist.github.com/cissav/de0f3295c2cfb08b9e6ae9f8b8d4b033
Шаг 2: группы и доступ
Заранее создайте группу, в которую будете помещать обращения для ассистента — мы назвали ее «AI работает». Также создайте группу, куда будут перемещаться обращения, решенные ассистентом без привлечения сотрудника — мы назвали ее «Решено АI». Если используете рабочее время и SLA, исключите эти группы из настроек.
Ответы AI в статистике
Ответы, отправляемые AI-ассистентом через правила, в Омнидеске рассматриваются как обычные автоответы, то есть не учитываются при расчете показателей скорости в статистике и при расчете SLA. Подробнее
Группу «AI работает» сделайте группой по умолчанию в каналах, где на первой линии будет отвечать ассистент. Если планируете передавать ассистенту не все обращения, то перемещать обращения в группу можно правилом 1 для входящих: в этом случае укажите в правиле ваши специфические условия.
Группа «Решено АI» нужна, чтобы перемещать в нее обращения, на которые ассистент ответил без помощи сотрудника: так будет проще анализировать работу AI и исключать такие обращения из общей статистики.
Правила, которые будут передавать сообщения клиента ассистенту, выставляют в обращении статус «в ожидании», так что отвлекать сотрудников они не будут. Но при желании можете полностью закрыть сотрудникам доступ к группам «AI работает» и «Решено АI» или настроить доступ к ним только в режиме просмотра.

Шаг 3: настройте правила
В нашем примере мы рассматриваем правила для чатов — в условиях за них отвечает опция «Канал — равен — любому синхронному каналу». Наши правила будут срабатывать без учета рабочего времени — как будто и бот, и сотрудники работают 24/7. Если вам нужна другая логика, учтите ее в условиях через указание нужного набора рабочих часов в блоке «Все заданные условия». Если вам нужна разная логика для рабочего и нерабочего времени, потребуется настроить отдельные правила для каждого периода.
1) Правило для входящих будет передавать первое сообщение клиента ассистенту, а его ответ — отправлять клиенту.

Первое сообщение пользователя в обращении передается через переменную [case_description].
приветствие;
пояснение для клиента, что с ним общается AI-ассистент, и инструкцию, как позвать человека.
2) Правило для измененных для передачи ассистенту последующих сообщений клиента и отправки его ответа в обращении.

Последующие ответы клиента в обращении передаются через переменную [last_message], а для ответа ассистента переменная прежняя — [ai_response_by_text_request]. Помимо нее мы оставили в поле ответа пояснение для клиента, что с ним общается AI-ассистент, и инструкцию, как позвать человека.
3) Правило для измененных подключает к общению сотрудника, когда клиент зовет его указанным в ответе ассистента способом.

4) Правило для измененных подключает сотрудника, если вместо ответа ассистент отвечает ошибкой.
В некоторых случаях AI-ассистент может ответить ошибкой. При этом все остальные действия правил, отправляющих запрос в его адрес, выполняются — в том числе и выставление в обращении статуса «в ожидании». В таких ситуациях Омнидеск добавляет в обращение системную заметку и неудаляемую метку ai_error_in_rule_action:

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


Чаты в Омнидеске активируются, только когда в них добавляется сообщение клиента или ответ сотрудника. Чтобы активировать чат, мы выполним через правило вебхук в адрес 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. Подробнее о логике работы правил для текущих обращений тут.
