Примеры сценариев

Переписка с пользователями

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

Короткий опрос пользователя и возврат ответов

Сценарий ведет небольшую переписку с пользователем и возвращает ответы в зависимости от реакции пользователя.

Во время работы сценария все реплики пользователя будут передаваться в этот сценарий. После завершения сценария сервис будет ждать ответную реакцию пользователя в течение определенного в настройках времени. Если пользователь напишет реплику - она будет передана в базы знаний. Если пользователь не напишет реплику в указанное время - сервис закроет диалог.

Пример переписки с пользователем
// // Сценарий простой переписки с пользователем // // Приветственное сообщение и первый вопрос сообщениеПользователю.сШаблоном("Добрый день! Сейчас я помогу!") + задатьПользователюВопрос("Я правильно понял, что вы заблудились в лесу?").сВариантамиОтвета("Да", "Нет").сохранитьРезультат("answer_1")+ // // Если пользователь выберет нет - сценарий завершается если("{answer_1} == Нет").то( сообщениеПользователю.сШаблоном("Ок, тогда я отключаюсь. Всего хорошего!") + завершить )+ // // Сообщения пользователю и начало опроса сообщениеПользователю.сШаблоном("Если вы заблудились в лесу - главное сохранять спокойствие!") + сообщениеПользователю.сШаблоном("Ваша главная задача - решить куда идти и выйти из леса.") + задатьПользователюВопрос("Посмотрите вокруг - вы видите деревья?").сВариантамиОтвета("Да", "Нет").сохранитьРезультат("answer_2")+ // // Пользователь ответил Нет - сценарий возвращает сообщение для этого случая и завершается если("{answer_2} == Нет").то( сообщениеПользователю.сШаблоном("Поздравляю! Вы не в лесу. Проблема решена. Всего хорошего") + завершить )+ // // Пользователь ответил Да - сценарий продолжает передавать сообщения пользователю сообщениеПользователю.сШаблоном("Посмотрите на мох на стволах деревьев. Мох зеленый, зеленый цвет успокаивает.") + сообщениеПользователю.сШаблоном("Обратите внимание на какой стороне дерева чаще всего встречается мох - это направление на север.") + сообщениеПользователю.сШаблоном("Теперь важно вспомнить как вы пришли сюда и идти обратно.") + задатьПользователюВопрос("Вы можете вспомнить откуда пришли?").сВариантамиОтвета("Да","Нет").сохранитьРезультат("answer_3") + // // Пользователь ответил Нет - сценарий возвращает сообщение для этого случая и завершается если("{answer_3} == Нет").то( сообщениеПользователю.сШаблоном("Тогда вам все равно куда идти. Идите на север, ориентируясь на мох. Всего хорошего и удачи!") + завершить ) + // // Пользователь выбрал вариант Да - сценарий возвращает сообщение для этого случая и завершается сообщениеПользователю.сШаблоном("Отлично! Идите обратно. Всего хорошего и удачи!") + завершить

Короткий опрос пользователя и передача запроса операторам

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

Опрос со стороны пользователя
// // Сценарий первичного анкетирования и передачи запроса операторам // // Начинается опрос задатьПользователюВопрос("Уточните, пожалуйста, что для Вас является приоритетным?").сВариантамиОтвета("Получение максимальной суммы","Простота получения").сохранитьРезультат("UserSaid_Priority")+ задатьПользователюВопрос("Укажите, на какие цели предназначается займ?").сохранитьРезультат("UserSaid_Priority_2")+ сообщениеПользователю.сШаблоном("Пожалуйста не закрывайте окно чата оператор подберет для Вас наиболее выгодное предложение!")+ // // завершаем сценарий и передаем диалог операторам завершитьИПеревестиНаОператора

Анкетирование пользователя и сохранение результатов в профиле пользователя

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

// // Сценарий заполнения данных пользователя // установитьПеременную("enteredEmail", "") + установитьПеременную("enteredPhone", "") + установитьПеременную("enteredFIO", "") + установитьПеременную("enteredTall", "") + установитьПеременную("enteredRegion", "") + установитьПеременную("enteredLink", "") + установитьПеременную("enteredCheck", "") + // // Опрос если("{userFullName} == ").то( задатьПользователюВопрос("Укажите как вас зовут").сВариантамиОтвета("Пропустить").сохранитьРезультат("enteredFIO") ) + если("{userEmail} == ").то( задатьПользователюВопрос("Укажите адрес вашей электронной почты").сВариантамиОтвета("Пропустить").сохранитьРезультат("enteredEmail") ) + если("{userPhone} == ").то( задатьПользователюВопрос("Укажите номер вашего телефона").сВариантамиОтвета("Пропустить").сохранитьРезультат("enteredPhone") ) + если("{userPayload.рост} == ").то( задатьПользователюВопрос("Укажите ваш рост").сВариантамиОтвета("Пропустить").сохранитьРезультат("enteredTall") ) + если("{userPayload.регион} == ").то( задатьПользователюВопрос("Укажите ваш город").сВариантамиОтвета("Пропустить").сохранитьРезультат("enteredRegion") ) + если("{userPayload.ссылка} == ").то( задатьПользователюВопрос("Укажите ссылку на ваш профиль").сВариантамиОтвета("Пропустить").сохранитьРезультат("enteredLink") ) + // // Замена нажатой кнопки Пропустить на символ - если("{enteredFIO} == Пропустить").то( установитьПеременную("enteredFIO", "-") ) + если("{enteredEmail} == Пропустить").то( установитьПеременную("enteredEmail", "-") ) + если("{enteredPhone} == Пропустить").то( установитьПеременную("enteredPhone", "-") ) + если("{enteredTall} == Пропустить").то( установитьПеременную("enteredTall", "-") ) + если("{enteredRegion} == Пропустить").то( установитьПеременную("enteredRegion", "-") ) + если("{enteredLink} == Пропустить").то( установитьПеременную("enteredLink", "-") ) + // // Проверка данных и сохранение тех переменных пользователя для которых в опросе были указаны данные если("{enteredFIO} != ").то( установитьПеременнуюПользователю("userFullName", "{enteredFIO}") + установитьПеременную("enteredCheck", "1") ) + если("{enteredEmail} != ").то( установитьПеременнуюПользователю("userEmail", "{enteredEmail}") + установитьПеременную("enteredCheck", "1") ) + если("{enteredPhone} != ").то( установитьПеременнуюПользователю("userPhone", "{enteredPhone}") + установитьПеременную("enteredCheck", "1") ) + если("{enteredTall} != ").то( установитьПеременнуюПользователю("userPayload.рост", "{enteredTall}") + установитьПеременную("enteredCheck", "1") ) + если("{enteredRegion} != ").то( установитьПеременнуюПользователю("userPayload.регион", "{enteredRegion}") + установитьПеременную("enteredCheck", "1") ) + если("{enteredLink} != ").то( установитьПеременнуюПользователю("userPayload.ссылка", "{enteredLink}") + установитьПеременную("enteredCheck", "1") ) + // // Если хоть одно значение было указано сценарий сообщит со сохранении данных если("{enteredCheck} == 1").то( сообщениеПользователю.сШаблоном("Спасибо. Все записал.") ) + // завершить

Опрос пользователя и получение ответа из Confluence

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

Токен для обращения сервиса в Confluence следует получать у администраторов Confluence или по документации.

Стартовые и приветственные сценарии

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

Такие сценарии размещаются в Приветствии или Интеграции на поступление диалога.

Разные приветствия для пользователей разных каналов

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

Сообщение об отсуствии операторов поддержки вне рабочего времени

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

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

В зависимости от рабочего/нерабочего времени уведомляется пользователя соответствующим сообщением.

Меню наиболее частых запросов

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

Если пользователь вместо выбора варианта напишет свой запрос, то сценарий передаст его в базы знаний.

Создание тегов к диалогу

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

Переменные диалога могут применяться для сохранения данных относящихся к отдельному диалогу - тегирования, сохранения комментарием или выбору тематик.

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

Создание тегов к диалогу и автоматическое предзаполнение полей

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

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

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

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

Автоматическое определение группы

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

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

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

Аутентификация пользователей

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

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

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

Проверка срока действия авторизации

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

Генерируем ответ для общих вопросов из GPT

Сценарий интеграции на поступление диалога в систему проверяет последовательно каждый вопрос пользователя, пока уровень уверенности предоставленного ответа из БЗ болталка будет равен или выше заданного уровня.

Для подключения сценария необходимо наличие токена для авторизации в GPT

Работа с API вызовами

Создание инцидента в ITSM системе через REST API

Классификация запроса и создание инцидента в ITSM системе через REST API

Регистрация запроса в CRM системе через REST API

Получение списка открытых инцидентов

Получение баланса по карте лояльности через SOAP вызов

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

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

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

Все текстовки сообщений сценария настраиваются в начале сценария

Получение данных через SQL запрос

Сценарии вызываемые операторами

Добавление и редактирование адреса Email в профиле пользователя

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

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

Добавление и редактирование комментария к профилю пользователя

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

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

Отправка текста переписки на электронную почту

Сценарий позволяет оператору отправить текст переписки и все файлы из переписки на электронную почту.

Сценарий может быть использован как для отправки переписки самому пользователю так и для отправки текста переписки в произвольные внешние службы. Сценарий поддерживает форматирование письма HTML или plain-text.

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

Работа со спамом

Эти сценарии позволяют оператору установить признак “спам” пользователю, для закрытия всех следующих диалогов пользователя диалогов.

1. Пометить как “СПАМ”

Необходимо добавить сценарий интеграцию на событие “Нажатие кнопки оператором”, добавить кнопку в настройках оператора для выполнения интеграции.

Данный сценарий позволяет оператору установить признак “СПАМ” пользователю

2. Закрыть “СПАМ”

Необходимо добавить сценарий интеграцию на событие Поступление диалога в систему.

При поступлении диалога будет выполняться проверка наличия признака “СПАМ” у пользователя. При наличии признака диалог будет закрываться.

3. Снять признак “СПАМ”

Необходимо добавить сценарий интеграцию на событие “Нажатие кнопки оператором”, добавить кнопку в настройках оператора для выполнения интеграции.

Для снятия признака “СПАМ” оператору необходимо будет инициировать диалог с пользователем, отмеченным как “СПАМ”, и выбрать действие “Снять признак СПАМ”

Закрытие диалога без оценки

Сценарий позволяет оператору закрыть диалог без вызова сбора оценки.

Сценарий добавляем в базу типа “только рекомендации”. Для закрытия диалога без сбора оценки оператор вызывает данный сценарий через функционал расширенного поиска:

Работа с таблицами Google Sheets

Простой поиск в таблице

Сценарий запрашивает у пользователя данные для поиска, ищет указанный текст по всем строкам и колонкам таблицы и сообщает о результатах поиска в формате “Да” или “Нет”

Поиск в таблице и возврашение всех данных из строки с заголовками

Сценарий запрашивает у пользователя данные для поиска, ищет указанный текст в первой колонке и возвращает данные из всей строки в формате “Заголовок колонки”: “Значение в строке”

Опрос пользователя и запись данных в новую строку таблицы

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

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

Для работы сценария необходимо получить данные для подключения к Google Sheets и подготовить переменные сервиса. Детальное описание подключения доступно по ссылке - https://deephack.atlassian.net/wiki/spaces/AKB/pages/2901803009

 

Интеграционные сценарии

Логировать в комментарии к диалогу запись о выставленном оператором теге в диалоге.

Про добавление тегов в диалог подробный сценарий здесь:

https://deephack.atlassian.net/wiki/spaces/AKB/pages/3207102465#%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D1%82%D0%B5%D0%B3%D0%BE%D0%B2-%D0%BA-%D0%B4%D0%B8%D0%B0%D0%BB%D0%BE%D0%B3%D1%83

https://deephack.atlassian.net/wiki/spaces/AKB/pages/3207102465#%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D1%82%D0%B5%D0%B3%D0%BE%D0%B2-%D0%BA-%D0%B4%D0%B8%D0%B0%D0%BB%D0%BE%D0%B3%D1%83-%D0%B8-%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5-%D0%BF%D1%80%D0%B5%D0%B4%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9

Сценарий записывает email, ФИО оператора и текущий тег диалога для случаев, когда нужно записать каким оператором был выставлен тег при переназначении на другую группу/переназначении на другого оператора/возврате диалога в очередь оператором.

Если оператор не вносил изменение в тег, сценарий запишет email, ФИО оператора и текущий тег диалога.

Сценарий интеграции необходимо добавлять на события “Оператор передал чат другому оператору”, “Оператор вернул диалог в очередь”, “Оператор перевел чат на другую группу“

Получить тему письма, по которому открыт диалог в почтовом канале

Сценарий выводит тему входящего письма почтового канала в комментарий. Аналогично можно выводить “От кого”, “Кому”.

Сценарий интеграции необходимо добавлять на события “Поступление диалога в систему”

Оповещение операторов в Telegram группе о поступлении диалогов в АФ

Сценарий при поступлении диалога в систему выполняет отправку первой реплики пользователя в заданную в сценарии группу Telegram. Сценарий добавляем в интеграции на событие “Поступление диалога в систему”. Перед добавлением сценария необходимо создать группу в Telegram и получить id группы, например помощью бота

Прочие примеры сценариев

Предлагать случайно один из нескольких вариантов ответа

Сценарий на вопрос пользователя предлагает случайно один из нескольких вариантов ответа

Получить в сценарии дату\время с учетом часового пояса