Внутренняя культура компании часто подразумевает отправку поздравлений с Днем рождения сотрудникам. Каждая компания реализует это по-разному, но в большинстве случаев такой кейс можно автоматизировать с учетом внутренних особенностей корпоративной культуры. Сегодня в статье расскажем, как можно настроить автоматическую отправку сообщений с помощью Битрикс24 и Пинкит.
1. Авторассылка поздравлений
Проблема
Наш заказчик занимается производством оборудования. Сотрудники его компании работают в Битрикс24 (всего на портал заведено несколько сотен пользователей).
Согласно внутренней культуре компании, каждому сотруднику в День его рождения отправляется поздравление и подарочный сертификат от имени директора.
Механизм распределения заявок в Битрикс24 по менеджерам с передачей количества лидов в профиль сотрудника: читайте в нашем блоге.
Дата рождения сотрудника указана в его карточке профиля. Как правило, поздравление и сертификат отправляются на электронную почту и в мессенджер WhatsApp.
Процесс организован так: ответственный сотрудник вручную отслеживает, в какой день у каждого сотрудника день рождения, а затем также вручную копирует шаблонный текст поздравления плюс сертификат и отправляет имениннику.
Сотрудников много, в один день может быть праздник одновременно у нескольких специалистов, а так как процесс выполняется вручную, то из-за других важных срочных задач есть риск кого-то пропустить.
Перенос дел в Битрикс24 из сделок в таймлайн компании с удалением дубликатов: подробности в кейсе.
Поэтому заказчик поставил перед нами задачу не только автоматизировать рассылку, но и формировать списки именинников на ближайший месяц и ближайший год. Такой подход обеспечит большую прозрачность процесса, плюс в списки будут попадать все сотрудники (включая новых) без ручного труда.
Решение
Мы предложили решить задачу с помощью нескольких интеграций на платформе Пинкит следующим образом.
1.1. Первая интеграция раз в сутки будет сравнивать даты, указанные в поле «День рождения» профиля сотрудника, с текущей датой.
Если даты совпали, то будет запускаться бизнес-процесс из живой ленты, который отправит на почту именинника, указанную в его профиле, сообщение с поздравлением. Это сообщение также продублируется и в живой ленте Битрикс24. Шаблон бизнес-процесса настраиваем в Битрикс24. Поздравление отправляется с почты генерального директора.
Искусственный интеллект для переписки в чатах (в том числе групповых) WhatsApp и Telegram в связке с Битрикс24: подробности по ссылке.
1.2. Вторая интеграция раз в день будет получать всех пользователей портала, у которых день рождения состоится в течение ближайших 30 дней и добавлять их в список с заполнением ФИО, даты рождения и даты добавления в список.
1.3. Еще одна интеграция раз в день будет получать всех пользователей портала, у которых день рождения состоится в течение 365 дней и добавлять их в список с заполнением ФИО, даты рождения и даты добавления в список.
1.4. Запуск интеграций по расписанию осуществляется техническими интеграциями с использованием инструмента "Расписание интеграций".
Далее расскажем о том, как настроить данный сценарий.
2. Формируем список именинников на месяц
2.1. Шаг 1: Откуда
Интеграция будет запущена по расписанию, поэтому первый шаг можно настроить произвольно, он не будет учитываться.
2.2. Шаг 2: Инструменты
- Проверка, что интеграция запущена инструментом
Используем стандартный результат проверки по полю source.startedFromInstrument. Условие - Существует, Действие - продолжить, если проверка пройдена.
- Получаем всех пользователей с днем рождения в ближайшие 30 дней
Используем API-запрос методом POST.
URL: /user.get Тело запроса: { "filter":{ "ACTIVE":"true", "<=UF_USR_1738243286139":"{{now|date('d.m.Y','UTC','+1 month')}}" } } Заголовки: Content-Type: application/json Accept: application/json
- Получаем текущий год
Используем шаг Если-иначе, Условие - существует, Результат при успешной проверке равен результату при неуспешной проверке и равняется {{now|date('Y')}}.
- Для каждого найденного пользователя
Используем инструмент Для каждого по полю step2.result - это список всех именинников в ближайший месяц.
- Получаем год рождения
Преобразуем строку в массив из поля step3.PERSONAL_BIRTHDAY.
- Получаем возраст
Используем Математическое действие с полем step9. Вычитаем результат предыдущего шага {{step8.0}}.
- Сделать запись в табличку месяца
Используем API-запрос методом POST.
URL - /lists.element.add
Тело запроса - {
"IBLOCK_TYPE_ID": "lists",
"IBLOCK_ID": "57",
"ELEMENT_CODE": "element_{{step3.ID}}",
"FIELDS": {
"NAME":"{{step3.LAST_NAME}} {{step3.NAME}} {{step3.SECOND_NAME}}",
"PROPERTY_287": "{{step3.PERSONAL_BIRTHDAY}}",
"PROPERTY_285":"{{step3.UF_USR_1738243286139}}",
"PROPERTY_291":"{{step3.WORK_POSITION}}",
"PROPERTY_293":"{{step3.UF_DEPARTMENT.0}}",
"PROPERTY_295":"{{step3.PERSONAL_MOBILE}}",
"PROPERTY_297":"{{step3.EMAIL}}",
"PROPERTY_299":"{{step10}}"
}
}
Заголовки - Content-Type: application/json
Accept: application/json
- Прерывание
Используем проверку, что поле с датой рождения заполнено. Условие - существует, Действие - Продолжить, если проверка пройдена.
2.3. Шаг 3: Куда
Так как на предыдущем шаге мы прерываем интеграцию, то настройка шагов 3 и 4 не учитывается, можем указать произвольные настройки и запустить интеграцию на шаге 5.
3. Запустили интеграцию по очистке списка на год
3.1. Шаг 1: Откуда
Настройка произвольная.
3.2. Шаг 2: Инструменты
- Проверка что интеграция запущена инструментом
Используем проверку по полю source.startedFromInstrument. Условие - существует, Действие - продолжить, если проверка пройдена.
3.3. Шаг 3: Куда
Выбираем Пинкит с авторизацией по логину и паролю, действие Запустить интеграцию.
3.4. Шаг 4: Сопоставление данных
Указываем ID интеграции и активный статус:
3.5. Шаг 5: Запуск
Запускаем интеграцию.
4. Запустили интеграцию по очистке списка на месяц
4.1. Шаг 1: Откуда
Настройка произвольная.
4.2. Шаг 2: Инструменты
Используем проверку по полю source.startedFromInstrument. Условие - существует, Действие - продолжить, если проверка пройдена.
4.3. Шаг 3: Куда
Выбираем Пинкит с авторизацией по логину и паролю, действие Запустить интеграцию.
4.4. Шаг 4: Сопоставление данных
Указываем ID интеграции и активный статус:
4.5. Шаг 5: Запуск
Запускаем интеграцию.
5. Очищаем список именинников на год
5.1. Шаг 1: Откуда
Укажем событие создания элемента списка с именинниками на год в Битрикс24.
5.2. Шаг 2: Инструменты
Настройки пропускаем.
5.3. Шаг 3: Куда
Удаляем элемент списка.
5.4. Шаг 4: Сопоставление данных
Добавляем пользовательское сопоставление:
{ "IBLOCK_TYPE_ID":"lists", "IBLOCK_ID":"59", "ELEMENT_ID":"{{source.ID}}" }
5.5. Шаг 5: Запуск
Запускаем интеграцию.
6. Очищаем список именинников на месяц
6.1. Шаг 1: Откуда
Укажем событие создания элемента списка с именинниками на месяц в Битрикс24.
6.2. Шаг 2: Инструменты
Пропускаем.
6.3. Шаг 3: Куда
Удаляем элемент списка.
6.4. Шаг 4: Сопоставление данных
Указываем пользовательское сопоставление:
{ "IBLOCK_TYPE_ID":"lists", "IBLOCK_ID":"57", "ELEMENT_ID":"{{source.ID}}" }
6.5. Шаг 5: Запуск
Запускаем интеграцию.
7. Запустили обновление информации по датам рождения
7.1. Шаг 1: Откуда
Настройка произвольная.
7.2. Шаг 2: Инструменты
Используем проверку по полю source.startedFromInstrument. Условие - существует, Действие - продолжить, если проверка пройдена.
7.3. Шаг 3: Куда
Выбираем Пинкит с авторизацией по логину и паролю, действие Запустить интеграцию.
7.4. Шаг 4: Сопоставление данных
Указываем ID интеграции и активный статус, также укажем, что поллинг начинается с нуля:
7.5. Шаг 5: Запуск
Запускаем интеграцию.
8. Заполнили пользовательское поле и сделали запись в табличку именинников на год
8.1. Шаг 1: Откуда
Указываем Битрикс24, событие создания пользователя, пользователь должен быть активным сотрудником.
8.2. Шаг 2: Инструменты
- Получаем последнего пользователя
Используем API-запрос методом POST.
URL - /user.get
Тело запроса - {
"filter":{
"ACTIVE":"true"
},
"SORT": "ID",
"ORDER": "desc"
}
- Убираем время из даты
Преобразуем строку в массив в поле source.PERSONAL_BIRTHDAY.
- Разделяем на день, месяц, год
Преобразуем строку в массив в поле step1.0.
- Формируем дату из профиля сотрудника
Используем инструмент Если-иначе по полю source.ID. Условие - Существует, Результат при успешной проверке = Результат при неуспешной проверке и равняется {{step2.2}}.{{step2.1}}.{{now|date('Y')}}.
- Формируем дату сегодня
Используем инструмент Если-иначе по полю source.ID. Условие - Существует, Результат при успешной проверке = Результат при неуспешной проверке и равняется{{now|date(d.m.Y)}}.
- Формируем нашу дату
Используем инструмент Если-иначе по полю step5. Условие - Дата(Время)До, Сравниваемое значение - step4. Результат при успешной проверке = {{step2.2}}.{{step2.1}}.{{now|date('Y')}}, Результат при неуспешной проверке = {{step2.2}}.{{step2.1}}.{{now|date('Y','UTC','+1 year')}}.
- Обновляем дату в профиле пользователя
Используем API-запрос методом POST.
URL - /user.update
Тело - {
"ID": {{source.ID}},
"UF_USR_1738243286139": "{{step3}}",
"UF_USR_1738073269196":""
}
Заголовки - Content-Type: application/json
Accept: application/json
- Получаем год рождения
Преобразуем строку в массив в поле source.PERSONAL_BIRTHDAY.
- Получаем текущий год
Используем инструмент если-Иначе по полю source.odifhgoujfdhgjikfdhlg. Условие - Существует, Результат при успешной проверке = Результат при неуспешной проверке = {{now|date('Y')}}.
- Получаем возраст
Используем Математическое действие с полем step11. Вычитаем результат предыдущего шага {{step10.0}}.
- И делаем запись в табличку на год
Используем API-запрос методом POST.
URL - /lists.element.add
Тело запроса - {
"IBLOCK_TYPE_ID": "lists",
"IBLOCK_ID": "59",
"ELEMENT_CODE": "element_{{source.ID}}",
"FIELDS": {
"NAME":"{{source.LAST_NAME}} {{source.NAME}} {{source.SECOND_NAME}}",
"PROPERTY_281": "{{source.PERSONAL_BIRTHDAY}}",
"PROPERTY_283":"{{source.UF_USR_1738243286139}}",
"PROPERTY_301":"{{source.WORK_POSITION}}",
"PROPERTY_303":"{{source.UF_DEPARTMENT.0}}",
"PROPERTY_305":"{{source.PERSONAL_MOBILE}}",
"PROPERTY_307":"{{source.EMAIL}}",
"PROPERTY_309":"{{step12}}"
}
}
Заголовки - Content-Type: application/json Accept: application/json
- Прерывание прогона
Используем проверку по полю source.odifhgoujfdhgjikfdhlg. Условие - существует, действие - продолжить, если проверка пройдена.
8.3. Шаг 3: Куда
Выбираем Пинкит с авторизацией по логину и паролю, действие Запустить интеграцию.
8.4. Шаг 4: Сопоставление данных
Указываем ID интеграции и статус На паузе.
8.5. Шаг 5: Запуск
Запускаем интеграцию.
9. Отправляем поздравление с днем Рождения в 10.00
9.1. Шаг 1: Откуда
Настройки произвольные.
9.2. Шаг 2: Инструменты
- Проверка что интеграция стартанула с таймера
Используем стандартный результат проверки по полю source.startedFromInstrument. Условие - Существует, Действие - продолжить, если проверка пройдена.
- Получаем сегодняшнюю дату
Используем шаг Если-Иначе по полю source.startedFromInstrument. Условие - существует, Результат при успешной проверке - {{now|date(d.m.Y\T00:00:00)}}, Результат при неуспешной проверке = {{now|date(d.m.Y\T00:00:00)}}.
- Получаем пользователей с Днем Рождения сегодня
Используем API-запрос методом POST.
URL - /user.get
Тело - {
"filter":{
"ACTIVE":"true",
"UF_USR_1738243286139":"{{step3}}"
}
}
Заголовки - Content-Type: application/json Accept: application/json
- Для каждого найденного пользователя
Используем шаг Для каждого по полю step2.result.
- Запускаем бизнес-процесс
Шаблон бизнес-процесса мы настроили ранее.
Используем API-запрос методом POST.
URL - /bizproc.workflow.start
Тело запроса - {
"TEMPLATE_ID":"655",
"DOCUMENT_ID":[
"lists",
"BizprocDocument",
"14083"
],
"PARAMETERS":{
"email":"{{step4.EMAIL}}",
"name":"{{step4.NAME}}",
"sex":"{{step4.PERSONAL_GENDER}}",
"user_id":"user_{{step4.ID}}",
"IntID":"user_{{step4.ID}}"
}
}
Заголовки - Content-Type: application/json Accept: application/json
- Прерываем интеграцию
Добавляем проверку по полю source.startedFromInstrument. Условие - существует, Действие - Прервать, если проверка пройдена.
Остальные шаги можно пропустить и сразу запустить интеграцию на шаге 5.
Последним шагом настраиваем расписание в разделе Инструменты:
10. Итог
В результате автоматизации мы получаем два постоянно наполняемых списка именинников на месяц и на год плюс автоматическую отправку поздравления сотрудника по почте и в живой ленте Битрикс24.
Остались вопросы? Спросите у нас в Телеграм или WhatsApp.
Если вам нужна интеграция с сервисом, которого в Пинкит нет, или приватное событие/действие, через Пинкитбилдер вы можете самостоятельно добавить авторизацию, необходимые события и действия без разработки.
Протестируйте Пинкит, зарегистрировавшись в личном кабинете по ссылке: https://lk.pinkit.io/register.
Алексей Окара, продакт-менеджер Пинкит
#пинол #пинкит #pinall #pinkit #bitrix24 #битрикс24 #amo #amocrm #амо #амоцрм #crm #црм #црмсистема #црм_система #внедрениецрм #интеграция #миграция #обмен #пинкит_порядок