Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

Бот працює на основі 15 бізнес-процесів. Основний процес чатбота - це Beesender Welcome бот, який складається з кількох етапів.

Beesender – Welcome Bot

Спочатку чат з'єднується з бізнес-процесом через елемент 'Connect chat'. Потім виконується перевірка, щоб уникнути повторного запуску процесу чатбота, якщо він вже працює в поточному чаті. Після цього ініціюється підпроцес вибору мови, а за ним - отримання відповідей чатбота для обраної мови.

Далі йдуть два елементи Beesender: "Beesender: Текстове повідомлення" з вітальною відповіддю чатбота. Якщо контакт впізнаний, вітальне повідомлення чатбота буде включати ім'я контакту, тоді як для невпізнаних контактів буде надіслано загальне вітальне повідомлення. Наступний елемент - це Beesender: Задати питання ‘Main menu’, яка дозволяє користувачам вибирати різні опції відповідно до їхніх потреб.

Кожна гілка веде до свого власного підпроцесу:

Функція головного меню

Назва підпроцесу

Замовити дзвінок

Beesender – Callback request

Поширені запитання

Beesender – Frequently Asked Questions

Чат з оператором

Beesender - Chat with an agent

Змінити мову

Beesender – Choose Language

Закрити чат

Beesender – Close Chat

Перед виконанням підпроцесу Beesender - Callback request клієнт ідентифікується та/або реєструється за допомогою процесу Beesender - Client identification. Після завершення підпроцесів Callback request та FAQ, бот відображає друге меню, де користувач може вибрати один з двох варіантів:

  • Закрити чат

  • У головне меню

Якщо користувач обирає повернення до головного меню у результаті процесу Beesender - Client identification, registration, процес повертається до елементу Beesender: Задати питання ‘Main menu’. Якщо агент не знайдений у результаті процесу Beesender - Chat with an agent process і користувач обирає Замовлення дзвінка, процес запускає підпроцес Beesender - Client identification, registration.

Якщо агент не знайдений у результаті процесу Beesender - Chat with an agent і користувач обирає Повернутися до головного меню, процес повертається до елементу Beesender: Задати питання ‘Main menu’.

Якщо агент не знайдений у результаті процесу Beesender - Chat with an agent і користувач обирає Закрити чат, процес запускає підпроцес Beesender - Close Chat.

Якщо результат будь-якого підпроцесу або кнопки у меню (головному або другому) передбачає закриття чату, бот активує відповідний підпроцес Beesender - Close chat.

Beesender – Choose Language

Спочатку генерується колекція доступних перекладів на основі налаштувань “Мова використовується” та “Мова доступна” у роздiлi “Налаштування welcome бота”. Потім проводиться перевірка на наявність перекладу на переважну мову впізнаного контакту в чаті.

Далі йде перевірка на наявність запису “Налаштування welcome бота”, де параметр 'language' дорівнює переважній мові впізнаного контакту в чаті, за умови, що параметри “Мова використовується” та “Мова доступна” встановлені як істина у цьому записі.

  1. Якщо контакт у чаті впізнаний, і існує відповідний запис у “Налаштування welcome бота” з установленими параметрами 'Мова використовується' та 'Мова доступна' = true, і користувач не обрав функцію 'Змінити мову', тоді параметр 'LanguageId' буде заповнено відповідно до переважної мови з картки контакту.

  2. Якщо існує лише один запис “Налаштування welcome бота”, який відповідає умовам, тоді параметр 'LanguageId' буде заповнений мовою з відповідного запису.

  3. Якщо немає записів “Налаштування welcome бота”, які відповідають умовам, чатбот повідомить користувача англійською мовою: "The chat was closed." і чат буде закрито.

  4. У всіх інших випадках чатбот запропонує користувачу вибрати мову зі списку, який відповідає умовам. Параметр 'LanguageId' буде заповнений відповідно до мови, обраної користувачем. Обрана мова також буде занесена в картку контакту у поле 'переважна мова' та у картку чату у поле 'Мова спілкування'.

Фрази у всіх елементах беруться з картки “Налаштування welcome бота” для мови, обраної користувачем.

Beesender – Client identification, registration

На початку процесу ідентифікації клієнта проводиться перевірка на наявність контакту та на те, чи дав він згоду на обробку даних (поле 'Згода' у картці Контакту).

Далі, якщо контакт не дав згоди і прапорець ‘Запитувати згоду на обробку даних' установлено як 'true’ у записі конфігурації Welcome Bot для поточної мови, або контакт не впізнаний і прапорець 'Запитувати згоду на обробку даних' установлено як істина у записі конфігурації Welcome Bot для поточної мови, бот запитує згоду на обробку даних.

  • Якщо користувач не дає згоди на обробку даних або обирає повернутися до головного меню, параметр GoTo заповнюється значенням "Main Menu". Цей параметр буде використовуватися у процесі Beesender - Welcome Bot.

  • Якщо користувач обирає закрити чат, параметр GoTo заповнюється значенням "Close chat". Цей параметр також буде використовуватися у процесі Beesender - Welcome Bot.

  • Якщо користувач дає згоду на обробку даних, виконуються елементи 'Read ChatMessageGDPRQuestion' та 'Read ChatMessageGDPRAnswer', які отримують ID повідомлень питання бота та відповіді користувача.

  1. Якщо контакт визнано у чаті, параметр ContactId заповнюється визнаним значенням контакту. Запускається процес (warning) Beesender - Log GDPR. Потім перевіряється, чи введена електронна пошта у картці контакту.

    • Якщо електронна пошта не введена у визнаній картці контакту, запускається процес (warning) Beesender - Enter Your Email. Після цього запускається елемент ‘Set Email to Contact’, який заповнює поле електронної пошти у визнаній картці контакту.

    • Якщо електронна пошта введена, процес завершується.

  2. Якщо контакт не визнано у чаті, запускається процес Beesender - Enter Your Email. Потім виконується пошук контакту з такою ж електронною поштою на основі параметру Email з цього процесу.

    • Якщо знайдено контакт з такою електронною поштою, то параметр ContactId заповнюється значенням знайденого контакту в елементі формули "Set ContactId". І запускається вбудований процес з пакету Beesender - (warning) Bind channel to contact is started. Після цього процесу запускається процес (warning) Beesender - Log GDRP, і процес (warning)Beesender - Client identification, registration, реєстрація завершується.

    • Якщо контакт з такою електронною поштою не знайдено, використовується елемент 'Читання CC з введеною електронною поштою' для пошуку контакту, який включає дану електронну пошту до своїх комунікаційних опцій.

    • Якщо контакт з такою електронною поштою не знайдено, використовується елемент 'Read CC with entered email' для пошуку контакту, який включає дану електронну пошту до своїх комунікаційних опцій.

      • Якщо такий контакт знайдено, то параметр ContactId заповнюється значенням знайденого контакту в елементі формули "Set ContactId". За допомогою елемента 'set Preferred Language' поле 'Вибрана мова' у картці знайденого контакту заповнюється мовою, яку користувач обрав під час процесу Beesender - Choose Language. І запускається вбудований процес з пакету Bind channel to contact is started. Після цього процесу запускається процес Beesender - Log GDRP, і процес Beesender - Client identification, registration завершується.

    • Якщо такий контакт не знайдено, бот просить користувача вказати своє повне ім'я за допомогою елементу Beesender: Повідомлення з кнопками ‘Please enter your full name’ Далі створюється новий контакт за допомогою елемента Додавання даних 'Create a new contact', з заповненими полями: Повне ім'я, електронна пошта та вибрана мова. Потім параметр ContactId заповнюється значенням створеного контакту в елементі формули "Set ContactId". Після цього запускається вбудований процес з пакету Beesender - Bind channel to contact is started. Після цього процесу запускається процес Beesender - Log GDRP, і процес Beesender - Client identification, registration завершується.

Beesender – Enter Your Email

На початку бізнес-процесу є елемент Beesender: Повідомлення з кнопками "Please enter your email", через який чат-бот підказує користувачу ввести свою електронну пошту.

Електронна пошта, введена користувачем, перевіряється на валідність у елементі "IsEmailValid".

  • Якщо введена електронна пошта недійсна, активується елемент Beesender: Текстове повідомлення “Invalid email address“, через який бот надсилає текстове повідомлення про те, що введена електронна пошта недійсна. І процес повертається до першого елементу Beesender: Повідомлення з кнопками "Please enter your email".

  • Якщо електронна пошта, введена користувачем, дійсна, тоді значення електронної пошти заповнюється у текстовому параметрі Email у формульному елементі "Set Email".

Цей параметр Email використовується у процесі Beesender - Client Identification, Registration process.

Beesender - Log GDPR

Процес “Beesender - Log GDPR” включає передачу наступних параметрів:

  • ChatMessageGDPRQuestion - ID повідомлення з питанням про збір даних;

  • ChatMessageGDPRAnswer - ID повідомлення з відповіддю на збір даних;

  • ContactId - ID визнаного або новоствореного контакту.

Елемент Add GDPR question створює новий запис у об'єкті “Згода на обробку персональних даних” і додає повідомлення з питанням.

Елемент Add GDPR answer створює новий запис у об'єкті “Згода на обробку персональних даних” і додає повідомлення з відповіддю користувача.

Елемент Set Consent status = true змінює прапорець “Згода” у картці Контакту користувача, який дав згоду на обробку даних.

У результаті цього підпроцесу запис Контакту відображає деталь Згода на обробку персональних даних з повідомленнями чат-бота та користувача щодо згоди на обробку даних.

Bind channel to contact (from Beesender package)

Процес BindChannelToContact є вбудованою функцією додатку Beesender. Він є важливим для асоціації користувача з певним контактом, забезпечуючи впізнаваність користувача як цього контакту у подальших сесіях чату.

Використовуючи процес BindChannelToContact, додаток Beesender може підтримувати послідовний та точний запис взаємодій кожного користувача з системою обслуговування клієнтів організації. Це дозволяє забезпечувати більш персоналізоване та ефективне обслуговування, оскільки агенти можуть швидко отримати доступ до інформації контакту користувача, історії чату та інших відповідних деталей під час майбутніх сесій чату.

Цей процес не тільки покращує загальний досвід клієнтів, але й допомагає організаціям краще розуміти потреби, переваги та проблеми своїх клієнтів, що призводить до більш обізнаного прийняття рішень та цілеспрямованих стратегій підтримки.

Beesender – Callback request

На початку процесу Beesender – Callback Request використовується елемент “Read Contact Data” для отримання інформації про контакт. Після отримання даних контакту, процес перевіряє, чи заповнений у картці контакту номер телефону.

  • Якщо номер телефону заповнений, параметр "Phone" заповнюється номером телефону контакту. Далі, використовуючи елемент Beesender: Повідомлення з кнопками 'Can we call this number {Number}?' з варіантами відповідей "Так" та "Ні", бот запитує у користувача, чи може компанія зв'язатися з номером, вказаним у картці контакту.

  • Якщо номер телефону не заповнений у картці контакту або якщо контакт обирає "Ні" у елементі Beesender: Повідомлення з кнопками 'Can we call this number {Number}?', чат-бот просить користувача ввести номер телефону за допомогою елемента Beesender: Повідомлення з кнопками 'Please enter the number you want us to call'. Введений користувачем номер телефону зберігається у параметрі Phone за допомогою формульного елемента 'Phone'.

Елемент "Add new phone number to contact communication options" створює новий запис у об'єкті ‘Засіб зв'язку контакта’, заповнюючи наступні параметри:

  • Контакт - ID контакту;

  • Номер - Номер телефону, введений контактом;

  • Тип - Мобільний телефон.

Далі, і у випадку, коли клієнт обрав "Так" у елементі Beesender: Повідомлення з кнопками ‘‘Can we call this number {Number}?' чат-бот запитує бажаний час для дзвінка, використовуючи елемент Beesender: Повідомлення з кнопками 'What time would you like us to call you?’. Потім чат-бот підтверджує з користувачем, що йому незабаром зателефонують, використовуючи елемент Beesender: Текстове повідомлення 'Thank you! We will call you soon'. Потім, використовуючи формульний елемент 'Set Subject', текстовий параметр Subject заповнюється наступним значенням: "Прийняти запит на зворотний дзвінок. Джерело: чат-бот. Ім'я: "Accept the request for a callback. Source: chatbot. Name: " +{Contact name}+ ", phone number: "+{Phone}+", time to call: "+{Answer}+"."

Then, using the 'Create activity' Add data element, a new activity is created with the following parameters:

Потім, використовуючи елемент 'Create activity' Додати дані, створюється нова активність з наступними параметрами:

  • Contact: ID контакту

  • Subject: текстовий параметр Subject

  • Type: Дзвінок

  • Show in calendar: Так

  • Due: Поточний час + 1 день

  • Beesender Chat: ID поточного чату

Beesender – Frequently Asked Questions

The process consists of three sub-processes: Процес Beesender - Frequently Asked Questions складається з трьох підпроцесів:

та меню Поширених запитань (FAQ menu).

Якщо результат процесу Beesender - Find question category є Повернення до головного меню, то параметр ‘FAQResult’ заповнюється, який використовується у головному процесі Welcome Bot.

If the result of the process is Back to the main menu, then also the FAQResult parameter is filled out, which is taken in the main Welcome Bot process.

Якщо результат процесу Beesender – Find Question є Повернення до головного меню, то також параметр FAQResult заповнюється, який використовується у головному процесі Welcome Bot.

If the result of the process is Change a category, then the chatbot returns to the sub-process.

Якщо результат процесу Beesender – Find Question є Зміна категорії, тоді чат-бот повертається до (warning) підпроцесу вибору категорії.

Меню Поширених запитань FAQ menu включає кнопки такі як:

  • Повернутися назад;

  • Зміна категорії;

  • Повернення до головного меню;

  • Закрити чат.

Залежно від обраної опції, чат-бот повертається до підпроцесу (warning)вибору питання або підпроцесу (warning)вибору категорії.

Якщо обрано опції Повернення до головного меню (Back to the main menu) або Закрити чат (Close the chat), параметр ‘FAQResult’ заповнюється, який використовується у головному процесі Welcome Bot.

Beesender – Find question category

На початку процесу Beesender - Find question category збираються категорії Поширених запитань, які відповідають обраній користувачем мові, за допомогою скриптового елементу 'Get Categories Collection'.

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;

Якщо таких категорій немає, процес завершується.

У інших випадках використовується скриптовий елемент 'button filling' для заповнення кнопок, які будуть відображатися в елементі Beesender: Повідомлення з кнопками 'Choose category'.

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;

Якщо користувач натискає на кнопку категорії, значення ID обраної категорії зберігається за допомогою скриптового елементу.

Similarly, the Beesender: Повідомлення з кнопками 'Choose category' always includes a Back to the main menu button at the end. If the user selects the Back to the main menu option, the GoTo parameter is filled with 'BackMainMenu' using the formula element, which is used in the Beesender – Frequently Asked Questions process. The process Beesender – Find question category is then completed.

Далі, використовуючи елемент Читати дані ‘read current FrequencyCount', отримується значення поля Частота Використання (Frequency Count) для обраної категорії, і за допомогою елементу Змінити дані 'set FrequencyCount+1', значення Частоти Використання збільшується на 1. Це необхідно для аналізу частоти вибору категорій. Процес Beesender – Find question category тоді завершується.

Якщо є більше ніж 8 категорій, в кнопках з'являється кнопка → для переходу на наступну сторінку вибору категорії, та кнопка ← для повернення на попередню сторінку вибору категорії.

Аналогічно, Beesender: Повідомлення з кнопками 'Choose category' ('Оберіть категорію') завжди включає кнопку Back to the main menu (Повернення до головного меню) в кінці спiсу. Якщо користувач обирає опцію Повернення до головного меню, параметр GoTo заповнюється 'BackMainMenu' за допомогою формульного елементу, який використовується у процесі Beesender – Frequently Asked Questions. Процес Beesender – Find question category тоді завершується.

Beesender – Find Question

Процес Beesender - Find Question схожий на процес Beesender – Find question category, але використовується скриптовий елемент 'question list' для отримання колекції питань, які відповідають категорії, обраній користувачем.

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;

Елемент схожий на елемент 'Choose category’, за винятком додавання нової кнопки - Change a category. Коли ця кнопка обрана, параметр GoTo заповнюється значенням "ChangeCategory". Цей параметр використовується у процесі Beesender – Frequently Asked Questions.

На закінчення процесу Beesender - Find Question частота обраного питання також збільшується на 1. Потім, використовуючи елемент ‘read Contact', отримується контакт, асоційований з чатом, і створюється новий запис у об'єкті ‘Запитання в чаті’ за допомогою елементу Додати дані ‘add question to FAQ in chat’. Запис включає наступну інформацію:

  • Чат Beesender – ID поточного чату;

  • Контакт – ID визнаного контакту у чаті;

  • Дата створення – поточні дата та час;

  • Категорія поширених запитань– значення категорії обраного питання;

  • Поширене запитання – значення питання, обраного користувачем.

FAQ Питання – значення питання, обраного користувачем.

Цей елемент використовується як деталі, які відображаються на вкладці FAQ у картці чату та на вкладці Чим цікавиться в картці контакту. Він також використовується в аналітиці у розділі Чати.

Beesender – Find Answer

Елемент читатi данi "if answer exists" використовується для отримання відповіді на обране питання.

  • Якщо така відповідь існує, елемент Beesender: Текстове повідомлення "Answer" надсилає текстове повідомлення користувачеві з відповіддю на обране питання.

  • Якщо відповідь не існує (тобто не заповнена у картці питання), то параметр EmptyQuesry заповнюється значенням "true" за допомогою формульного елемента ‘EmptyQuesry=true’. Цей параметр використовується у процесі Beesender – Find question category у елементі меню FAQ.

Beesender - Chat with an agent

На початку процесу Beesender - Chat with an agent спочатку читаються дані поточного чату, які необхідні для розподілу агентів. Після цього запускається процес FindFreeOperatorFromGroup.

Якщо в результаті виконання процесу вільний агент не знайдений, елемент Beesender: Повідомлення з кнопками 'We are sorry. Our agents can't answer you now. What do you prefer?' пропонує користувачеві вибрати один з наступних варіантів:

  • Повернутися до головного меню;

  • Замовити дзвінок;

  • Закрити чат.

Якщо користувач натискає на кнопку, результат зберігається у параметрі GoTo, який використовується у процесі (warning) Beesender - Welcome bot.

Якщо вільний агент знайдений, чат-бот інформує користувача, що чат було перенаправлено до агента за допомогою елемента Beesender: Текстове повідомлення 'Chat transferred to an agent'. Після цього використовується вбудований процес BeesenderLogOperatorChange для запису даних про зміну агента. Дані відображаються у картці чату на вкладці Оператори у деталях Оператори.

FindFreeOperatorFromGroup (із пакету Beesender)

Процес FindFreeOperatorFromGroup є вбудованою функцією додатку Beesender. Він є невід'ємним для розподілу сесій чату між групою агентів. Цей процес гарантує, що вхідні запити на чат призначаються доступним агентам, що дозволяє ефективно та своєчасно надавати обслуговування клієнтам.

Використовуючи процес FindFreeOperatorFromGroup, додаток Beesender може рівномірно розподілити робоче навантаження між агентами у групі, запобігти перевантаженню будь-якого окремого агента та підтримувати високий рівень підтримки клієнтів. Ця функція особливо корисна для організацій, в яких декілька агентів працюють разом для обробки запитів клієнтів та підтримки.

BeesenderLogOperatorChange (із пакету Beesender)

Процес BeesenderLogOperatorChange є вбудованою функцією додатку Beesender. Він важливий для відстеження історії призначення агентів у картках чату, зокрема на вкладці "Оператори" та у деталі "Оператори".

Цей процес створює запис про те, який агент був призначений до чату, метод призначення та час призначення. Записуючи цю інформацію, додаток Beesender дозволяє краще контролювати та аналізувати процес розподілу чатів. Він допомагає організаціям стежити за ефективністю своїх агентів підтримки клієнтів, виявляти можливі вузькі місця або проблеми та оптимізувати загальний процес обробки чатів.

Beesender – Close Chat

Процес Beesender - Close chat складається з двох елементів:

  • Message – це прощальне повідомлення, яке отримує користувач, і в чаті з'являється кнопка "Розпочати новий чат".

  • Close chat – елемент, який змінює дані поточного чату та встановлює значення Закрито = true та Як закрили чат = Закрито Процесом.

Ці елементи виконуються паралельно. Це необхідно для того, щоб користувач міг бачити кнопку під час закриття чату, і чат-бот не чекав відповіді на кнопку.

Beesender Copy Categories and Questions to Added Welcome bot configuration record

Процес 'Beesender Copy Categories and Questions to Added Welcome bot configuration record' призначений для автоматичного створення записів категорій і питань у новій картці в розділі FAQ, коли створюється новий запис у розділі конфігурації Welcome bot, наприклад, коли потрібен переклад на нову мову. Адміністратору буде лише потрібно ввести переклади у новий запис.

Цей процес активується, коли до об'єкту конфігурації Welcome bot додається новий запис. Потім процес використовує елемент скрипту 'Copy records' для копіювання записів категорій і питань разом з їхніми відповідями до нового запису.

var WelcomeConfig = Get<Guid>("WelcomeConfig");
var welcomeConfigDefault = Get<Guid>("WelcomeConfigDefault");

var insertCategories = new InsertSelect(UserConnection)
    .Into("BeesenderFAQCategory")
    .Set("BeesenderFAQCategoryName","BeesenderFAQParentCategoryId","BeesenderWelcomeBotPhraseTranslationId","BeesenderFAQCategoryIsParent")
    .FromSelect(new Select(UserConnection)
        .Column("BeesenderFAQCategoryName")
        .Column("Id")
        .Column(Column.Parameter(WelcomeConfig))
        .Column(Column.Parameter(false))
        .From("BeesenderFAQCategory")
        .Where("BeesenderWelcomeBotPhraseTranslationId").IsEqual(Column.Parameter(welcomeConfigDefault))
        as Select);
insertCategories.Execute();

var insertCategoryQuestions = new InsertSelect(UserConnection)
	.Into("BeesenderFAQQuestion")
	.Set("BeesenderWelcomeBotPhraseTranslationId","BeesenderParentQuestionId","BeesenderCategoryId","BeesenderQuestion","BeesenderAnswer","BeesenderIsParent")
	.FromSelect(new Select(UserConnection)
		.Column(Column.Parameter(WelcomeConfig))
		.Column("BQDef","Id")
		.Column("BCAdded","Id")
		.Column("BQDef","BeesenderQuestion")
		.Column("BQDef","BeesenderAnswer")
		.Column(Column.Parameter(false))
		.From("BeesenderFAQQuestion").As("BQDef")
		.Join(JoinType.Inner, "BeesenderFAQCategory").As("BCAdded")
		.On("BQDef","BeesenderCategoryId").IsEqual("BCAdded","BeesenderFAQParentCategoryId")
		.Where("BQDef","BeesenderWelcomeBotPhraseTranslationId").IsEqual(Column.Parameter(welcomeConfigDefault))
		.And("BCAdded","BeesenderWelcomeBotPhraseTranslationId").IsEqual(Column.Parameter(WelcomeConfig))
		as Select);
insertCategoryQuestions.Execute();

var insertNoCategoryQuestions = new InsertSelect(UserConnection)
	.Into("BeesenderFAQQuestion")
	.Set("BeesenderWelcomeBotPhraseTranslationId","BeesenderParentQuestionId","BeesenderQuestion","BeesenderAnswer","BeesenderIsParent")
	.FromSelect(new Select(UserConnection)
		.Column(Column.Parameter(WelcomeConfig))
		.Column("Id")
		.Column("BeesenderQuestion")
		.Column("BeesenderAnswer")
		.Column(Column.Parameter(false))
		.From("BeesenderFAQQuestion")
		.Where("BeesenderWelcomeBotPhraseTranslationId").IsEqual(Column.Parameter(welcomeConfigDefault))
		.And("BeesenderCategoryId").IsNull()
		as Select);
insertNoCategoryQuestions.Execute();

return true;

Beesender Copy FAQ Category To Other Phrase Translations

Процес 'Beesender Copy FAQ Category To Other Phrase Translations' створений для автоматичного створення записів категорій у всіх інших мовних картках, коли нова категорія створюється у картці англійської мови. Адміністратору потрібно лише ввести переклади категорій на бажану мову.

Процес активізується, коли до об'єкту FAQ Category для картки англійської мови додається новий запис. Після цього елемент Читати дані 'read category' читає дані новоствореної категорії. Нарешті, використовуючи скриптовий елемент 'insert record to other WBPhraseTranslations', категорія копіюється на всі інші мови.

var faqCategoryId = Get<Guid>("FAQCategoryId");
var categoryName = Get<string>("CategoryName");
var wbPhraseTranslationId = Get<Guid>("WBPhraseTranslationId");

var sel = new Select(UserConnection)
	.Column("Id")
	.From("BeesenderWelcomeBotPhraseTranslation")
	.Where("Id").IsNotEqual(Column.Parameter(wbPhraseTranslationId))
	as Select;

List<Guid> selection = new List<Guid>();

using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
    {
        using (IDataReader dataReader = sel.ExecuteReader(dbExecutor))
        {
            while(dataReader.Read())
            { 
              if(!dataReader.IsDBNull(0)) 
              selection.Add(dataReader.GetGuid(0)); 
            }
        }
    };

if(selection.Count > 0)
{
	var currentphrasetranslationId = Guid.NewGuid();
	foreach (Guid record in selection)
	{
		currentphrasetranslationId = record;
		var ins = new Insert(UserConnection)
			.Into("BeesenderFAQCategory")
			.Set("BeesenderFAQCategoryName",Column.Parameter(categoryName))
			.Set("BeesenderFAQParentCategoryId",Column.Parameter(faqCategoryId))
			.Set("BeesenderWelcomeBotPhraseTranslationId",Column.Parameter(currentphrasetranslationId));
		var affectedRows = ins.Execute();
	}
}

return true;

Beesender Copy FAQ Question To Other Phrase Translations

Процес 'Beesender Copy FAQ Question To Other Phrase Translations' призначений для автоматичного створення записів питань на всіх інших мовах, коли нове питання додається до англомовних Поширених запитань (FAQ). Адміністратору потрібно лише ввести переклади питань на відповідні мови.

Процес запускається, коли до об'єкту FAQ Question для англійської мови додається новий запис. Дані новоствореного питання читаються за допомогою елементу Читати дані. Потім, використовуючи скрипт 'insert record to other WBPhraseTranslations', питання копіюється на всі інші мови.

var question = Get<string>("Question");
var answer = Get<string>("Answer");
var faqCategoryId = Get<Guid>("FAQCategoryId");
var faqQuestionId = Get<Guid>("FAQQuestionId");
var parentCategoryId = Get<Guid>("ParentCategoryId");
var wbPhraseTranslationId = Get<Guid>("WBPhraseTranslationId");
var sel = new Select(UserConnection)
	.Column("Phrase","Id")
	.From("BeesenderWelcomeBotPhraseTranslation").As("Phrase")
	.Where("Phrase","Id").IsNotEqual(Column.Parameter(wbPhraseTranslationId))
	as Select;
List<Guid> selection = new List<Guid>();

using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
{
    using (IDataReader dataReader = sel.ExecuteReader(dbExecutor))
    {
        while(dataReader.Read())
        { 
          if(!dataReader.IsDBNull(0)) 
          selection.Add(dataReader.GetGuid(0)); 
        }
    }
};

if(selection.Count > 0)
{
	var currentphrasetranslationId = Guid.NewGuid();
	if (faqCategoryId==Guid.Empty)
	{
		foreach (Guid record in selection)
		{
			currentphrasetranslationId = record;
			var ins = new Insert(UserConnection)
				.Into("BeesenderFAQQuestion")
				.Set("BeesenderQuestion",Column.Parameter(question))
				.Set("BeesenderAnswer",Column.Parameter(answer))
				.Set("BeesenderParentQuestionId",Column.Parameter(faqQuestionId))
				.Set("BeesenderWelcomeBotPhraseTranslationId",Column.Parameter(currentphrasetranslationId));
			var affectedRows = ins.Execute();
		}
	}
	else
	{
		foreach (Guid record in selection)
		{
			currentphrasetranslationId = record;
			var ins = new Insert(UserConnection)
				.Into("BeesenderFAQQuestion")
				.Set("BeesenderQuestion",Column.Parameter(question))
				.Set("BeesenderAnswer",Column.Parameter(answer))
				.Set("BeesenderParentQuestionId",Column.Parameter(faqQuestionId))
				.Set("BeesenderWelcomeBotPhraseTranslationId",Column.Parameter(currentphrasetranslationId))
				.Set("BeesenderCategoryId", 
					new Select(UserConnection)
					.Top(1)
					.Column("Id")
					.From("BeesenderFAQCategory")
					.Where("BeesenderWelcomeBotPhraseTranslationId").IsEqual(Column.Parameter(currentphrasetranslationId))
					.And("BeesenderFAQParentCategoryId").IsEqual(Column.Parameter(parentCategoryId)));
			var affectedRows = ins.Execute();
		}
	}
}
else
{
	Set("EmptyQuery",true);
}
return true;
  • No labels