Перейти к основному контенту

Как вернуть лида в нужный сценарий

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

Прерывание сценария — это прерывания сессии диалога или другими словами сброс диалога. Это происходит в нескольких случаях:

  • Если в скрипте, в который попал пользователь, нет переходов дальше, т.е. команды прерываются и образуется тупик;
  • Если в скрипте стоит команда СТОП;
  • Если пользователю пришли рассылка или триггер также без продолжающих сценарий переходов;
  • Если пользователю живой человек написал сообщение через интерфейс лида;
  • Если живой человек забрал диалог из КЦ.

В этой статье будет рассмотрено решение для работы чат-бота в связке с КЦ.

Базовые команды

Для корректной работы перевода на оператора и обратно в чат-бота обязательно должны быть созданы 2 скрипта:

  • Перевод на оператора — в котором происходит запрос вопроса или контактных данных и, собственно, сам перевод;

Однако если чат-бот работает полностью автономно, то этого скрипта может и не быть.

  • Возврат в бота — с типом Возврат, в котором происходит передача боту и развилка по сценариям. 

image.png

Работа в КЦ

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

image.png

Диалог бота будет прерван и вернется, только когда оператор его завершит.

image.png

В момент завершения сработает скрипт Возврат в бота с типом Возврат.

Возврат в выбранный сценарий.

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

image.png

1 команда отвечает за возврат диалога боту — убирает галку параметра Чат с оператором у лида.
2 команда — текст, сообщающий лиду о том, что с ним снова общается бот.
3 команда работает только если у лида проставлена определенная переменная (которую проставит оператор).
4 команда работает также только при наличии этой команды и запрещает переход дальше, чтобы успел сработать запущенный переход из 3 команды.
5 команда — стандартный переход по сценарию возврата, обычно это главное меню бота.

//Условие команды
if (lead.getAttr('сценарий')) {
return true;
}

/*Условие проверяет, есть ли в переменной значение или там null. Если значения нет, то комнада не запустится*/

//Тело команды
let scriptNum = lead.getAttr('сценарий');  //присвоение переменной в код запуска скрипта

bot.runScriptForLead(scriptNum, leadId, null, false);  //код запуска скрипта по его номеру в конструкторе

Как присвоить переменную? 

Для этого оператору понадобится кликабельная шапка лида в КЦ.

image.png

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

image.png

image.png

Где взять номер скрипта? 

Номер скрипта прописан в URL конструктора 

image.png

Именно в него перейдет лид, после возврата в бота, если номер будет сохранен в переменной лида.

Пример

image.png

image.png

image.png

Ответы на другие вопросы

1. Можно ли назвать переменную не сценарий?

Можно, переменную разработчик/оператор бота может назвать как удобно. ВАЖНО, чтобы эти названия полностью совпадали, иначе код не запустится

2. Как потом работать с этим лидом? Надо ли удалять значение переменной?

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

//Функция добавляет в значение перемнной null, т.е. очищает её
lead.setAttr('сценарий', null);

Также рекомендуем проверять переменную в работе оператора с ботом при завершении диалога. Если переменная есть, то ее также через редактирование лида можно очистить.