БП отправки сообщения клиенту в WhatsApp с использованием итератора
Рассмотрим довольно простой процесс по отправке сообщения клиенту в WhatsApp. Он интересен тем, что в нем используется итератор для определения какому из контактов отправить сообщение.
Содержание
Описание процесса отправки сообщения клиенту в WhatsApp
Создание бизнес-процесса
Открываем Роботы в сделках CRM, находим нужную стадию и заходим в редактор бизнес-процесса. В параметрах указываем название процесса и создаем переменные:
- Рабочий ли день — isworkday, переменная типа строка;
- Текущее время — Systime, переменная типа Дата/Время;
- Время отправки — Time, переменная типа Дата/Время;
- След.раб.день — nextday, переменная типа Дата;
- ID контактов — Contacts, переменная типа строка;
- Тип контакта — ContactType, переменная типа строка;

Действия бизнес-процесса
Рабочий день или нет
Действие Изменение переменных.
- Заголовок — Рабочий день или нет;
- Рабочий ли день — {{=if(isWorkDay({=System:Date}), ‘Да’, ‘Нет’)}}
- Текущее время — {=System:Now}


День рабочий?
Действие Запись в отчет.
- Заголовок — День рабочий?;
- Текст — {=Variable:isworkday > printable}; Текущее время {=Variable:Systime > printable};
- Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.
Отправка сообщения заемщику

Условие Рабочий день или нет
Да. День рабочий
- Заголовок — Да;
- Тип условия — Значение переменной;
- Свойство или переменная — Рабочий день;
- Условие — равно;
- Значение — Да.


Разветвление
Действие Запись в отчет.
- Заголовок — Разветвление;
- Текст — День рабочий;
- Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.
Условие Время больше 19:00?

Да. Время больше 19:00
- Заголовок — Да;
- Тип условия — Значение переменной;
- Свойство или переменная — Текущее время;
- Условие — больше;
- Значение — {{=dateadd({=System:Date},”19h”)}}


Разветвление
Действие Запись в отчет.
- Заголовок — Разветвление;
- Текст — Время больше 19:00, поэтому отправим на следующий рабочий день {{=workdateadd ({=System:Date},”1d 19h”)}}
- Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.
След.раб.день
Действие Изменение переменных.
- Заголовок — След.раб.день;
- След.раб.день — {{=workdateadd ({=System:Date}, “1d”)}}


Время след. раб.день 19:00
Действие Изменение переменных.
- Заголовок — Время след. раб.день 19:00;
- Время отправки — {{=dateadd ({=Variable:nextday}, “19h”)}}
Нет. Время меньше 19:00
- Заголовок — Нет;
- Тип условия — Истина;


Разветвление
Действие Запись в отчет.
- Заголовок — Разветвление;
- Текст — Время меньше 19:00, поэтому отправим сегодня в 19:00;
- Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.
Время отправки сегодня 19:00
Действие Изменение переменных.
- Время отправки — {{=dateadd ({=System:Date},”19h”)}}

Конструкция с условием по рабочему дню окончена.

Нет. Выходной день
- Заголовок — Нет;
- Тип условия — Истина;
Разветвление
Действие Запись в отчет.
- Заголовок — Разветвление;
- Текст — Выходной;
- Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.


След.раб.день
Действие Изменение переменных.
- Заголовок — След.раб.день;
- След.раб.день — {{=workdateadd ({=System:Date},”0d”)}}
Время след. раб.день 19:00
Действие Изменение переменных.
- Заголовок — Время след. раб.день 19:00;
- Время отправки— {{=dateadd ({=Variable:nextday}, “19h”)}}

Конструкция с условием по времени окончена.

Дата и время отправки
Действие Запись в отчет.
- Заголовок — Дата и время отправки;
- Текст — {=Variable:Time > printable}
- Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.
Пауза в выполнении
Действие Пауза.
- Заголовок — Пауза в выполнении;
- Режим — Время — {=Variable:Time};
- Дата — Время сервера;
- Сохранять в журнал Бизнес-процесса информацию о паузах — устанавливаем галочку.

Отправка сообщения заемщику

Все контакты
Действие Изменение переменных.
- Заголовок — Все контакты;
- ID контактов — {{Контакты}}.
ID контактов
Действие Запись в отчет.
- Заголовок — ID контактов;
- Текст — {=Variable:Contacts};
- Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.

Итератор

С помощью итератора мы просмотрим каждый контакт в Сделке и если этот контакт с типом Заемщик, то отправим ему сообщение в WhatsApp.

Итератор
Действие Итератор. Выполняет перебор значений во множественных переменных.
- Заголовок — Итератор;
- Выберите переменную — ID контактов.
Выбор данных crm
Действие Выбор данных crm. Выбор данных указанных полей сущности crm, в зависимости от типа сущности.
- Заголовок — Выбор данных crm;
- ID сущности — {=A11001_50644_3271_22295:Value};
- Тип сущности — Контакт;
- Выберите поля — выделите, зажав CTRL на клавиатуре:
- Имя
- Фамилия
- Отчество
- Телефон
- Тип контакта
- Версия для печати — устанавливаем галочку.

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

Тип контакта
Действие Изменение переменных.
- Тип контакта —{=A53196_80502_6036_8041: TYPE_ID}.
Значение берем из вставки Дополнительных результатов.

Контакт
Действие Запись в отчет.
- Заголовок — Контакт;
- Текст — {=A53196_80502_6036_8041: LAST_NAME} {=A53196_80502_6036_8041:NAME} {=A53196_80502_6036_8041: SECOND_NAME} {=A53196_80502_6036_8041: PHONE}. Тип контакта {=A53196_80502_6036_8041: TYPE_ID} / {=Variable:ContactType > printable};
- Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.

Условие Заемщик или нет


Да. Заемщик
- Заголовок — Да;
- Тип условия — Значение переменной;
- Свойство или переменная — Тип контакта;
- Условие — содержит;
- Значение — Заемщик.
Разветвление
Действие Запись в отчет.
- Заголовок — Разветвление;
- Текст — Контакт – Заемщик ({=A53196_80502_6036_8041: TYPE_ID});
- Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.


[Wazzup] Отправить сообщение
Действие [Wazzup] Отправить сообщение в WhatsApp с канала ответственного. Отправить сообщение с канала менеджера, который назначен ответственным за клиента.
- Заголовок — [Wazzup] Отправить сообщение;
- Выберите поле «Ответственный» — {{Ответственный}};
- Номер телефона получателя — {=A53196_80502_6036_8041: PHONE}
- Текст сообщения — Здравствуйте, {{Контакт: Имя}} {{Контакт: Отчество}}. Текст сообщения; Можно подставлять различные переменные, чтобы сообщения были адресные.
- Запускать от имени — {{Ответственный}};
- Устанавливать текст статуса — Да;
- Текст статуса — Ожидание ответа от Wazzup;
- Ожидать ответа — Да;
- Период ожидания — Пусто.
Отчет
Действие Запись в отчет.
- Заголовок — Отчет;
- Текст — Сообщение отправлено;
- Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.


Нет. Не Заемщик
- Заголовок — Нет;
- Тип условия — Истина;
Разветвление
Действие Запись в отчет.
- Заголовок — Разветвление;
- Текст — Контакт – не Заемщик ({=A53196_80502_6036_8041: TYPE_ID});
- Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.

Вот и все. Процесс выполнен.
Как импортировать шаблон бизнес-процесса
Процесс импортируется в уже созданный пустой процесс. Если вы импортируете процесс в другой действующий процесс, то он перезапишется.
Для импорта в дизайнере бизнес-процесса нажимаем кнопку Импорт в верхнем меню.

