Расширение функционала 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 ($_