Welcome bot работает на основе 15 бизнес-процессов. Основной процесс чатбота — Welcome bot Beesender, который состоит из нескольких шагов.
Table of Contents |
---|
Beesender – Welcome Bot
...
В первую очередь, чат привязывается к бизнес-процессу через элемент «Привязать процесс к чату». Затем выполняется проверка, чтобы предотвратить повторный запуск процесса чатбота, если он уже запущен в текущем чате. После этого инициируется подпроцесс выбора языка, за которым следует получение ответов чатбота для выбранного языка.
Далее идут два элемента Beesender: «Beesender: Текстовое сообщение» с приветственным ответом чатбота. Если контакт распознан, приветственное сообщение чатбота будет включать имя контакта, а для нераспознанных контактов будет отправлено обычное приветственное сообщение. Следующий элемент — Beesender: Сообщение с кнопками «Главное меню», которое позволяет пользователям выбирать из различных вариантов в зависимости от их потребностей.
Каждая ветвь ведет к своему подпроцессу:
Функция главного меню | Имя подпроцесса |
---|---|
Заказать звонок | Beesender – Callback request |
FAQ | Beesender – Frequently Asked Questions |
Чат с оператором | Beesender - Chat with an agent |
Выбрать язык | Beesender – Choose Language |
Закрыть чат | Beesender – Close Chat |
Перед выполнением подпроцесса Beesender - Callback request клиент идентифицируется и/или регистрируется с помощью процесса Beesender - Client identification, registration. После выполнения подпроцессов «Callback request» и «Frequently Asked Questions» бот отображает второе меню, в котором пользователь может выбрать один из двух вариантов:
Закрыть чат
Вернуться в главное меню
Если пользователь выбирает вернуться в главное меню в результате процесса Beesender - Client identification, registration, процесс возвращается к элементу Beesender: Button message 'Главное меню'. Если оператор не найден в результате процесса Beesender - Chat with an agent и пользователь выбирает Callback request, процесс запускает подпроцесс Beesender - Client identification, registration.
Если агент не найден в результате процесса Beesender - Chat with an agent и пользователь выбирает Вернуться в главное меню, процесс возвращается к элементу Beesender: Button message «Главное меню».
Если оператор не найден в результате процесса Beesender - Chat with an agent и пользователь выбирает Закрыть чат, процесс запускает подпроцесс Beesender - Close Chat.
Если результатом любого подпроцесса или кнопки в меню (основного или второго) является закрытие чата, бот запускает соответствующий подпроцесс Beesender - Close Chat.
Beesender - выбор языка
Сначала создается коллекция доступных переводов на основе настроек «Язык используется» и «Язык доступен» в конфигурации Welcome bot. Затем проверяется, существует ли перевод на предпочитаемый язык распознанного контакта в чате.
Далее выполняется проверка наличия записи конфигурации Welcome bot, в которой параметр «язык» равен предпочитаемому языку распознанного контакта в чате, при условии, что параметры «Язык используется» и «Язык доступен». в записи установлено значение true.
...
Если контакт распознается в чате, и существует подходящая запись конфигурации приветственного бота с параметром «Язык», а для параметра «Язык доступен» установлено значение «true», а пользователь не выбрал функцию «Изменить язык», тогда параметр LanguageId будет заполнен. со значением предпочтительного языка из карточки контакта.
Если есть только одна запись конфигурации Welcome Bot, соответствующая условиям, то параметр LanguageId будет заполнен значением Language из соответствующей записи.
При отсутствии записей конфигурации Welcome Bot, удовлетворяющих условиям, чатбот сообщит пользователю: «Чат был закрыт» и чат будет закрыт.
Во всех остальных случаях чатбот предложит пользователю выбрать язык из списка, который соответствует условиям. Параметр LanguageId будет заполнен значением языка, выбранного пользователем. Выбранный язык также будет указан в карточке контакта в поле «Предпочитаемый язык» и в карточке чата в поле «Язык».
Info |
---|
Фразы во всех элементах берутся из карточки конфигурации Welcome bot для выбранного пользователем языка. |
Beesender – Идентификация клиента, регистрация
...
В начале процесса идентификации клиента проверяется, существует ли контакт и дал ли он согласие на обработку данных (поле Статус согласия в карточке контакта).
Далее, если контакт не давал согласие и установлен флажок «Согласие на обработку персональных данных» в записи конфигурации Welcome Bot для текущего языка, либо контакт не распознан и установлен флажок «Согласие на обработку персональных данных» значение true в записи конфигурации Welcome bot для текущего языка, бот запрашивает согласие на обработку данных.
Если пользователь не дает согласия на обработку данных или выбирает вернуться в главное меню, параметр GoTo заполняется значением «Главное меню». Этот параметр будет использоваться в процессе Beesender - Welcome Bot.
Если пользователь решает закрыть чат, параметр GoTo заполняется значением «Закрыть чат». Этот параметр также будет использоваться в процессе Beesender - Welcome Bot.
Если пользователь дал согласие на обработку данных, выполняются элементы «Читать ChatMessageGDPRQuestion» и «Читать ChatMessageGDPRAnswer», которые получают идентификаторы сообщения вопроса бота и ответа пользователя.
Если контакт распознается в чате, параметр ContactId заполняется значением распознанного контакта. Процесс Beesender - Log GDPR запущен. Далее он проверяет, заполнен ли адрес электронной почты в карточке контакта.
Если электронная почта не заполнена в распознанной карточке контакта, запускается процесс ввода электронной почты Beesender. После этого срабатывает элемент «Set Email to Contact», который заполняет поле электронной почты в распознанной карточке контакта.
Если электронная почта заполнена, процесс завершен.
2. Если контакт не распознается в чате, запускается процесс Beesender - Enter Your Email. Затем выполняется поиск контакта с таким же адресом электронной почты на основе параметра Email из этого процесса.
Если контакт с таким email найден, то параметр ContactId заполняется значением найденного контакта в элементе формулы «Set ContactId». И запускается встроенный процесс из пакета Beesender - Bind channel to contact. После этого процесса запускается процесс Beesender - Log GDRP и завершается процесс Beesender - Client identification, registration.
Если контакт с таким же адресом электронной почты не найден, элемент «Читать СС с введенным e-mail» используется для поиска контакта, параметры связи которого включают указанный адрес электронной почты.
- Если такой контакт найден, то параметр ContactId заполняется значением найденного контакта в элементе формулы «Записать ContactId». С помощью элемента Изменить предпочитаемый язык поле Предпочитаемый язык в карточке найденного контакта заполняется значением языка, выбранным пользователем в процессе Beesender - Choose Language. И запускается встроенный процесс из пакета Beesender - Привязать канал к контакту. После этого процесса запускается процесс Beesender - Log GDRP и завершается процесс Beesender - Client identification, registration.Если такой контакт не найден, бот запрашивает у пользователя полное имя с помощью элемента Beesender: Button Message «Пожалуйста, введите ваше полное имя». Далее с помощью элемента Добавить данные «Создать новый контакт» создается новый контакт, в котором заполняются следующие поля: полное имя, адрес электронной почты и предпочитаемый язык. Затем параметр ContactId заполняется значением созданного контакта в элементе формулы «Записать ContactId». Затем запускается встроенный процесс из пакета Beesender - Привязать канал к контакту. После этого процесса запускается процесс Beesender - Log GDRP и завершается процесс Beesender - Client identification, registration.
Beesender – Enter Your Email
...
В начале бизнес-процесса есть элемент Beesender: Сообщение-кнопка «Пожалуйста, введите ваш email», через которое чатбот предлагает пользователю ввести свой адрес электронной почты.
Электронная почта, введенная пользователем, проверяется на достоверность в элементе скрипта «Верный email».
Если введенный адрес электронной почты недействителен, срабатывает элемент Beesender: текстовое сообщение «Не верный email», через которое бот отправляет текстовое сообщение о том, что введенный адрес электронной почты недействителен. И процесс возвращается к первому элементу Beesender: сообщение кнопки «Пожалуйста, введите ваш email»,.
Если адрес электронной почты, введенный пользователем, действителен, то значение адреса электронной почты заполняется в параметре имя электронной почты в элементе формулы «Записать email».
Этот параметр Email используется в процессе Beesender - Client identification, registration.
Beesender - Log GDPR
...
Бизнес-процесс Beesender - Log GDPR включает передачу следующих параметров:
ChatMessageGDPRQuestion - ID сообщения с вопросом о сборе данных
ChatMessageGDPRAnswer - ID сообщения с ответом на сбор данных
ContactId - ID распознанного или вновь созданного контакта
Элемент «Добавить GDPR вопрос» создает новую запись в объекте согласия на обработку персональных данных и добавляет сообщение с вопросом.
Элемент ответа «Добавить GDPR ответ» создает новую запись в объекте согласия на обработку персональных данных и добавляет сообщение с ответом пользователя.
Элемент Назначить статус Согласия = true изменяет чек-бокс Статус согласия в карточке контакта пользователя, давшего согласие на обработку данных.
В результате этого подпроцесса в записи «Контакт» отображается деталь согласия на GDPR с чатботом и сообщениями пользователя о согласии на обработку данных.
...
Привязать канал к контакту (из пакета Beesender)
Процесс BindChannelToContact является встроенной функцией приложения Beesender. Это важно для связывания пользователя с конкретным контактом, чтобы гарантировать, что пользователь будет распознан как этот контакт в последующих сеансах чата.
Используя процесс BindChannelToContact, приложение Beesender может вести непротиворечивую и точную запись взаимодействий каждого пользователя с системой поддержки клиентов организации. Это обеспечивает более персонализированное и эффективное обслуживание, поскольку операторы могут быстро получить доступ к контактной информации пользователя, истории чата и другим важным данным во время будущих сеансов чата.
Этот процесс не только улучшает общее качество обслуживания клиентов, но также помогает организациям лучше понять потребности, предпочтения и опасения своих клиентов, что приводит к более обоснованному принятию решений и целенаправленным стратегиям поддержки.
Beesender – Callback request
...
В начале процесса «Beesender – Callback request» элемент «Читать данные Контакта» используется для получения информации о контакте. После получения контактных данных процесс проверяет, заполнен ли номер телефона контакта.
Если номер телефона заполнен, параметр «Телефон» заполняется номером телефона контакта. Затем с помощью элемента сообщения Beesender: Сообщение с кнопками «Можем ли мы позвонить по этому номеру?»' с вариантами ответа «Да» и «Нет» бот спрашивает пользователя, может ли компания перезвонить на номер, указанный в карточке контакта.
Если номер телефона не указан в карточке контакта или контакт выбирает «Нет» в элементе Beesender: Сообщение с кнопками «Можем ли мы позвонить по этому номеру?», чатбот просит пользователя ввести номер телефона с помощью Элемент сообщения Beesender: Сообщение с кнопками «Пожалуйста, введите номер, по которому мы можем позвонить». Введенный пользователем номер телефона сохраняется в параметре «Телефон» с помощью элемента формулы «Телефон».
Элемент «Добавить новый номер телефона в Способы коммуникации контакта» создает новую запись в объекте «Способы коммуникации», заполняя следующие параметры:
Контакт - ContactId
Номер - Номер телефона введенный контактом
Тип - Мобильный телефон
Далее, и в случае, когда клиент выбрал «Да» в элементе Beesender: Сообщение с кнопками «Можем ли мы позвонить по этому номеру?», чатбот запрашивает предпочтительное время для звонка с помощью элемента Beesender: Сообщение с кнопками «В какое время Вы хотите, чтобы мы Вам позвонили?». После этого чатбот подтверждает пользователю, что с ним скоро свяжутся, используя элемент текстового сообщения Beesender: «Спасибо! Мы Вам скоро позвоним». Затем с помощью элемента формулы Записать значение текстовый параметр Значение заполняется следующим значением: "Принять заявку на обратный звонок. Источник: чатбот. Имя: " +{Имя контакта}+", номер телефона: "+ {Телефон}+", время звонка: "+{Ответить}+"."
Затем с помощью элемента Добавить данные «Создать активность» создается новая активность со следующими параметрами:
Контакт: ContactID
Тема: текстовый параметр Значение
Тип: Звонок
Показать в календаре: True
Срок: Текущее время + 1 день
Beesender Chat: ID текущего чата
Beesender – Frequently Asked Questions
...
The Beesender - Frequently Asked Questions состоит из трех подпроцессов:
Beesender – Find question category
Beesender – Find Question
Beesender – Find Answer
и FAQ меню.
Если результатом процесса Beesender - Find question category является Вернуться в главное меню, то заполняется параметр FAQResult, который берется в основном процессе Welcome Bot.
Если результатом процесса Beesender — Find Question является Возврат в главное меню, то также заполняется параметр FAQResult, который берется в основном процессе Welcome Bot.
Если результатом процесса Beesender — Find Question является изменение категории, то чатбот возвращается к подпроцессу выбора категории.
В FAQ меню есть такие кнопки, как
Вернуться назад
Изменить категорию
Вернуться в главное меню
Закрыть чат
В зависимости от выбранной опции чат-бот возвращается к подпроцессу выбора вопроса или к подпроцессу выбора категории.
При выборе вариантов Вернуться в главное меню или Закрыть чат заполняется параметр FAQResult, который берется в основном процессе Welcome Bot.
Beesender – Find question category
...
В начале процесса Beesender - Find question category process коллекция категорий часто задаваемых вопросов, соответствующих выбранному пользователем языку, получается с помощью элемента сценария «Получить коллекцию категорий».
Code Block | ||
---|---|---|
| ||
var phraseTranslationId = Get<Guid>("BeesenderWelcomeBotPhraseTranslationId");
var sel = new Select(UserConnection)
.Distinct()
.Column("BFAQC","Id")
.Column("BFAQC","BeesenderFAQCategoryName")
.From("BeesenderFAQCategory").As("BFAQC")
.InnerJoin("BeesenderFAQQuestion").As("BFAQQ").On("BFAQC","Id").IsEqual("BFAQQ","BeesenderCategoryId")
.Where("BFAQC","BeesenderWelcomeBotPhraseTranslationId").IsEqual(Column.Parameter(phraseTranslationId))
as Select;
var selection = new List<string>();
using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
{
using (IDataReader dataReader = sel.ExecuteReader(dbExecutor))
{
while(dataReader.Read())
{
if(!dataReader.IsDBNull(1))
{
var item = dataReader.GetGuid(0).ToString() + "|" + dataReader.GetString(1);
selection.Add(item);
}
}
}
};
ObjectList<string> records = ObjectList.Create(selection);
Set<ObjectList<string>>("ButtonsCollection", records);
if(selection.Count == 0)
{
Set<bool>("EmptyQuery", true);
}
return true; |
Если таких категорий нет, процесс завершается.
В остальных случаях элемент скрипта 'заполнение кнопок' используется для заполнения кнопок, которые будут отображаться в элементе Beesender: Сообщение с кнопками 'Выберите категорию'.
Code Block | ||
---|---|---|
| ||
int maxcount = 8;
int currentPage = Get<int>("CurrentPage");
List<string> records = Get<ObjectList<string>>("ButtonsCollection");
var phrasePrevious = Get<string>("PhrasePrevious");
var phraseNext = Get<string>("PhraseNext");
for (int i = 0; i < maxcount; i++)
{
Set<string>($"Button{i+1}","");
}
int countPage = (records.Count-(maxcount-1)-(records.Count-(maxcount-1))%(maxcount-2))/(maxcount-2)+1;
int recordsCountLastPage = (records.Count-(maxcount-1))%(maxcount-2);
if (recordsCountLastPage>0 && maxcount!=records.Count)
{
recordsCountLastPage = (records.Count-(maxcount-1))%(maxcount-2);
if (recordsCountLastPage>1)
{
countPage++;
}
}
if (countPage==1 || records.Count==1)
{
int i=1;
foreach (string record in records)
{
string text = record.Substring(record.IndexOf("|")+1);
Set<string>($"Button{i}", text);
i++;
}
}
else
{
if (currentPage<=countPage)
{
for (int b=1; (b<=maxcount) || (b <recordsCountLastPage);b++)
{
int index = b-1+(currentPage-1)*(maxcount-2);
if (b==1 && currentPage!=1)
{
Set<string>($"Button{b}", phrasePrevious);
}
else
{
if (b==maxcount && currentPage!=countPage)
{
Set<string>($"Button{b}", phraseNext);
}
else
{
if (index<records.Count)
{
string text = records[index].Substring(records[index].IndexOf("|")+1);
Set<string>($"Button{b}", text);
}
}
}
}
}
else
{
return true;
}
}
return true; |
Если пользователь нажимает кнопку категории, значение выбранного идентификатора категории сохраняется с помощью элемента сценария.
Далее с помощью элемента чтения данных Читать текущий FrequencyCount получают значение поля Frequency Count для выбранной категории, а с помощью элемента модификации данных Записать FrequencyCount+1 значение Frequency Count увеличивают на 1. Это необходимо для анализа частоты выбора категории. На этом процесс Beesender — Find question category завершается.
Если категорий более 8, среди кнопок появляется кнопка → для перехода на следующую страницу выбора категории, а кнопка ← появляется для возврата на предыдущую страницу выбора категории.
Точно так же сообщение Beesender: Сообщение с кнопками «Выбрать категорию» всегда включает в себя кнопку «Назад в главное меню» в конце. Если пользователь выбирает опцию «Вернуться в главное меню», параметр «GoTo» заполняется «Вернуться в главное меню» с использованием элемента формулы, который используется в процессе Beesender — Часто задаваемые вопросы. На этом процесс Beesender — Find question category завершается.
Beesender – Find Question
...
Процесс Beesender - Find question аналогичен процессу Beesender - Find question category, но элемент сценария 'список вопросов' используется для получения набора вопросов, соответствующих категории, выбранной пользователем.
Code Block | ||
---|---|---|
| ||
var categoryId = Get<Guid>("CategoryId");
var phraseTranslationId = Get<Guid>("BeesenderWelcomeBotPhraseTranslationId");
var noCategory = Get<bool>("NoCategory");
Select sel;
if (noCategory)
{
sel = new Select(UserConnection)
.Column("Id")
.Column("BeesenderQuestion")
.From("BeesenderFAQQuestion")
.Where("BeesenderCategoryId").IsNull()
.And("BeesenderWelcomeBotPhraseTranslationId").IsEqual(Column.Parameter(phraseTranslationId))
as Select;
}
else
{
sel = new Select(UserConnection)
.Column("Id")
.Column("BeesenderQuestion")
.From("BeesenderFAQQuestion")
.Where("BeesenderCategoryId").IsEqual(Column.Parameter(categoryId))
.And("BeesenderWelcomeBotPhraseTranslationId").IsEqual(Column.Parameter(phraseTranslationId))
as Select;
}
var selection = new List<string>();
using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
{
using (IDataReader dataReader = sel.ExecuteReader(dbExecutor))
{
while(dataReader.Read())
{
if(!dataReader.IsDBNull(1))
{
var item = dataReader.GetGuid(0).ToString() + "|" + dataReader.GetString(1);
selection.Add(item);
}
}
}
};
ObjectList<string> records = ObjectList.Create(selection);
Set<ObjectList<string>>("QuestionCollection", records);
if(selection.Count == 0)
{
Set<bool>("EmptyQuery", true);
}
return true; |
Элемент Beesender: Сообщение с кнопками «Выберите вопрос» аналогичен элементу «Выберите категорию», за исключением добавления новой кнопки — «Изменить категорию». При выборе этой кнопки параметр GoTo заполняется значением «Изменить категорию». Этот параметр используется в процессе Beesender — FAQ.
В конце процесса Beesender - Find Question частота выбранного вопроса также увеличивается на 1. Затем с помощью элемента «прочитать Контакт» получается контакт, связанный с чатом, и создается новая запись в FAQ в объекте чата с помощью элемента Добавить данные «добавить вопрос в FAQ в чате». Запись включает в себя следующую информацию:
Beesender Chat – идентификатор текущего чата
Контакт — идентификатор идентифицировать контакта в чате.
Дата создания — текущая дата и время
Категория FAQ – значение категории выбранного вопроса
FAQ Question – значение вопроса, выбранного пользователем.
Этот элемент используется в качестве детали, которая отображается на вкладке FAQ в карточке чата и вкладке Интересует в карточке контакта. Также используется в аналитике в разделе Чаты.
Beesender – Find Answer
...
Элемент данных Читать данные «если ответ существует» используется для получения ответа на выбранный вопрос.