Інтеграція Бітрікс24 з сервісом Clearbit
12 Липня 2016
наступна стаття
Вступ
У кожну компанію щодня надходить багато безіменних листів, у яких складно визначити відправника. На сьогодні вже є сервіси, які зберігають основну інформацію про фірму або приватну особу, але для зручності співробітників і збільшення продуктивності їх роботи компанії шукають способи як інтегрувати свої CRM з цими сервісами.
Для розв’язання даних проблем ми розробили додаток, який дозволяє робити інтеграцію Бітрікс24 з сервісом Clearbit.
Clearbit надає набір API-інтерфейсів для бізнес-аналізу та інтеграції для стимулювання продажів і маркетингу для сучасних компаній.
За допомогою API Clearbit (при передачі йому такого параметра як електронна пошта або домен) в режимі реального часу перевіряються мільйони джерел по всьому інтернету, щоб отримати актуальну інформацію про компанію або людину.
Основи розробки
Для реалізації програми ми використовували REST API Бітрікс24 і API сервісу Clearbit.
Технічна реалізація
Основи
Для технічної реалізації ми використовували наступний алгоритм:
Напишемо додаток другого типу, який буде звертатися до сервісу через проміжний фізичний файл. Для того, щоб додаток зміг приймати і записувати дані, отримані з сервісу, потрібно встановити SSL сертифікат на проміжний домен, де ми будемо зберігати всі наші файли.
Також для побудови запитів на зовнішній сервіс буде потрібна авторизація на ньому, токени користувачів вирішили зберігати в порталі Бітрікс.
Однією з відмінностей додатків другого і третього типу від першого є обов'язкове зберігання логів запитів протягом трьох днів. Для реалізації логування написаний клас CB24Log.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
class CB24Log { private $active=false; private function __construct() {} /** * Запись в лог * @param string $msg текст, который будет записан в лог * @param boolean $clean если установлено - очистит лог-файл */ public static function Add($msg, $clean=false) { $lodDir=$_SERVER['DOCUMENT_ROOT'].'/clearbit/'.'logs';// if ($lodDir && is_string($msg)) { $DATE = date('Y-m-d H:i:s'); $strLogFile = date('Y-m-d').".log"; $strCalledFrom = ''; if (function_exists('debug_backtrace')) { $locations = debug_backtrace(); $strCalledFrom = 'F: '.$locations[0]['file']. "\n" . ' L: '.$locations[0]['line']; } $logMsg = "\n" . 'date: ' . $DATE . "\n" . 'mess: ' . $msg . "\n" . 'from: ' . $strCalledFrom . "\n" . 'uri : ' . $_SERVER['REQUEST_URI'] . "\n" . '----------------------------------------------------------'; if ($clean) { CB24Log::CleanLog($strLogFile); } CB24Log::AppendLog($logMsg, $strLogFile); } } /** * Функция добавления новой записи в лог * @param string $msg текст записи */ private static function AppendLog($msg, $filename) { $lodDir=$_SERVER['DOCUMENT_ROOT'].'/clearbit/'.'logs'; $log_file = $lodDir.'/'.$filename; $mode = 'ab'; if (!file_exists($log_file)) $mode = 'x';// if ($fp = fopen($lodDir.'/'.$filename, $mode)) { fwrite($fp, $msg); fclose($fp); } } /** * Удаление лог-файла */ private static function CleanLog($filename) { $lodDir=$_SERVER['DOCUMENT_ROOT'].'/clearbit/'.'logs'; @unlink($lodDir.'/'.$filename); } /** * Получение лог-файла */ public static function GetLog($filename) { $lodDir=$_SERVER['DOCUMENT_ROOT'].'/clearbit/'.'logs'; $log = false; if ($fp = fopen($lodDir.'/'.$filename, 'rb')) { $log = fread($fp); fclose($fp); } return $log; }} |
Його потрібно під’єднати в файлі-обробнику.
Надсилання даних з Бітрікс24 в файли додатка і сервіс.
Для передачі інформації з порталу в наш сервіс створимо сторінку з формою списку контактів користувача, при надсиланні форми обрані контакти будуть оновлені з використанням сервісу. .
Вибірка списку контактів реалізовано за допомогою API і JS.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
BX24.callMethod( "crm.contact.list", { order: { "DATE_UPDATE": "ASC" }, select: [ "ID", "NAME", "EMAIL", "LAST_NAME", "DATE_MODIFY" ] }, function(result) { if(result.error()) console.error(result.error()); else { var contact24 = ''; $.each(result.data(), function () { var arrEmail = ''; if (this.EMAIL) { $.each(this.EMAIL, function () { arrEmail = this.VALUE; }); contact24 = contact24 + ''; contact24 = contact24 + '<input id="EMAIL" name="EMAIL['+this.ID+']" value="' + arrEmail + '" type="checkbox">'; contact24 = contact24 + '' + this.DATE_MODIFY + ''; contact24 = contact24 + '' + this.NAME + ''; if (arrEmail) { contact24 = contact24 + '' + arrEmail + ''; } else { contact24 = contact24 + ''; } contact24 = contact24 + ''; } }); $('#paged').append(contact24).slideDown(100, BX24.fitWindow); if(result.more()){ result.next(); } } }); |
Інформація з форми надходить в файл-обробник, який за допомогою бібліотеки curl передає її на сервіс.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
$mh = curl_multi_init();$chs = array();$content = array();foreach ($urls as $url) { $chs[] = ( $ch = curl_init() ); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 10); // curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_multi_add_handle($mh, $ch);}$running = null;do { curl_multi_exec($mh, $running); $info = curl_multi_info_read($mh); if (is_array($info) && ( $ch = $info['handle'] )) { // получаю содержимое загруженной страницы $arrContent=curl_multi_getcontent($ch); $arrInfo=curl_getinfo($ch); $key = array_search($arrInfo['url'], $urls);// $arrContent["myemail"]="123"; CB24Log::Add('REQUEST url: '.$arrInfo['url']."\n\n" .'REQUEST curl raw result: '.print_r($arrContent, true)); $content[$key] =$arrContent ; }} while ($running);foreach ($chs as $ch) { curl_multi_remove_handle($mh, $ch); curl_close($ch);}curl_multi_close($mh); |
Оновлення інформації на порталі реалізовано за допомогою API і JS.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
BX24.callMethod( "crm.contact.update", { id: contactid, fields:userfilds, params: { "REGISTER_SONET_EVENT": "Y" } }, function(result) { if(result.error()) console.error(result.error()); else { $('#window').append("<p>"+key+" : "+window.menuMessage.CONTACT_UPDATE+"</p>"); } }); |
Після завантаження програми показується сторінка введення параметрів.
Для отримання ключа доступу потрібно зареєструватися на сайті Clearbit і перейти в особистий кабінет.
Виберіть користувачів, які мають право оновлювати контакти через сервіс Clearbit.
Після збереження параметрів відкриється сторінка списку контактів із зазначеним email.
Контакт до оновлення.
Оновлюємо контакт.
Контакт після оновлення.
В результаті ми розробили додаток другого типу, з окремою сторінкою на порталі Бітрікс24, за допомогою якого користувачі порталу з певними правами можуть оновити інформацію про незаповнення контакти через сервіс Clearbit.
Ми зв'яжемось з Вами протягом 10 хвилин