Найти в Дзене

Bitrix24 - разбираемся с привязкой почты

Оглавление
Bitrix24 - разбираемся с привязкой почты
Bitrix24 - разбираемся с привязкой почты

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

Не нравится реализация привязки писем к сущностям CRM (контакты, компании, сделки) - то письмо не привязалось, то оно привязалось куда-то в другое место.

Ознакомившись с имеющимися в интернете вариантами решения схожих проблем
- https://blog.bedrosova.ru/2016/03/03/битрикс24-входящая-почта-без-единого-по/
- https://www.infospice.ru/blog/bitrix_inside/bitriks24-kp-crm-kak-sdelat-svoye-pravilo-dlya-obrabotki-pisem/
было принято решение написать свой обработчик, т.к. оказалось, что штатную логику привязки (функция CCrmEMail::EmailMessageAdd) изменить практически не возможно.

Кратко опишем затрагиваемые таблиц в БД для общего понимания процесса, ну и чтобы не забыть:

  1. b_mail_message - все письма сохраняются в эту таблицу, после получения из через IMAP.
  2. b_mail_mailbox - список почтовых ящиков.
  3. b_crm_act_comm - для каждого события прописываются параметры.
  4. b_mail_msg_attachment - вложения
  5. b_file - файлы (из вложений)

Что удалось получить в итоге

  1. Если находим контакт(ы) с нужным почтовым адресом  - крепим письмо туда.
  2. Находим компанию у контакта - крепим письмо туда (дополнительно контролируем, чтобы ничего не задублировалось).
  3. Если в теме письма указан номер сделки в фигурных скобках [4384] - туда тоже крепим письмо.
  4. Если на момент получения \ написания письма контакта нет в CRM - не беда, обработаем, когда пользователь создаст контакт. Скрипт добавлен в CRON и обрабатывает последние 1000 писем.
  5. Что очень важно - мы не меняем исходный код продукта, что всегда позитивно сказывается как на обновлениях, так и на  безболезненном отказе от использования текущей схемы.

Особенности

  • Почему-то не сохраняются вложения, если нет правила обработки ящика. Даже пустого. Пришлось насоздавать для каждого ящика пустое правило обработки.
  • Не у всех вложений корректно переносятся наименования, также по какой-то неведомой логике вложение имеет наименование в виде хэша без расширения файла, хотя в таблице b_mail_msg_attachment корректное наименование присутствует - пришлось добавить функцию принудительного переименования файла как в БД, так и в файловой системе.
  • У нас в компании практически у всех почт существуют алиасы, например, petrov.a@ будет еще иметь короткий адрес pa@ - эту информацию решил записывать в описание почтового ящика, столбец DESCRIPTION (нужна для определения направления письма).
  • Если в БД у почтового ящика USER_ID поставить 0, то ящик будет считаться системным. Решил, что ящики должны быть системными и ID пользователя перенес в столбец LINK.

Логика работы

  1. Проверяем есть ли необработанные письма.
  2. Определяем направление коммуникации.
  3. Ищем контакты \ компании с совпадающим адресом электронной почты.
  4. Добавляем во все контакты и связанные компании событие с письмом.
  5. Обновляем EXTERNAL_ID у письма, чтобы больше его не обрабатывать (записываем туда ID события, больше нужно для отладки).

Финал

___

Добавляем скрипт в cron, забываем о его существовании и наслаждаемся результатом.

Оригинал статьи и ссылка на исходный код доступны по ссылке: https://alyssia.ru/bitrix24-mail-attach/

Занимаемся сложными интеграциями. Почта для связи - sales@alyssia.ru.