Бизнес-процессы в CRM (в отличие от стандартных бизнес-процессов) не могут автоматически определять автора бизнес-процесса.
У них идут другие автоматические привязки — к автору компании, контакта и т.д. или же к ответственному сотруднику.
Но при работе с бизнес-процессами в CRM очень часто нужно определить именно автора, запустившего бизнес-процесс.
Эта задача на данный момент решаема только через код php. Но даже новичку будет легко с этим справиться.
Бизнес-процессы в CRM (в отличие от стандартных бизнес-процессов) не могут автоматически определять автора бизнес-процесса. У них идут другие автоматические привязки — к автору компании, контакта и т.д. или же к ответственному сотруднику. Но при работе с бизнес-процессами в CRM очень часто нужно определить именно автора, запустившего бизнес-процесс.
Эта задача на данный момент решаема только через код php. Но даже новичку будет легко с этим справиться. 1. В шаблоне бизнес-процесса необходимо создать переменную, в которую будет записываться ID пользователя. Пусть это будет переменная current_user типа «Привязка к пользователю». 2. В бизнес-процессе размещаем блок «PHP код» 3. В тело кода копируем текст:
Грамотное ООП: организация надёжной бизнес-логики / Дмитрий Елисеев (ElisDN)
$USER_ID = $GLOBALS[«USER»]->GetID();
$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable(«current_user», «user_».$USER_ID);
4. Сохраняем результат. Теперь переменную current_user можно использовать в бизнес-процессе — например, для отправки информационный сообщений автору бизнес-процесса.
Поделиться
Ссылка скопирована в буфер обмена
- Поделиться в Контакте
- Поделиться в Телеграм
- Скопировать ссылку
Источник: www.mcart.ru
Битрикс24 произвольный PHP код
В Битрикс24 есть отличный инструментарий бизнес-процессов. С помощью него можно сделать практически всё, что угодно. Что ещё лучше — есть даже поддержка произвольного PHP кода.
И вот, когда Вы уже обрадовались, что попали в рай для программиста, наступает небольшое огорчение — облачная версия Битрикс24 не поддерживает произвольный PHP код в бизнес-процессах.
И казалось бы всё! Выхода нет! Жизнь окончена! Занавес! Но программисты не сдаются просто так!
Только не сейчас, когда счастье было таким возможным!
Если гора не идёт к Магомету… Правильно: если код не может быть выполнен на этом сервере (в облаке), он может быть выполнен на другом сервере.
PHP: почему его вечно хоронят, актуально ли его учить и чем он полезен бизнесу. Код и кофе, s4, ep 8
Но тут тоже есть ряд проблем:
- как доставить параметры на сторонний сервер?
- как получить результат выполнения скрипта на стороннем сервере?
Расскажу всё по порядку. Недавно к нам обратилась одна компания именно с такой задачей: выполнить произвольный код PHP в облачной версии Битрикс24.
Код должен был получать параметры от бизнес-процесса, который обрабатывает лид, и отправлять некоторые данные для статистики в Google Analytics.
И вот как мы это сделали.
В бизнес процессах Битрикс24 есть чудесная возможность отправки оповещений по E-mail. И мы решили отправлять данные для скрипта по почте.
На другом конце этой цепочки установили cron скрипт, который каждые несколько минут проверяет почту (на которую мы шлём параметры для скрипта) и, если находит непрочитанные письма определённого формата, читает из них параметры и выполняет.
Чтобы не заморачиваться с SSL сертификатами, мы использовали почтовик ukr.net
И вот, что у нас получилось:
INBOX’; $username = ‘[email protected]’; $password = ‘your_pass’; // try to connect $inbox = imap_open($imapPath,$username,$password) or die(‘Cannot connect to email: ‘ . imap_last_error()); // search and get unseen emails, function will return email ids $emails = imap_search($inbox,’UNSEEN’); $output = »; if(count($emails) > 0) < foreach($emails as $mail) < $headerInfo = imap_headerinfo($inbox,$mail); $output .= ‘Subject: ‘ . iconv_mime_decode($headerInfo->subject).’
‘; $output .= ‘To: ‘ . $headerInfo->toaddress.’
‘; $output .= ‘Date: ‘ . $headerInfo->date.’
‘; $output .= ‘From: ‘ . $headerInfo->fromaddress.’
‘; imap_setflag_full($inbox,$mail,»Seen»); //помечаем просмотренным $emailStructure = imap_fetchstructure($inbox,$mail); $subject = iconv_mime_decode($headerInfo->subject); if(!isset($emailStructure->parts)) < $output .= ‘Body: ‘ . imap_body($inbox, $mail, FT_PEEK) . ‘
‘; $post_data = imap_body($inbox, $mail, FT_PEEK); > else < // >echo $output; //Проверяем тему if($subject == ‘Post data for send GA’) < //Проверяем установлен ли CURL и заданы ли нужные нам параметры в письме if( $curl = curl_init() AND !empty($post_data)) < $post_url = ‘https://www.google-analytics.com/collect’; echo ‘POST url: ‘ . $post_url . ‘
‘; echo ‘POST data: ‘ . ‘payload_data //Отправляем данные на сервер GA curl_setopt($curl, CURLOPT_URL, $post_url); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, ‘payload_data //Читаем ответ сервера GA $out = curl_exec($curl); echo ‘GA server answer:
‘; echo ‘REQUEST HEADERS:
‘; $headers = curl_getinfo($curl); echo ‘url: ‘ . $headers[‘url’] . ‘
‘; echo ‘httpss_code: ‘ . $headers[‘httpss_code’] . ‘
‘; echo ‘content_type: ‘ . $headers[‘content_type’] . ‘
‘; echo ‘header_size: ‘ . $headers[‘header_size’] . ‘
‘; echo ‘request_size: ‘ . $headers[‘request_size’] . ‘
‘; echo ‘filetime: ‘ . $headers[‘filetime’] . ‘
‘; echo ‘ssl_verify_result: ‘ . $headers[‘ssl_verify_result’] . ‘
‘; echo ‘redirect_count: ‘ . $headers[‘redirect_count’] . ‘
‘; echo ‘total_time: ‘ . $headers[‘total_time’] . ‘
‘; echo ‘namelookup_time: ‘ . $headers[‘namelookup_time’] . ‘
‘; echo ‘connect_time: ‘ . $headers[‘connect_time’] . ‘
‘; echo ‘pretransfer_time: ‘ . $headers[‘pretransfer_time’] . ‘
‘; echo ‘size_upload: ‘ . $headers[‘size_upload’] . ‘
‘; echo ‘size_download: ‘ . $headers[‘size_download’] . ‘
‘; echo ‘speed_download: ‘ . $headers[‘speed_download’] . ‘
‘; echo ‘speed_upload: ‘ . $headers[‘speed_upload’] . ‘
‘; echo ‘download_content_length: ‘ . $headers[‘download_content_length’] . ‘
‘; echo ‘upload_content_length: ‘ . $headers[‘upload_content_length’] . ‘
‘; echo ‘starttransfer_time: ‘ . $headers[‘starttransfer_time’] . ‘
‘; echo ‘redirect_time: ‘ . $headers[‘redirect_time’] . ‘
‘; echo ‘RESPONSE:
‘; echo $out; curl_close($curl); > else < //Не установлен CURL или не заданы параметры echo «ERROR: no curl OR no post data!
«; > > else < //Не та тема письма echo «ERROR: no valid email subject!
«; > echo »; $output = »; > > else < //Нет новых писем echo ‘ERROR: no mails!’; >// colse the connection imap_expunge($inbox); imap_close($inbox); ?>
Источник: empty.pro
Bitrix24 REST: Создаем собственное действие в бизнес процессе
Возникла задача, встроить в «Бизнес процесс» облачного Bitrix24 результат определенного действия. Из официальной документации стало понятно, что выполнять произвольные php скрипты возможно только в коробочной версии. Для выполнения собственный действий в облачной версии, необходимо использовать REST API.
У Битрикса имеется неплохая документация по REST, но проведя несколько дней в поисках решения, я так и не смог найти пошаговой инструкции.
Ниже я приведу пошаговое руководство по созданию собственных действий в бизнес процессе. За основу был взят пример по преобразование строки в md5 из примера в документации.
Нам понадобится:
1. Сайт доступный из интернета на https. В качестве SSL сертификата можно использовать бесплатный от Let’s Encrypt.
2. HTML страница с JavaScript для создания приложение в BX24
3. PHP страница для выполнения md5 функции.
Создаем страницу установки. Имя Вы можете придумать самостоятельно.
var params = < ‘CODE’: ‘md5’, ‘HANDLER’: ‘https://yalive.ru/bitrix/md5.php’, ‘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’: », > >, ‘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()); >);
$_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 >
Источник: yalive.ru