Одной из важнейших функций Битрикс24 является ведение работы с клиентами (CRM). В свою очередь, хорошая CRM должна позволять удобно вести диалог с клиентами и отображать историю работы с ним.
Надо сказать, что ведение истории работы с клиентами в CRM, выполнено в Битрикс24 на должном уровне. Реализовано хранение транзакций по клиентам, ведение электронной переписки через электронную почту. При весьма не сложной настройке — реализовано хранение и привязка входящих писем и привязка их к карточкам клиентов (интеграция с почтой). Однако, как известно, стандартный функционал не всегда удовлетворяет специфические требования конечных пользователей. Так произошло и у нашего очередного англоязычного клиента.
Дело в том, что интеграция и обработка входящей почты в Битрикс, ведется через единый почтовый ящик. То есть вся входящая почта должна приходить сперва на общий ящик, sale@client.com, а потом может быть переадресована на персональные почтовые ящики сотрудников службы работы с клиентами. Я не буду судить о правильности или неправильности подхода с общим почтовым ящиком для всей корреспонденции, однако конкретно данного клиента такой подход не устроил. Он хотел, чтобы почта обрабатывалась не с одного общего, а с набора персональных почтовых ящиков.
Реализация подобного механизма оказалась весьма не сложной. Все что необходимо сделать — зарегистрировать почтовые ящики в системе и назначить им правило обработки почты. Для этого нужно зайти в раздел контрольной панели Битрикс:
Сервисы -> Почта -> Почтовые ящики
И зарегистрировать Системные почтовые ящики сотрудников:
Далее, для каждого почтового ящика необходимо создать правило обработки входящей почты. Для этого перейдите в
Сервисы -> Почта -> Правила
И создайте новое правило (ручная настройка):
Выберите нужный почтовый ящик, введите название правила и отметьте пункт «Применять при событиях: При получении почты». Затем перейдите во вкладку Действия, и в поле Действия на PHP скрипте введите код:
$_SERVER["DOCUMENT_ROOT"]='ПУТЬ К КОРНЮ ФАЙЛОВОЙ СИСТЕМЫ САЙТА'; require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php"); CModule::IncludeModule('main'); CModule::IncludeModule('crm'); global $DB; $mail=CCrmMailHelper::ParseEmail($arMessageFields['FIELD_FROM']); $strSql = "SELECT * FROM b_crm_dp_comm_mcd WHERE TYPE='EMAIL' and VALUE='".$mail['EMAIL']."'"; $sqlres = $DB->Query($strSql, false); if($arElement = $sqlres->GetNext()) { $res=CCrmEMail::EmailMessageAdd($arMessageFields, array()); COption::SetOptionString("main","bedrosova_check_activity","Y"); } |
Несколько комментариев по коду:
1. В почтовых правилах не заполняется переменная DOCUMENT_ROOT, поэтому ее нужно указать вручную..
2. Для регистрации входящего письма и привязке его к карточке клиента мы используем Битриксовский класс CCrmEmail.
3. Правило распространяется на все входящие письма, поэтому если их не отсеивать, то в ленту начнут попадать письма, не относящиеся к переписке с клиентами. Для избежания этого мы проверяем адрес отправителя по базе уже зарегистрированных почтовых ящиков в таблице b_crm_dp_comm_mcd. Письма обрабатываются только если там были найдены совпадения.
4. По какой-то причине, письма с вложениями регистрируются Битриксовским классом как новые активити, но не постятся в Живую ленту, пока активити не будет просмотрено. Для обработки этого мы после получения новой почты ставим флаг, и периодически проверяем его. Если он стоит — то обновляем все новые активити. Они после этого появляются в Живой ленте.