Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Если контакт с таким 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
languagec#
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
languagec#
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
languagec#
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

...

Элемент данных Читать данные «если ответ существует» используется для получения ответа на выбранный вопрос.