Найти в Дзене

Автоматическое поздравление сотрудников (в почту и живую ленту Битрикс24) с формированием списка дней рождений на месяц и год

Внутренняя культура компании часто подразумевает отправку поздравлений с Днем рождения сотрудникам. Каждая компания реализует это по-разному, но в большинстве случаев такой кейс можно автоматизировать с учетом внутренних особенностей корпоративной культуры. Сегодня в статье расскажем, как можно настроить автоматическую отправку сообщений с помощью Битрикс24 и Пинкит. Наш заказчик занимается производством оборудования. Сотрудники его компании работают в Битрикс24 (всего на портал заведено несколько сотен пользователей). Согласно внутренней культуре компании, каждому сотруднику в День его рождения отправляется поздравление и подарочный сертификат от имени директора. Механизм распределения заявок в Битрикс24 по менеджерам с передачей количества лидов в профиль сотрудника: читайте в нашем блоге. Дата рождения сотрудника указана в его карточке профиля. Как правило, поздравление и сертификат отправляются на электронную почту и в мессенджер WhatsApp. Процесс организован так: ответственный со
Оглавление

Внутренняя культура компании часто подразумевает отправку поздравлений с Днем рождения сотрудникам. Каждая компания реализует это по-разному, но в большинстве случаев такой кейс можно автоматизировать с учетом внутренних особенностей корпоративной культуры. Сегодня в статье расскажем, как можно настроить автоматическую отправку сообщений с помощью Битрикс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. Шаг 2: Инструменты

-3
  • Проверка, что интеграция запущена инструментом

Используем стандартный результат проверки по полю source.startedFromInstrument. Условие - Существует, Действие - продолжить, если проверка пройдена.

-4
  • Получаем всех пользователей с днем рождения в ближайшие 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

-5
  • Получаем текущий год

Используем шаг Если-иначе, Условие - существует, Результат при успешной проверке равен результату при неуспешной проверке и равняется {{now|date('Y')}}.

-6
  • Для каждого найденного пользователя

Используем инструмент Для каждого по полю step2.result - это список всех именинников в ближайший месяц.

-7
  • Получаем год рождения

Преобразуем строку в массив из поля step3.PERSONAL_BIRTHDAY.

-8
  • Получаем возраст

Используем Математическое действие с полем step9. Вычитаем результат предыдущего шага {{step8.0}}.

-9
  • Сделать запись в табличку месяца

Используем 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
-10
  • Прерывание

Используем проверку, что поле с датой рождения заполнено. Условие - существует, Действие - Продолжить, если проверка пройдена.

-11

2.3. Шаг 3: Куда

Так как на предыдущем шаге мы прерываем интеграцию, то настройка шагов 3 и 4 не учитывается, можем указать произвольные настройки и запустить интеграцию на шаге 5.

-12

3. Запустили интеграцию по очистке списка на год

3.1. Шаг 1: Откуда

Настройка произвольная.

3.2. Шаг 2: Инструменты

  • Проверка что интеграция запущена инструментом

Используем проверку по полю source.startedFromInstrument. Условие - существует, Действие - продолжить, если проверка пройдена.

-13

3.3. Шаг 3: Куда

Выбираем Пинкит с авторизацией по логину и паролю, действие Запустить интеграцию.

-14

3.4. Шаг 4: Сопоставление данных

Указываем ID интеграции и активный статус:

-15

3.5. Шаг 5: Запуск

Запускаем интеграцию.

-16

4. Запустили интеграцию по очистке списка на месяц

4.1. Шаг 1: Откуда

Настройка произвольная.

4.2. Шаг 2: Инструменты

Используем проверку по полю source.startedFromInstrument. Условие - существует, Действие - продолжить, если проверка пройдена.

-17

4.3. Шаг 3: Куда

Выбираем Пинкит с авторизацией по логину и паролю, действие Запустить интеграцию.

-18

4.4. Шаг 4: Сопоставление данных

Указываем ID интеграции и активный статус:

-19

4.5. Шаг 5: Запуск

Запускаем интеграцию.

-20

5. Очищаем список именинников на год

5.1. Шаг 1: Откуда

Укажем событие создания элемента списка с именинниками на год в Битрикс24.

-21

5.2. Шаг 2: Инструменты

Настройки пропускаем.

5.3. Шаг 3: Куда

Удаляем элемент списка.

5.4. Шаг 4: Сопоставление данных

Добавляем пользовательское сопоставление:

{ "IBLOCK_TYPE_ID":"lists", "IBLOCK_ID":"59", "ELEMENT_ID":"{{source.ID}}" }

-22

5.5. Шаг 5: Запуск

Запускаем интеграцию.

-23

6. Очищаем список именинников на месяц

6.1. Шаг 1: Откуда

Укажем событие создания элемента списка с именинниками на месяц в Битрикс24.

-24

6.2. Шаг 2: Инструменты

Пропускаем.

6.3. Шаг 3: Куда

Удаляем элемент списка.

-25

6.4. Шаг 4: Сопоставление данных

Указываем пользовательское сопоставление:

{ "IBLOCK_TYPE_ID":"lists", "IBLOCK_ID":"57", "ELEMENT_ID":"{{source.ID}}" }

-26

6.5. Шаг 5: Запуск

Запускаем интеграцию.

-27

7. Запустили обновление информации по датам рождения

7.1. Шаг 1: Откуда

Настройка произвольная.

7.2. Шаг 2: Инструменты

Используем проверку по полю source.startedFromInstrument. Условие - существует, Действие - продолжить, если проверка пройдена.

-28

7.3. Шаг 3: Куда

Выбираем Пинкит с авторизацией по логину и паролю, действие Запустить интеграцию.

-29

7.4. Шаг 4: Сопоставление данных

Указываем ID интеграции и активный статус, также укажем, что поллинг начинается с нуля:

-30

7.5. Шаг 5: Запуск

Запускаем интеграцию.

-31

8. Заполнили пользовательское поле и сделали запись в табличку именинников на год

8.1. Шаг 1: Откуда

Указываем Битрикс24, событие создания пользователя, пользователь должен быть активным сотрудником.

-32

8.2. Шаг 2: Инструменты

  • Получаем последнего пользователя

Используем API-запрос методом POST.

URL - /user.get
Тело запроса - {
"filter":{
"ACTIVE":"true"
},
"SORT": "ID",
"ORDER": "desc"
}
-33
  • Убираем время из даты

Преобразуем строку в массив в поле source.PERSONAL_BIRTHDAY.

-34
  • Разделяем на день, месяц, год

Преобразуем строку в массив в поле step1.0.

-35
  • Формируем дату из профиля сотрудника

Используем инструмент Если-иначе по полю source.ID. Условие - Существует, Результат при успешной проверке = Результат при неуспешной проверке и равняется {{step2.2}}.{{step2.1}}.{{now|date('Y')}}.

-36
  • Формируем дату сегодня

Используем инструмент Если-иначе по полю source.ID. Условие - Существует, Результат при успешной проверке = Результат при неуспешной проверке и равняется{{now|date(d.m.Y)}}.

-37
  • Формируем нашу дату

Используем инструмент Если-иначе по полю step5. Условие - Дата(Время)До, Сравниваемое значение - step4. Результат при успешной проверке = {{step2.2}}.{{step2.1}}.{{now|date('Y')}}, Результат при неуспешной проверке = {{step2.2}}.{{step2.1}}.{{now|date('Y','UTC','+1 year')}}.

-38
  • Обновляем дату в профиле пользователя

Используем API-запрос методом POST.

URL - /user.update
Тело - {
"ID": {{source.ID}},
"UF_USR_1738243286139": "{{step3}}",
"UF_USR_1738073269196":""
}
Заголовки - Content-Type: application/json
Accept: application/json
-39
  • Получаем год рождения

Преобразуем строку в массив в поле source.PERSONAL_BIRTHDAY.

-40
  • Получаем текущий год

Используем инструмент если-Иначе по полю source.odifhgoujfdhgjikfdhlg. Условие - Существует, Результат при успешной проверке = Результат при неуспешной проверке = {{now|date('Y')}}.

-41
  • Получаем возраст

Используем Математическое действие с полем step11. Вычитаем результат предыдущего шага {{step10.0}}.

-42
  • И делаем запись в табличку на год

Используем 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

-43
  • Прерывание прогона

Используем проверку по полю source.odifhgoujfdhgjikfdhlg. Условие - существует, действие - продолжить, если проверка пройдена.

-44

8.3. Шаг 3: Куда

Выбираем Пинкит с авторизацией по логину и паролю, действие Запустить интеграцию.

-45

8.4. Шаг 4: Сопоставление данных

Указываем ID интеграции и статус На паузе.

-46

8.5. Шаг 5: Запуск

Запускаем интеграцию.

-47

9. Отправляем поздравление с днем Рождения в 10.00

9.1. Шаг 1: Откуда

Настройки произвольные.

9.2. Шаг 2: Инструменты

-48
  • Проверка что интеграция стартанула с таймера

Используем стандартный результат проверки по полю source.startedFromInstrument. Условие - Существует, Действие - продолжить, если проверка пройдена.

-49
  • Получаем сегодняшнюю дату

Используем шаг Если-Иначе по полю source.startedFromInstrument. Условие - существует, Результат при успешной проверке - {{now|date(d.m.Y\T00:00:00)}}, Результат при неуспешной проверке = {{now|date(d.m.Y\T00:00:00)}}.

-50
  • Получаем пользователей с Днем Рождения сегодня

Используем API-запрос методом POST.

URL  - /user.get
Тело - {
"filter":{
"ACTIVE":"true",
"UF_USR_1738243286139":"{{step3}}"
}
}

Заголовки - Content-Type: application/json Accept: application/json

-51
  • Для каждого найденного пользователя

Используем шаг Для каждого по полю step2.result.

-52
  • Запускаем бизнес-процесс

Шаблон бизнес-процесса мы настроили ранее.

Используем 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

-53
  • Прерываем интеграцию

Добавляем проверку по полю source.startedFromInstrument. Условие - существует, Действие - Прервать, если проверка пройдена.

-54

Остальные шаги можно пропустить и сразу запустить интеграцию на шаге 5.

Последним шагом настраиваем расписание в разделе Инструменты:

-55

10. Итог

В результате автоматизации мы получаем два постоянно наполняемых списка именинников на месяц и на год плюс автоматическую отправку поздравления сотрудника по почте и в живой ленте Битрикс24.

Остались вопросы? Спросите у нас в Телеграм или WhatsApp.
Если вам нужна интеграция с сервисом, которого в Пинкит нет, или приватное событие/действие, через Пинкитбилдер вы можете самостоятельно добавить авторизацию, необходимые события и действия без разработки.
Протестируйте Пинкит, зарегистрировавшись в личном кабинете по ссылке: https://lk.pinkit.io/register.
Алексей Окара, продакт-менеджер Пинкит
-56

#пинол #пинкит #pinall #pinkit #bitrix24 #битрикс24 #amo #amocrm #амо #амоцрм #crm #црм #црмсистема #црм_система #внедрениецрм #интеграция #миграция #обмен #пинкит_порядок