Bitrix24 REST: Создаем собственное действие в бизнес процессе
Возникла задача, встроить в «Бизнес процесс» облачного Bitrix24 результат определенного действия. Из официальной документации стало понятно, что выполнять произвольные php скрипты возможно только в коробочной версии. Для выполнения собственный действий в облачной версии, необходимо использовать REST API.
У Битрикса имеется неплохая документация по REST, но проведя несколько дней в поисках решения, я так и не смог найти пошаговой инструкции.
Ниже я приведу пошаговое руководство по созданию собственных действий в бизнес процессе. За основу был взят пример по преобразование строки в md5 из примера в документации.
Нам понадобится:
1. Сайт доступный из интернета на https. В качестве SSL сертификата можно использовать бесплатный от Let’s Encrypt.
2. HTML страница с JavaScript для создания приложение в BX24
3. PHP страница для выполнения md5 функции.
Создаем страницу установки. Имя Вы можете придумать самостоятельно.
index.html
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="//api.bitrix24.com/api/v1/"></script> </head> <body></body> </html> <script type="text/javascript"> var params = { 'CODE': 'md5', 'HANDLER': 'https://yalive.ru/bitrix/md5.php', <!-- Файл md5.php должен быть расположени на том же домене, что и install.html --> 'AUTH_USER_ID': 1, 'USE_SUBSCRIPTION': 'Y', 'NAME': { 'ru': 'MD5 генератор', 'en': 'MD5 generator' }, 'DESCRIPTION': { 'ru': 'Действие возвращает MD5 хеш от входящего параметра', 'en': 'Activity returns MD5 hash of input parameter' }, 'PROPERTIES': { 'inputString': { 'Name': { 'ru': 'Входящая строка', 'en': 'Input string' }, 'Description': { 'ru': 'Введите строку, которую вы хотите хешировать', 'en': 'Input string for hashing' }, 'Type': 'string', 'Required': 'Y', 'Multiple': 'N', 'Default': '{=Document:NAME}', } }, 'RETURN_PROPERTIES': { 'outputString': { 'Name': { 'ru': 'MD5', 'en': 'MD5' }, 'Type': 'string', 'Multiple': 'N', 'Default': null } } }; BX24.callMethod( 'bizproc.activity.add', params, function(result) { if(result.error()) alert("Error: " + result.error()); else alert("Успешно: " + result.data()); } ); </script>
Создаем md5.php
<?php file_put_contents(dirname(__FILE__)."/db/log.log", date('c').": ".var_export($_REQUEST, 1)."\n", FILE_APPEND); if(is_array($_REQUEST["auth"]) && isset($_REQUEST["auth"]["access_token"])) { $portal = $_REQUEST["auth"]["domain"]; $requestValue = $_REQUEST["properties"]["inputString"]; $responseValue = md5($requestValue); $c = curl_init("http://" . $portal . "/rest/bizproc.event.send.json"); $params = array( "auth" => $_REQUEST["auth"]["access_token"], "event_token" => $_REQUEST["event_token"], "log_message" => "Got '".$requestValue."' string!", "return_values" => array( "outputString" => $responseValue, ) ); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); curl_setopt($c, CURLOPT_HEADER, true); curl_setopt($c, CURLINFO_HEADER_OUT, true); curl_setopt($c, CURLOPT_VERBOSE, true); curl_setopt($c, CURLOPT_POST, true); curl_setopt($c, CURLOPT_POSTFIELDS, http_build_query($params)); $response = curl_exec($c); file_put_contents(dirname(__FILE__)."/db/log.log", "response: ".$response."\n", FILE_APPEND); }
Теперь нам необходимо выложить данный файл на свой ресурс, чтобы они смогли быть доступны из интернета.
Например:
https://yalive.ru/bitrix/install.html
https://yalive.ru/bitrix/md5.php — Эта же ссылка должна быть указана в файле install.html
Далее для того чтобы в конструкторе Бизнес процессов появилось новое действие, необходимо создать приложение в Вашем Bitrix24.
Для нашей задачи, нам необходимо добавить приложение для личного использования.
Заполняем основные поля:
Добавляем права доступа для «Бизнес-процессы»
Указываем ссылку на разположение файла install.html и нажимаем «Сохранить».
В результате у нас появляется созданное приложение в разделе «Мои приложения», а так же ссылка на это приложение «Generate MD5»
Переходим на созданное приложение «Generate MD5» для его установки.
В случае успеха, мы должны получить сообщение о том, что оно было установлено.
На этом этап установки закончен и в конструкторе Бизнес процесса, мы должны увидеть новое действие:
При его добавлении в шаблон, мы можем увидеть те параметры которые были указаны в файле install.html:
На этом установку можно считать законченной и Вы можете приступать к созданию Бизнес процесса.
Для понимания, какие даные приходят к Вам от Битрикса и что Вы отправляете в ответ, служит файл log.log, который был указан в файле md5.php.
Если данный файл не создается, проверьте права на запись в директорию, или создайте файл ./db/log.log с правами на запись.
Пример входных данных от Битрикса:
2018-06-28T15:31:40+00:00: array ( 'workflow_id' => '5b34ff5ad437d2.26752384', 'code' => 'md5', 'document_id' => array ( 0 => 'lists', 1 => 'BizprocDocument', 2 => '6220', ), 'document_type' => array ( 0 => 'lists', 1 => 'BizprocDocument', 2 => 'iblock_134', ), 'event_token' => '5b34ff5ad437d2.26752384|A23581_23805_31030_320|WDmHqZT6I5UMyVZcm0dUO2a74JB6l2rT.9847bde7b964b384d2fe86c1e018e8add991f2f063663f38672336c91ea41e23', 'properties' => array ( 'inputString' => 'yalive.ru', ), 'use_subscription' => 'Y', 'timeout_duration' => '0', 'ts' => '1530199898', 'auth' => array ( 'access_token' => '6b0d355b0028a0cc0000637c0000009a0000035b4219ae725166c8e6cd93892422c876', 'expires' => '1530203499', 'expires_in' => '3600', 'scope' => 'bizproc', 'domain' => 'bx.bitrix.ru', 'server_endpoint' => 'https://oauth.bitrix.info/rest/', 'status' => 'L', 'client_endpoint' => 'https://bx.bitrix.ru/rest/', 'member_id' => '6f2308718f0a4674194aba43a206b042', 'user_id' => '154', 'application_token' => '094e4f7243c5527e7c7a1330b8b0de84', ), )
Пример отправленных данных:
response: HTTP/1.1 200 OK Access-Control-Allow-Headers: origin, content-type, accept Access-Control-Allow-Origin: * Cache-Control: no-store, no-cache, must-revalidate Content-Type: application/json; charset=utf-8 Date: Thu, 28 Jun 2018 15:31:41 GMT Expires: Thu, 19 Nov 1981 08:52:00 GMT P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA" Pragma: no-cache Server: nginx/1.8.1 Set-Cookie: PHPSESSID=XBH3mJ0VVZh4qBSgA1XcpuBqHUJ1hiXc; path=/; secure; HttpOnly Set-Cookie: qmb=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/ Set-Cookie: BITRIX_SM_PK=%2F154%2Fb184eb12ba25f5e154a6830e812b2a1f; path=/; HttpOnly Strict-Transport-Security: max-age=31536000; includeSubdomains X-Bitrix-Rest-Application: local.5b34f8f7bf8038.76659904 X-Content-Type-Options: nosniff X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-Powered-CMS: Bitrix Site Manager (1682f9867b9ef36eacf05e345db46f3c) Content-Length: 215 Connection: keep-alive {"result":true,"time":{"start":1530199900.9859,"finish":1530199901.8444,"duration":0.85853219032288,"processing":0.072890996932983,"date_start":"2018-06-28T18:31:40+03:00","date_finish":"2018-06-28T18:31:41+03:00"}}