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

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

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

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

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

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

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

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

<p class="callout info">Однако если чат-бот работает полностью автономно, то этого скрипта может и не быть.</p>

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

[![image.png](https://docs.metabot24.ru/uploads/images/gallery/2023-08/scaled-1680-/cn4SA0vPtcvPaFrj-image.png)](https://docs.metabot24.ru/uploads/images/gallery/2023-08/cn4SA0vPtcvPaFrj-image.png)

### Работа в КЦ

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

[![image.png](https://docs.metabot24.ru/uploads/images/gallery/2023-08/scaled-1680-/qtYR1gZ3s79uFJIf-image.png)](https://docs.metabot24.ru/uploads/images/gallery/2023-08/qtYR1gZ3s79uFJIf-image.png)

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

[![image.png](https://docs.metabot24.ru/uploads/images/gallery/2023-08/scaled-1680-/kcslKqqI6SppjMgr-image.png)](https://docs.metabot24.ru/uploads/images/gallery/2023-08/kcslKqqI6SppjMgr-image.png)

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

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

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

[![image.png](https://docs.metabot24.ru/uploads/images/gallery/2023-08/scaled-1680-/CnkUUePvqz8d5Osv-image.png)](https://docs.metabot24.ru/uploads/images/gallery/2023-08/CnkUUePvqz8d5Osv-image.png)

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

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

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

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

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

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

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

[![image.png](https://docs.metabot24.ru/uploads/images/gallery/2023-08/scaled-1680-/mSRk1JWWOUrzxtFR-image.png)](https://docs.metabot24.ru/uploads/images/gallery/2023-08/mSRk1JWWOUrzxtFR-image.png)

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

[![image.png](https://docs.metabot24.ru/uploads/images/gallery/2023-08/scaled-1680-/hEXdRd1Q3dNbiLRG-image.png)](https://docs.metabot24.ru/uploads/images/gallery/2023-08/hEXdRd1Q3dNbiLRG-image.png)

[![image.png](https://docs.metabot24.ru/uploads/images/gallery/2023-08/scaled-1680-/vHvcEpdgFfvZZS4v-image.png)](https://docs.metabot24.ru/uploads/images/gallery/2023-08/vHvcEpdgFfvZZS4v-image.png)

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

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

[![image.png](https://docs.metabot24.ru/uploads/images/gallery/2023-08/scaled-1680-/L6XBpwesez0StblF-image.png)](https://docs.metabot24.ru/uploads/images/gallery/2023-08/L6XBpwesez0StblF-image.png)

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

#### Пример

[![image.png](https://docs.metabot24.ru/uploads/images/gallery/2023-08/scaled-1680-/MRFmrkuqvbavsUOG-image.png)](https://docs.metabot24.ru/uploads/images/gallery/2023-08/MRFmrkuqvbavsUOG-image.png)

[![image.png](https://docs.metabot24.ru/uploads/images/gallery/2023-08/scaled-1680-/LAXXgnSU8FR81ilk-image.png)](https://docs.metabot24.ru/uploads/images/gallery/2023-08/LAXXgnSU8FR81ilk-image.png)

[![image.png](https://docs.metabot24.ru/uploads/images/gallery/2023-08/scaled-1680-/72khQjJeKIm5fRZ7-image.png)](https://docs.metabot24.ru/uploads/images/gallery/2023-08/72khQjJeKIm5fRZ7-image.png)

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

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

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

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

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

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

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