bitrix24 rest api php
Как быстро получить много данных от Битрикс24 через REST API
Например, вот сравнительные скорости выгрузки одного поля для разных типов полей:
Плюс, в силу того, что информация сервером выдается постранично, существует несколько стратегий для того, чтобы получить весь список, и некоторые из них позволяют ускорять процесс на порядки по сравнению с последовательными запросами.
Стратегии
Ниже мы описываем три стратегии, которые мы условно назвали «ID filter», «Start increment’ и «List + get».
Первые две стратегии («ID filter» и «Start increment») предложены в официальной документации Битрикс24, но мы ниже предлагаем их «докрутить».
ID filter
Запросы отправляются к серверу последовательно с параметром «order»: <"ID": "ASC">(сортировка по возрастанию ID), и в каждом последующем запросе используются результаты предыдущего (фильтрация по ID, где ID > максимального ID в результатах предыдущего запроса).
В потенциале для ускорения можно попытаться параллельно передвигаться по списку сущностей в два потока: с начала списка и с конца, продолжая получать страницы, пока ID в двух потоках не пересекутся. Такой способ, возможно, будет давать двукратное ускорение до тех пор, пока не будет исчерпан пул запросов к серверу и не потребуется включить throttling.
Start increment
После того, как мы получили первую страницу и увидели в ней общее количество элементов (поле total ), то дальнейшее ускорение запросов можно получить двумя нижеописанными способами.
Объединение запросов в батчи
Зная общее количество элементов, можно сразу создать запросы на все страницы и объединить их в батчи. (Битрикс поддерживает батчи в 50 запросов.) Использование батчей позволяет обойти ограничения на максимальную скорость запросов, так как один батч считается за один запрос при учете сервером количества получаемых запросов.
Параллельная отправка батчей к серверу
Примеры кода в официальной документации Битрикс24 REST API везде предлагают последовательную отправку запросов и описывают лишь ограничения на скорость отправки запросов. Но параллельная отправка запросов возможна и позволяет сильно ускорить обмен информацией с сервером.
Впрочем, таким образом достаточно просто перегрузить сервер, который даже при соблюдении скорости запросов начинает обрывать соединение и уходить в таймауты. Поэтому такой подход требует нахождения пределов нагрузки на сервер экспериментальным способом.
List + get
Чтобы проверить эффективность этих стратегий, мы провели тест (код теста).
Тест использует библиотеку fast_bitrix24 для автоматического контроля скорости запросов к серверу Битрикс24.
Тест проводим на 7-й версии REST API на списке в
Результаты теста
Выводы
В целом, стратегии, использующие батчи и параллельные запросы («Start increment» и «List + get»), показали себя лучше.
Однако при этом, к моему удивлению, стратегия «List + get» оказалась на порядок продуктивнее остальных, даже несмотря на то, что в ней приходится пробегаться по всему списку два раза. (Возможно, эту статью увидят разработчики Битрикс24 и объяснят этот феномен?)
Rest_api для Битрикс24
Вышел Маркетплейс для Битрикс24.
Вышла и документация по нему.
Как разработчику разработать и загрузить приложение в маркетплейс Битрикс24.
Удачи вам в работе!
Ну, серьёно. Я пропустил презентацию. Работает ли «Rest API» для корпоративных порталов? Или не планируется?
Корпоративные порталы, даже с обычным API, сложно кастомизировать.
Сергей, можете ли где-нибудь на сайте http://www.1c-bitrix.ru/ написать таблицу различий Корпоративного портала и Битрикс 24, чтобы никто не путался. И не забывать её вовремя обновлять.
Когда вышло мобильное приложение, говорили про Битрикс 24. В техподдержке я узнал, что мобильное приложение работает и для корпортала. Я не мог быстро найти точную информацию по этому вопросу. Айпада у меня нет.
Различия Битрикса 24 и Корпоративного портала:
Bitrix24 rest api php
Bitrix24 API PHP Wrapper
Обертка на PHP7+ для работы с REST API Битрикс24 с использованием механизма входящих вебхуков, троттлингом запросов и логированием в файл.
Разработчики на JavaScript могут воспользоваться классом-оберткой andrey-tech/bx24-wrapper-js.
Установка через composer:
в секцию require файла composer.json.
Базовые методы класса
Базовые методы находятся в классе \App\Bitrix24\Bitrix24API :
Дополнительные параметры настройки доступны через публичные статические и нестатические свойства класса \App\Bitrix24\Bitrix24API :
Методы для работы с сущностями Битрикс24
Методы работы со сделками
Методы для работы со сделками находятся в трейте \App\Bitrix24\Deal :
Методы для работы с контактами
Методы для работы с контактами находятся в трейте \App\Bitrix24\Contact :
Методы для работы с компаниями
Методы для работы с компаниями находятся в трейте \App\Bitrix24\Company :
Методы для работы с каталогами
Методы для работы с товарными каталогами находятся в трейте \App\Bitrix24\Catalog :
Методы для работы с товарами
Методы для работы с товарами находятся в трейте \App\Bitrix24\Product :
Методы работы с разделами товаров
Методы для работы с разделами товаров находятся в трейте \App\Bitrix24\ProductSection :
Методы работы с товарными позициями
Методы для работы с товарными позициями находятся в трейте \App\Bitrix24\ProductRow :
Методы для работы с пользователями
Методы для работы с пользователями находятся в трейте \App\Bitrix24\User :
Методы работы с задачами
Методы для работы с задачами находятся в трейте \App\Bitrix24\Task :
Методы для работы с делами
Методы для работы с делами (активностями) находятся в трейте \App\Bitrix24\Activity :
Методы для работы с диском
Методы для работы с Диском находятся в трейте \App\Bitrix24\Disk :
Методы для работы с лидами
Методы для работы с лидами находятся в трейте \App\Bitrix24\Lead :
Дополнительные параметры устанавливаются через публичные свойства объекта класса \App\HTTP\HTTP :
Примеры отладочных сообщений:
Дополнительные параметры устанавливаются через публичные свойства класса \App\DebugLogger\DebugLogger :
Пример результатов логирования:
Формат заголовков лога
Данная библиотека распространяется на условиях лицензии MIT.
About
Обертка на PHP7+ для работы с REST API Битрикс24 с использованием механизма входящих вебхуков, троттлингом запросов к API и логированием в файл.
Использование методов REST
Для использования методов REST необходимо либо создать локальное приложение в рамках конкретного Битрикс24 или вебхук, либо разработать тиражное решение и добавить его в партнерский кабинет. Эти варианты описаны в курсе Приложения для Битрикс24. В общем виде вызов метода REST для локальных и тиражных приложений выглядит как HTTPS-запрос следующего вида
Запрос может отправляться как методом GET, так и POST.
Значения параметров методов принимаются в кодировке UTF-8.
Для вебхуков синтаксис вызова отличается, однако все равно содержит имя метода, параметры метода и транспорт.
Фактически, это означает, что вы можете обращаться к методам REST API Битрикс24 используя любые языки программирования и средства разработки, которые поддерживают работу с HTTPS.
Если Ваше приложение/вебхук создаёт аномальную нагрузку на портал, может сработать блокировка:
Для разблокировки необходимо обратиться в техподдержку.
Внимание: все ключи входящих массивов должны передаваться в верхнем регистре.
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Как написать кастомную активити для бизнес-процесса для облачного Битрикс24
На зимней партнерской конференции 1C-Битрикс 2016г Олег Строкатый и Алексей Кирсанов показывали мастер-класс, в ходе которого разработали кастомную активити для бизнес-процесса под облачный Битрикс24. Информация по данной теме есть так же в курсе «Разработчик Bitrix Framework» (ссылки — в конце поста).
Изучив указанные материалы и опробовав их на своих проектах, мы составили для себя простую и подробную памятку действий по разработке активити для облачного Битрикс24, включающую в себя так же некоторые мелочи, которые в вышеуказанных источниках были недосказаны, видимо, в расчете на то, что у разработчика, изучающего их, уже есть определенный базис знаний. Этой памяткой я и хочу поделиться в данном посте.
Кастомная активити для облачного Битрикс24 реализуется как приложение так называемого «второго типа». То есть php-файл с обработчиком активити и с ее установщиком должен лежать где-то на внешнем web-сервере, а Битрикс24 будет обращаться к нему по определенному адресу, например,
Именно этот адрес и используется для добавления приложения в портал, и для публикации приложения в маркетплейс Битрикс24.
Для корректной работы такого приложения домен должен обладать SSL сертификатом (минимум Domain Validation (DV) Certificate). Вести разработку и тестирования приложения можно и без SSL сертификата, но он понадобится для реальной работы приложения, поэтому о нем стоит позаботиться заранее.
1.2 Структура приложения
В самом файле-приложении, прежде всего, необходимо сформировать скелет — структуру страницы приложения.
Данный скелет сразу можно подключить в тестовом портале как будет описано ниже и начать наращивать и отлаживать. Когда мы будем менять что-то в коде приложения на нашем сервере — переподключать приложение на стороне Битрикс24 не нужно — достаточно просто перезагрузить страницу приложения.
2 Какие данные мы получаем и как их проверить
Можно (и нужно) использовать и более сложные проверки с использованием регулярных выражений, но данный пост не о них.
3 Использование REST-api Битрикс24 на php
Далее нам понадобится php-функция, которая посредством curl будет посылать запросы к Битрикс24:
Если нам нужно будет вызвать rest-апи Битрикс24 из php-кода — мы далее можем использовать данную функцию:
4 Метод отладки приложения
Сразу встает вопрос: а как отлаживать наше приложение? Оно же выполняется у нас на сервере — значит мы можем смело все логировать в какой-то файл. Можно, например, использовать функции php fopen, fwrite, fclose. Ну а у нас на сервере тоже стоит Битрикс, поэтому нам нравится использовать функцию AddMessage2Log из битрикс-фреймворка (предварительно подключив заголовок).
5 Использование REST-api Битрикс24 на javascript
Мы можем вызывать rest-апи битрикс24 и через javascript. Следующим образом:
6 Создание и удаление простого активити
В частности нам нужны 2 javaскрипт обработчика для установки и удаления нашей активити (в данном примере мы создаем для облачного Битрикс24 активити, которая запрашивает идентификатор пользователя и возвращает бизнес-процессу его данные: телефон, skype и должность):
7 Логирование запросов и ответов на javascript
Если мы планируем размещать наше приложение в Маркетплейс Битрикс24, мы обязаны логировать все запросы и все ответы от Битрикс24 — не только те, которые посылаем из php-кода, но и те, которые мы посылаем из javascript
Если у нас на сервере тоже стоит Битрикс, можно использовать функции js библиотеки битрикс-фреймворка.
Скрипт-логгер, который мы дергаем по аяксу из нашего javascript может выглядеть так:
8 Не забыть вернуть ответ бизнес-процессу
Если объявляя активити, мы задали параметр ‘USE_SUBSCRIPTION’:’Y’ мы обязаны вернуть бизнес-процессу ответ, соответсвующий описанному для активити массиву выходных параметров RETURN_PROPERTIES. Для этого используем rest-api bizproc.event.send
9 Добавление приложения в портал
Чтобы добавить приложение в портал Битрикс24, его не обязательно публиковать в Маркетплейсе — можно добавить его только в свой портал — для использования только в этом портале. Для этого в левом меню облачного Битрикс24 выбираем пункт «Добавить приложение», далее выбираем «Для личного использования».
В открывшейся форме указываем название приложение, название пункта меню, указываем, права на доступ к каким подсистемам необходимы приложению. Если наше приложение добавляет активити в бизнес-процесс, то необходимо отмечать галку Бизнес-процессы. Указываем ссылку на файл приложения, лежащий на нашем сервере.
Добавленное приложение появляется в списке локальных приложений и в меню приложений.
На странице приложения в портале Битрикс24 у нас 2 кнопки, обработчики которых описаны в посте ранее. Одна кнопка устанавливает нашу кастомную активити, вторая — удаляет.
После установки активити появлется в редакторе бизнес-процесса.
Кастомную активити можно включить в бизнес-процесс, задать ей те входные параметры, которые мы определили, как входные, и она будет работать.
10 Что будет, если удалить кастомную активити, которая включена в бизнес-процесс?
В этом случае бизнес-процесс перестанет отрабатывать корректно, а в редакторе бизнес-процесса данная активити будет подсвечена красным цветом.