Расширение функционала Bitrix 24/Application
Добавление своих методов REST API
правитьДобавление своих методов REST API описано в документации Битрикс
Архитектура
правитьБольшинство современных хостингов настраивают фаервол по умолчанию. На VDS/VPS выполнить установку и настройку фаервола можно даже панели cPanel и ISPmanager.
Для обеспечения безопасности персональных данных можно внедрить дополнительные методы защиты информации. Например осуществить обмен ключами (протокол открытого распределения ключей Диффи-Хеллмана) и использовать дополнительное шифрование.
Использовать ETL или MQ систему для фильтрации и валидации данных:
Регистрация внешнего REST приложения
правитьЕсли у вас нет платной лицензии, то вы можете свободно регистрировать пробный ключ разработчика. Это позволит вам спокойно создавать свои REST приложения. Но есть и другой путь - научится создавать приложения программно без использования пользовательского интерфейса.
При попытке установить приложение в DEMO версию Bitrix, мы получаем ошибку - License check failed.
Обработчик, который выводит эту ошибку, расположен тут - /bitrix/components/bitrix/rest.marketplace.localapp.edit/component.php. Это исключение - OAuthException.
Исключение возникает при вызове метода:
$result = \Bitrix\Rest\AppTable::add($appFields);
Класс AppTable объявлен в файле /bitrix/modules/rest/lib/app.php По идее при активной лицензии мы можем создавать свои приложения из пользовательских модулей используя код аналогичный коду в этом файле.
Если закомментировать вызов исключения в методе onAfterAdd, то ошибка исчезает и появляется новая:
Приложение не найдено
Эта ошибка возникает в уже знакомом нам файле - /bitrix/components/bitrix/rest.marketplace.localapp.edit/component.php из-за того, что метод \Bitrix\Rest\AppTable::getByClientId($arParams['ID']) возвращает NULL вместо массива с параметрами приложения.
arFields:
array(
["URL"] => "https://bx24application.herokuapp.com/",
["URL_INSTALL"] => "https://bx24application.herokuapp.com/url_install_callback",
["SCOPE"] => array("pay_system", "timeman", "imopenlines"
, "crm", "im", "imbot", "task"
, "tasks_extended", "placement", "user"
, "entity", "pull", "pull_channel", "mobile"
, "forum", "log", "sonet_group"
, "messageservice", "mailservice", "lists"
, "calendar", "faceid", "landing"
, "landing_cloud", "documentgenerator"
, "bizproc", "disk", "department"
, "contact_center", "userconsent"
, "rating", "smile", "isu.exchange", "sale" ),
["APP_NAME"] => "Анализ",
["ONLY_API"] => "Y",
["MOBILE"] => "N",
)
Меппинг приложения в БД
правитьПри создании нового приложения в БД меняются следующие таблицы:
- b_rest_event, URL_INSTALL пишется как событие ONAPPINSTALL
- b_rest_app, пишутся элементы массива arFields из rest.marketplace.localapp.edit/component.php
Scope пишется без пробелов через запятую - pay_system,timeman,imopenlines,crm,im,imbot,task,tasks_extended,placement,user,entity,pull,pull_channel,mobile,forum,log,sonet_group,messageservice,mailservice,lists,calendar,faceid,landing,landing_cloud,documentgenerator,bizproc,disk,department,contact_center,userconsent,rating,smile,isu.exchange,sale
- b_rest_app_lang, пишутся элементы массива $arResult['APP']['MENU_NAME']
Интересный файл /bitrix/modules/main/include.php можно исследовать с помощью конструкции
$GLOBALS['cdebug'] = True;
if ($GLOBALS['cdebug'] ) echo(__LINE__."<br>\n");
for ($_