Два типа приложений для «Битрикс24»
«Битрикс24» представляет собой полный набор инструментов для организации работы компании. Здесь вы найдёте все необходимое для создания коммуникаций внутри коллектива, для управления задачами и проектами, для работы с различной документацией, CRM, средства связи и многое другое. Зачастую возникают ситуации, когда стандартными средствами облачного сервиса не получается решить ту или иную бизнес-задачу. С помощью открытого API клиенты и разработчики могут легко адаптировать «облако» под свои конкретные задачи, настраивая бизнес-логику.
При желании, инструментарий можно расширять с помощью самостоятельно разрабатываемых приложений, которые условно делятся на два типа:
- внутренние (облачные)
- внешние (серверные)
Многие наши партнёры создают собственные приложения для «Битрикс24». Кто-то делает это лишь для своих нужд, кто-то безвозмездно выкладывает в общий доступ, а у кого-то получается на этом зарабатывать. Один из наших партнёров когда-то тоже заинтересовался разработкой для «Битрикс24», и добился в этом впечатляющих результатов — его приложения используют уже более 30 тысяч порталов «Битрикс24». И если вы тоже планировали разработать приложение под свои нужды, то рекомендации и советы от нашего партнёра могут оказаться вам полезны.
Внутренние приложения всегда работают внутри интерфейса «Битрикс24». Внешние могут работать как внутри, так и вне интерфейса. Оба типа приложений используют для своей работы REST API, поэтому обладают равными возможностями по обработке и использованию данных.
Если вы хотите разработать собственное приложение для «Битрикс24», то выбирая тип — внешнее или внутреннее — нужно руководствоваться решаемыми задачами и необходимыми для этого средствами.
Внутренние приложения
Внутренние приложения в своей работе используют HTML + JavaScript + CSS. Вы не сможете использовать такие средства как, например, PHP, mySQL и cron. Но это не означает, что можно создавать лишь простые приложения вроде «Производственного календаря». Вы вольны использовать в своём приложении любые JavaScript-фреймворки, например, jQuery. Есть возможность подключать удалённые библиотеки: скажем, с помощью Google Charts можно создавать разнообразные графические отчеты, как в приложении «Диаграммы и графики». Самое интересное в ней — публикация созданной диаграммы в «живую» ленту. Выглядит это следующим образом:
<script>
fields = {POST_TITLE: varTitle, POST_MESSAGE: varMessage};
BX24.callMethod('log.blogpost.add', fields, function(result){
if(!result.error()){
//все хорошо
}
else{
//выводим сообщение об ошибке
}
});
</script>
Данное сообщение получат все пользователи портала.
В случае использования серверного приложения на PHP, вышеприведённый код может выглядеть так:
<?
$arFields = array(
"auth" => $auth,
"POST_TITLE" => $imTitle,
"POST_MESSAGE" => $imMessage,
"SPERM"=> array('U'=>explode(',', $user))
);
$url = 'https://' . $domain . '/rest/log.blogpost.add.json';
$res = file_get_contents($url . '?' . http_build_query($arFields));
?>
Данное сообщение получат только те пользователи, которые указаны в параметре SPERM.
Конечно, область применения внутренних приложений очень широка и не ограничивается этими примерами. С их помощью можно осуществлять всевозможные операции с данными. Например, выбрать все сделки по контрагенту за определенный интервал, вычислить их сумму и в зависимости от неё установить значение пользовательского поля «Процент скидки».
Вообще, связка REST API + HTML + JavaScript даёт широчайший простор для творчества при создании внутренних приложений для «Битрикс24». Проще перечислить ограничения. Например, нельзя использовать базу данных для сбора информации, нельзя использовать cron для запуска приложения или его функций по расписанию, не получится реагировать на события CRM или реализовать обмен с внешним сервисом.
Если вам нужно что-то из перечисленного, то потребуется создать внешнее (серверное) приложения.
Внешние (серверные) приложения
Приложение данного типа располагается на сервере разработчика, и доступ к серверу обязательно должен обеспечиваться по протоколу HTTPS. Серверное приложение — это набор скриптов, к которым прилагается небольшая база для сбора статистики.
Серверные приложения условно можно разделить на два подтипа:
- работающие внутри интерфейса «Битрикс24»;
- работающие во внешней среде.
С точки зрения реализации внутренней логики принципиальной разницы между этими подтипами нет. Они отличаются лишь способом подключения к «Битрикс24» и продления доступа к данным.
Приложения, работающие внутри интерфейса, подключаются проще. В принципе, как таковой процедуры подключения и нет, достаточно лишь установить приложение. Для работы с данными ему нужно периодически обновлять ключ доступа, что осуществляется автоматически.
Приложения, работающие вне интерфейса «Битрикс24», требуют определённых действий для подключения и продления ключей доступа. Оба эти процесса описаны в документации к REST API.
Приложение должно быть внешним, если вам требуется, допустим, использовать PHP для генерации файлов. В качестве примера можно привести «Конструктор документов». Данное приложение создаёт документы в формате .PDF и .DOCX на основании данных из CRM и пользовательского шаблона документа. В такой схеме «Битрикс24» выступает «сервером», а приложение — «клиентом».
Одной из возможностей «Конструктора документов» является отправка файлов по электронной почте с привязкой отправления к сущностям CRM. Сделать это можно так:
<script>
files = [
{fileData: [fileName, base64_string]}
];
arEmail = [
{VALUE: 'email@email.ru'}
];
BX24.callMethod(
"crm.activity.add",
{
fields:
{
"OWNER_ID": ownerId,// dealId, etc.
"OWNER_TYPE_ID": ownerTypeId, // 1=lead, 2=deal, 3=contact, 4=company
"TYPE_ID": 4, // 1=meeting, 2=calling, 3=task, 4=email
"COMMUNICATIONS": arEmail,
"SUBJECT": Subject,
"AUTHOR_ID": currentUserId,
"START_TIME": dateStr,
"END_TIME": dateStr,
"COMPLETED": "Y",
"PRIORITY": 2, // 1=low, 2=middle, 3=high
"RESPONSIBLE_ID": currentUserId,
"DESCRIPTION": Message,
"DESCRIPTION_TYPE": 3, // 1=plain text, 2=bb code, 3=html
"DIRECTION": 2, // 1=incoming, 2=outgoing
"WEBDAV_ELEMENTS": files
}
},
function(result)
{
}
);
</script>
Ещё один пример внешнего приложения — интеграция с сервисом «МойСклад». Здесь используется REST API «Битрикс24» и REST API сервиса «МойСклад». Приложение может работать в автоматическом режиме с помощью планировщика cron. В данном случае у нас два «сервера» («Битрикс24» и «МойСклад») и один «клиент» — приложение.
Оно позволяет создавать счета, которые привязываются к CRM и могут участвовать в дальнейшем обмене с 1С: Предприятие стандартными средствами «Битрикс24». Пример кода для создания отчёта:
<?
$arFields = array('auth'=>$auth);
$arFields['fields'] = array(
'ORDER_TOPIC' => $orderTopic,
"STATUS_ID" => "P",
"UF_COMPANY_ID" => $companyId,
"UF_DEAL_ID" => $dealId,
"PAY_SYSTEM_ID" => 1,
"PR_LOCATION" => 1,
"PERSON_TYPE_ID" => 1,
"DATE_INSERT" => date('c', $bg),
"DATE_BILL" => date('c', $bg),
"INVOICE_PROPERTIES" => array('LOCATION' => 1),
'PRODUCT_ROWS' => array(
array(
"ID" => 0,
"PRODUCT_ID" => $productId,
"PRODUCT_NAME" => $productName,
"QUANTITY" => 1,
"PRICE" => $productPrice
)
)
);
$url = 'https://'.$domain.'/rest/crm.invoice.add.json';
$res = PostUrl($url, $arFields);
?>
PostUrl это вспомогательная функция, которая отправляет запрос на сервер.
В качестве примеров внешних приложений, работающих вне «Битрикс24», можно привести «Сканер визиток» и «Виджет для Android». Они оба работают на мобильных устройствах, но данные для своей работы берут из «Битрикс24». В качестве аналогии можно привести схему клиент-прокси-сервер. В данном случае «клиентом» выступает мобильное устройство, «прокси» — само приложение, а «сервером» — портал «Битрикс24».
Сервер
Для внешнего приложения предпочтительно иметь свой собственный сервер. Во-первых, вы сможете управлять и использовать все доступные ресурсы. Во-вторых, у вас будет возможность установить все необходимые модули и версии ПО.
Виртуальный хостинг не всегда позволяет достичь желаемого результата. Я предпочитаю использовать западных VPS-провайдеров, т.к. с ними чувствуешь себя увереннее с точки зрения использования ресурсов. А при работе с российскими провайдерами приходилось с банальным оверселлингом. Имен называть не буду, ни хороших, ни плохих.
Все данные, которыми оперирует серверное приложение, хранятся в специальном объекте типа «Хранилища» внутри каждого портала «Битрикс24». Приложение не собирает никаких персональных данных пользователя. Для работы с ним используется только электронная почта администратора портала, которая не имеет отношения к рабочим данным. Поэтому можно свободно размещаю приложение у западных провайдеров, не нарушая при этом закон 152-ФЗ.
В качестве сервера приложения можно использовать VPS под управлением Unix. Размер ОЗУ должен быть не менее 512 Мб. Жёсткий диск чем больше, тем лучше. Обязательно настройте резервное копирование и обязательно на другой диск.
Обратите особое внимание, что на сервере обязательно должен быть установлен SSL-сертификат. Очень важно установить все цепочки сертификата, дабы избежать ошибок при работе приложения. В качестве поставщика сертификата достаточно самого простого RapidSSL за 14,5 евро/год.
Также одним из возможных вариантов размещения серверного приложения стоит рассмотреть «сайт» под управлением 1С-Битрикс. У данного метода есть несколько преимуществ:
- Использование всех возможностей системы управления сайтом, например, облачный бэкап. Также к преимуществам системы управления сайтом нужно отнести многоуровневое обеспечение защиты от всевозможных угроз.
- Возможность использования модуля «Техподдержка» для организации качественной поддержки пользователей.
- Использование модуля рассылок для уведомления клиентов о выпуске новых возможностей приложения.
В заключение остаётся напомнить, что на портале «Битрикс24» уже доступно для скачивания немало готовых приложений, подавляющее большинство из которых бесплатны. Если же вы не найдёте вариант, удовлетворяющий вашим нуждам, то всегда можно написать своё приложение. Надеюсь, этот пост вам в этом поможет.