Сегодня суббота, а значит пора надевать шляпу мейтейнера bitrix24-php-sdk
Сегодня больше про мои ожидания к продукту который *SDK:
- хороший DX (Developer Experience), если вы считаете себя девелопером, то критикуйте ветку 2.x
- хорошая документация - надо писать, да, с примерами
- производительность: влияние на клиентский код должно быть минимальным, а продукт должен предоставлять возможность ворочать большими объёмами данных, иначе зачем нам эта машинерия вся
- работать на современном стеке технологий. Все мы не любим копаться в копролитах, поэтому стараемся использовать новые подходы и фичи языка, современные низкоуровневые библиотеки для сетевого взаимодействия.
- надёжной - тесты, тесты, разные сценарии использования в комьюнити и обратная связь.
Сейчас я делаю подсистему для удобной работы с batch-запросами, дальше все рассуждения и бенчмарки буду уже в канал в телеграм складывать.
(вы находитесь тут)
Домен для пользовательской документации по sdk тоже планирую зарегить.
Сегодня больше про мои ожидания к продукту который *SDK:
- хороший DX (Developer Experience), если вы считаете себя девелопером, то критикуйте ветку 2.x
- хорошая документация - надо писать, да, с примерами
- производительность: влияние на клиентский код должно быть минимальным, а продукт должен предоставлять возможность ворочать большими объёмами данных, иначе зачем нам эта машинерия вся
- работать на современном стеке технологий. Все мы не любим копаться в копролитах, поэтому стараемся использовать новые подходы и фичи языка, современные низкоуровневые библиотеки для сетевого взаимодействия.
- надёжной - тесты, тесты, разные сценарии использования в комьюнити и обратная связь.
Сейчас я делаю подсистему для удобной работы с batch-запросами, дальше все рассуждения и бенчмарки буду уже в канал в телеграм складывать.
(вы находитесь тут)
Домен для пользовательской документации по sdk тоже планирую зарегить.
В рамках работы с batch-запросами в документацию добавлена страница с замерами времени работы в зависимости от:
— сортировка, подсчёт количества элементов в выборке;
— сортировка, без подсчёта количества элементов в выборке;
— сортировка по умолчанию, подсчёт количества элементов в выборке;
— сортировка по умолчанию, без подсчёта количества элементов в выборке;
Тесты проводились на портале где было создано 100к контактов.
TL;DR;
1. По возможности старайтесь избегать выборки всех данных по сущности.
2. Сортировка данных при больших выборках тоже слишком дорогая операция
3. В roadmap SDK будет добавлена задача на поддержку batch-запросов в режиме «отключенный подсчёт количества» элементов, сейчас там указано not implemented.
Вся статья → https://amp.gs/oei3
— сортировка, подсчёт количества элементов в выборке;
— сортировка, без подсчёта количества элементов в выборке;
— сортировка по умолчанию, подсчёт количества элементов в выборке;
— сортировка по умолчанию, без подсчёта количества элементов в выборке;
Тесты проводились на портале где было создано 100к контактов.
TL;DR;
1. По возможности старайтесь избегать выборки всех данных по сущности.
2. Сортировка данных при больших выборках тоже слишком дорогая операция
3. В roadmap SDK будет добавлена задача на поддержку batch-запросов в режиме «отключенный подсчёт количества» элементов, сейчас там указано not implemented.
Вся статья → https://amp.gs/oei3
👍1
Была очередная суббота, я немного покомитил в #BITRIX24PHPSDK
что нового с 14 декабря:
— я заболел ковидом, повалялся в больнице и выписался с 30% поражением лёгких, сейчас потихоньку восстанавливаюсь;
— до болезни получилось обстоятельно поговорить с Валентин Удальцов (https://t.iss.one/vudaltsov/) по поводу подходов к проектированию новой версии SDK, рекомендую. Пожалуй, лучшая трата 6к рублей за консультацию.
— изменений в само SDK приехало много, как и обещал я стараюсь во второй версии гораздо больше внимания уделять DX — developer experience. Описание изменений в самой доке тут https://amp.gs/MRII
Кратко:
— результаты API-вызовов иммутабельные и полностью аннотированные в формате phpstan
— все API-методы аннотированны и предоставляют автокомплит (нарежу видосы и гифки в ближайшх субботних подходах).
— результаты CRUD-операций стали типизированы и получили свой синтаксический сахар
— т.к. #Bitrix24 порой в ответах заставляет меня удивляться, то в папка tests теперь содержит и интеграционные тесты. Да, подпихни свой вебхух и смотри, как отвечает конкретный портал.
— батч-запросы тоже унифицирую по сервисам и типизирую, они стали ещё лаконичнее
Ближайший чекпоинт — это полное покрытие сервисами для scope CRM, на нём соберу большую часть граблей, дальше будет уже механическая работа по добавлению остальных 38(?) скоупов.
https://amp.gs/MRIT — вторая версия про которую идёт речь
что нового с 14 декабря:
— я заболел ковидом, повалялся в больнице и выписался с 30% поражением лёгких, сейчас потихоньку восстанавливаюсь;
— до болезни получилось обстоятельно поговорить с Валентин Удальцов (https://t.iss.one/vudaltsov/) по поводу подходов к проектированию новой версии SDK, рекомендую. Пожалуй, лучшая трата 6к рублей за консультацию.
— изменений в само SDK приехало много, как и обещал я стараюсь во второй версии гораздо больше внимания уделять DX — developer experience. Описание изменений в самой доке тут https://amp.gs/MRII
Кратко:
— результаты API-вызовов иммутабельные и полностью аннотированные в формате phpstan
— все API-методы аннотированны и предоставляют автокомплит (нарежу видосы и гифки в ближайшх субботних подходах).
— результаты CRUD-операций стали типизированы и получили свой синтаксический сахар
— т.к. #Bitrix24 порой в ответах заставляет меня удивляться, то в папка tests теперь содержит и интеграционные тесты. Да, подпихни свой вебхух и смотри, как отвечает конкретный портал.
— батч-запросы тоже унифицирую по сервисам и типизирую, они стали ещё лаконичнее
Ближайший чекпоинт — это полное покрытие сервисами для scope CRM, на нём соберу большую часть граблей, дальше будет уже механическая работа по добавлению остальных 38(?) скоупов.
https://amp.gs/MRIT — вторая версия про которую идёт речь
Telegram
Валентин Удальцов
Автор канала Пых @phpyh. Делаю Пых.конф — новую PHP конференцию для всех 19 сентября в Конгресс-центре ЦМТ!
#bitrix24phpsdk новости от 30.01.2021
Ветка 2.0 приводится в порядок, стал писать осмысленный чейнджлог:
https://github.com/mesilov/bitrix24-php-sdk/tree/2.x
Следующая точка приложения усилий — документация для разработчиков, сейчас вроде всё очевидно, но вопросы в личных сообщениях намекают, что документацию нужно писать)
Ветка 2.0 приводится в порядок, стал писать осмысленный чейнджлог:
https://github.com/mesilov/bitrix24-php-sdk/tree/2.x
remove Travis CI and migrate to Github Actions
add unit-tests in independent GitHub action
add phpstan checks in independent GitHub action
add in scope «CRM» Contacts service and integration test
add in scope «CRM» Contacts batch service and integration test
add in scope «CRM» Products service and integration test
add in scope «CRM» Settings service and integration test
add in scope «CRM» DealCategoryStage service and integration test
add in scope «CRM» DealProductRows service and integration test
add in scope «CRM» DealContact service and integration test
add in scope «IM» IM service and integration test
add in default scope «Main» default service
Следующая точка приложения усилий — документация для разработчиков, сейчас вроде всё очевидно, но вопросы в личных сообщениях намекают, что документацию нужно писать)
GitHub
GitHub - mesilov/bitrix24-php-sdk at 2.x
A powerful PHP library for the Bitrix24 REST API. Contribute to mesilov/bitrix24-php-sdk development by creating an account on GitHub.
Привет, я снова выхожу на связь (*・ω・)ノ
Две новости:
1. Текущая кодовая база в ветке 0.x замораживается и будет жить в ветке релизов 1.x, возможностей поддерживать её у меня нет, если нужно — открывайте MR. В своих проектах можно зафиксировать тег 1.0.0 и у вас уже ничего не изменится.
2. 💥 В мастер будет влита текущая ветка 2.x с полной потерей обратной совместимости. Релизы по ней будут идти с альфа префиксами.
Если у вас старый проект, то можно жить на ветке 1.x и планировать миграцию на 2.x, гайд по миграции я положу в документацию.
Новые проекты лучше сразу стартовать на 2.x 🙂
Две новости:
1. Текущая кодовая база в ветке 0.x замораживается и будет жить в ветке релизов 1.x, возможностей поддерживать её у меня нет, если нужно — открывайте MR. В своих проектах можно зафиксировать тег 1.0.0 и у вас уже ничего не изменится.
2. 💥 В мастер будет влита текущая ветка 2.x с полной потерей обратной совместимости. Релизы по ней будут идти с альфа префиксами.
Если у вас старый проект, то можно жить на ветке 1.x и планировать миграцию на 2.x, гайд по миграции я положу в документацию.
Новые проекты лучше сразу стартовать на 2.x 🙂
Привет, у нас сборка
Добавили
— метод
— для скоупа «CRM» добавлен сервис по работе с пользовательскими полями сущности
— для скоупа «CRM» добавлен сервис по работе с пользовательскими полями сущности
— для объекта
— для объекта
Удалили
— старый код, который относился к кодовой базе веток 0.x и 1.x
Изменения
Мы начинаем двигаться 🐌 в сторону более строгой типизации возвращаемых результатов.
—
—
— добавлены интеграционные тесты на все поддерживаемые на текущий момент сервисы, для их запуска почитайте доку и подставьте входящий вебхук от тестового портала.
— в сборку релиза добавлены шаги запуска интеграционных тестов и статического анализа силами phpstan, пусть работают роботы.
Из-за объёма кодовой базы работа предстоит большая, поэтому в каждом релизе будем постепенно добавлтяь новые объекты типа
https://amp.gs/jYskW
2.0-alpha.5
и 300 ⭐ 🍾 на GitHubДобавили
— метод
countByFilter
подсчёт количества элементов по фильтру.— для скоупа «CRM» добавлен сервис по работе с пользовательскими полями сущности
Deal
и интеграционные тесты.— для скоупа «CRM» добавлен сервис по работе с пользовательскими полями сущности
Contact
и интеграционные тесты.— для объекта
ContactItemResult
добавлен метод getUserfieldByFieldName
. — для объекта
DealItemResult
добавлен метод getUserfieldByFieldName
. Удалили
— старый код, который относился к кодовой базе веток 0.x и 1.x
Изменения
Мы начинаем двигаться 🐌 в сторону более строгой типизации возвращаемых результатов.
—
ContactItemResult
теперь возвращает ожидаемые типы данных: DateTimeInterface, int, boolean и т.д.—
DealItemResult
теперь возвращает ожидаемые типы данных: DateTimeInterface, int, boolean и т.д.— добавлены интеграционные тесты на все поддерживаемые на текущий момент сервисы, для их запуска почитайте доку и подставьте входящий вебхук от тестового портала.
— в сборку релиза добавлены шаги запуска интеграционных тестов и статического анализа силами phpstan, пусть работают роботы.
Из-за объёма кодовой базы работа предстоит большая, поэтому в каждом релизе будем постепенно добавлтяь новые объекты типа
*Result
https://amp.gs/jYskW
🚀 Новый релиз bitrix24-php-sdk 2.0-alpha.6
Добавлено
— интеграционные тесты запускаются в GitHub Actions pipeline 🎉, пока для ветки
— для разработчиков REST-API Битрикс24 сделана ручка
— в batch добавлен метод
— в
— в
— добавлен сервис
— добавлен интегрфейc
— для скоупа «CRM» добавлен метод пакетного удаления сделок
— добавлен
Изменено
— компоненты Symfony обновлены до 5.4
— psr/log ожидается версий от 1 до 3.
Полный список изменений
Добавлено
— интеграционные тесты запускаются в GitHub Actions pipeline 🎉, пока для ветки
dev
.— для разработчиков REST-API Битрикс24 сделана ручка
vendor-check.yml
которая позволяет запускать интеграционные тесты после релиза новой версии на тестовый NFR-портал. Так будут проверять, что при релизе новой версии Битрикс24 соблюдается контракт на API.— в batch добавлен метод
getTraversableList
который по умолчанию не использует подсчёт количества элементов, на больших объёмах данных получили x2 прироста к скорости выборки данных и довольного модератора в маркетплейсе, т.к. снизится нагрузка на порталы.— в
CoreBuilder
добавили Credentials.— в
Batch::deleteEntityItems
добавлен метод для пакетного удаления элементов.— добавлен сервис
BulkItemsReader
который содержит в себе стратегии получения данных для приложений заточенных на экспорт данных. Сейчас там только «наивная» стратегия использующая батч-запросы без подсчёта количества элементов, есть большой задел по оптимизации скорости выборки данных за счёт мультиплексирования запросов.— добавлен интегрфейc
Core\Contracts\DeletedItemResultInterface
c результатом удалёния сущности.— для скоупа «CRM» добавлен метод пакетного удаления сделок
Services\CRM\Deal\Service\Batch:delete batch delete deals
.— добавлен
NetworkTimingsParser
для разбора и проброса структур данных curl_info в логи для отладки.Изменено
— компоненты Symfony обновлены до 5.4
— psr/log ожидается версий от 1 до 3.
Полный список изменений
👍1
https://github.com/mesilov/bitrix24-php-sdk/issues/273 – список задач на следующую сборку, если есть дополнительные требования или уточнения, то пишите сразу в нужную задачу.
GitHub
собрать релиз bitrix24-php-sdk v2.0-alpha.7 · Issue #273 · mesilov/bitrix24-php-sdk
Разработка ✅ унификация batch-операций #268 ✅ #280 ✅ #282 ✅ #283 ✅ #285 ✅ #274 ✅ #275 ✅ #292 #292 ✅ fix bug UnknownScopeCodeException - in refresh token response #295 ✅ add application level events...
У Битрикс24 наблюдаются проблемы в работе rest-api, ребята в курсе проблемы и занимаются её решением.
Если у вас в sdk включены логи, то проверьте дисковое пространство и успокойте клиентов.
Для критически важных интеграций после восстановления работы не забудьте пропихнуть данные, если алгоритм обмена не имеет встроенной защиты от подобных ситуаций.
Если у вас в sdk включены логи, то проверьте дисковое пространство и успокойте клиентов.
Для критически важных интеграций после восстановления работы не забудьте пропихнуть данные, если алгоритм обмена не имеет встроенной защиты от подобных ситуаций.
Вышли на финишную прямую сборки билда v2-alpha7, список изменений и закрытых задач — https://github.com/mesilov/bitrix24-php-sdk/issues/273
Если у вас ещё не горят сроки, то переключитесь на ветку и погоняйте новый функционал.
Если у вас ещё не горят сроки, то переключитесь на ветку и погоняйте новый функционал.
GitHub
собрать релиз bitrix24-php-sdk v2.0-alpha.7 · Issue #273 · mesilov/bitrix24-php-sdk
Разработка ✅ унификация batch-операций #268 ✅ #280 ✅ #282 ✅ #283 ✅ #285 ✅ #274 ✅ #275 ✅ #292 #292 ✅ fix bug UnknownScopeCodeException - in refresh token response #295 ✅ add application level events...
Быстрый вопрос: у когото были потребности вида «достать активити определённого типа» например, заполнения конкретной CRM-формы или звонки там. Т.е. можно поверх активити сделать хелперы для получения конкретных типов.
Если с таким сталкивались — напишите пожалуйста в комментариях
Если с таким сталкивались — напишите пожалуйста в комментариях
Новый релиз bitrix24-php-sdk — 2.0-alpha.7
Обновляемся и тестируем! 🚀
https://github.com/mesilov/bitrix24-php-sdk
Добавлено:
— скоуп
— скоуп
— скоуп
— скоуп
— скоуп
— скоуп
— скоуп
— скоуп
— скоуп
— скоуп
— добавлена поддержка событий уровня приложения:
— добавлена поддержка событий уровня приложения:
— добавлен метод
— добавлен метод
— скоуп
— скоуп
— добавлена поддержка DTO
— добавлен метод
— добавлен метод
— добавлена поддержка инициализации плейсментов
— добавлен метод
— добавлен метод
— добавлен метод
— добавлен метод
— добавлен метод
— добавлен метод
— добавлена поддержка полей
Изменено
— обновили состав скоупов
— увеличили требования для компонентов
— метод
— метод
— метод
— ❗️метод
— ❗️удалён класс
— ❗️удалён класс
— ❗️удалён метод
method
Исправления ошибок
— add bugfix for batch method for reverse order queries
— fix type compatible errors for
— error in
— error in
enum
etc
— добавлена возможность спонсирования разработки https://boosty.to/bitrix24-php-sdk
Обновляемся и тестируем! 🚀
https://github.com/mesilov/bitrix24-php-sdk
Добавлено:
— скоуп
Telephony
и сервисы по работе с ней— скоуп
UserConsent
и сервисы по работе с ним— скоуп
Placements
и сервисы по работе с ним— скоуп
IMOpenLines
и сервисы по работе с ним— скоуп
CRM
добавлен сервис Leads
— скоуп
CRM
добавлен сервис Activity
— скоуп
CRM
добавлен метод Services\CRM\Deal\Service\Batch:update
— скоуп
CRM
добавлен метод Services\CRM\Contact\Service\Batch:delete
— скоуп
CRM
добавлены сервисы Services\CRM\Activity\ReadModel
для: EmailFetcher
, OpenLineFetcher
, VoximplantFetcher
, WebFormFetcher
— скоуп
Main
добавлена поддержка сервиса Events
— добавлена поддержка событий уровня приложения:
ONAPPINSTALL
и ONAPPUNINSTALL
— добавлена поддержка событий уровня приложения:
PortalDomainUrlChangedEvent
— добавлен метод
Core\Batch:updateEntityItems
— добавлен метод
Core\Contracts\BatchInterface:updateEntityItems
— скоуп
Placements
добавлен сервис Placement\Service\UserFieldType
для работы с типами полей подразумеващюих встройку— скоуп
Telephony
, добавлена поддержка событий: OnExternalCallBackStart
, OnExternalCallStart
, OnVoximplantCallEnd
, OnVoximplantCallEnd
, OnVoximplantCallInit
, OnVoximplantCallStart
— добавлена поддержка DTO
ApplicationStatus
— добавлен метод
AccessToken:initFromPlacementRequest
— добавлен метод
ApplicationProfile:initFromArray
when application profile stored in ENV-variables— добавлена поддержка инициализации плейсментов
Bitrix24\SDK\Application\Requests\Placement\PlacementRequest
— добавлен метод
Credentials:initFromPlacementRequest
когда приложение инициализируется при загрузке плеймента— добавлен метод
Services\Main\Service:getServerTime
возвращает время сервера— добавлен метод
Services\Main\Service:getCurrentUserProfile
возвращает базовую инфу по текущему юзеру.— добавлен метод
Services\Main\Service:getAccessName
возвращает наименования разрешений.— добавлен метод
Services\Main\Service:checkUserAccess
— добавлен метод
Services\Main\Service:getMethodAffordability
— добавлена поддержка полей
operating
и operating_reset_at
в Bitrix24\SDK\Core\Response\DTO\Time
Изменено
— обновили состав скоупов
— увеличили требования для компонентов
symfony/*
до версии 6.*
— метод
Services\Main\Service:getAvailableMethods
помечен как deprecated— метод
Services\Main\Service:getAllMethods
помечен как deprecated— метод
Services\Main\Service:getMethodsByScope
помечен как deprecated— ❗️метод
Bitrix24\SDK\Core\Credentials
переименован: createFromWebhook
, createFromOAuth
, createFromPlacementRequest
— ❗️удалён класс
Bitrix24\SDK\Core\Response\DTO\ResponseDataCollection
— ❗️удалён класс
Bitrix24\SDK\Core\Response\DTO\Result
— ❗️удалён метод
CoreBuilder:withWebhookUrl
, используйтеmethod
CoreBuilder:withCredentials
Исправления ошибок
— add bugfix for batch method for reverse order queries
— fix type compatible errors for
Core\Result\AbstractItem
— error in
NetworkTimingParser
— error in
RenewedAccessToken
DTO, remove Scope
enum
etc
— добавлена возможность спонсирования разработки https://boosty.to/bitrix24-php-sdk
GitHub
GitHub - mesilov/bitrix24-php-sdk: A powerful PHP library for the Bitrix24 REST API
A powerful PHP library for the Bitrix24 REST API. Contribute to mesilov/bitrix24-php-sdk development by creating an account on GitHub.
👍2🔥2
Bitrix24 Apps & BITRIX24-PHP-SDK pinned «Новый релиз bitrix24-php-sdk — 2.0-alpha.7 Обновляемся и тестируем! 🚀 https://github.com/mesilov/bitrix24-php-sdk Добавлено: — скоуп Telephony и сервисы по работе с ней — скоуп UserConsent и сервисы по работе с ним — скоуп Placements и сервисы по работе с…»
Привет, новая сборка SDK на подходе:
2.0-beta.1 — 18.02.2024
https://github.com/mesilov/bitrix24-php-sdk/releases – полный список изменений
Добавлено
add php 8.3, 8.2 support, drop 8.1 and 8.0 support
add
add contracts for bitrix24 applications based on bitrix24-php-sdk -
add service builder factory https://github.com/mesilov/bitrix24-php-sdk/issues/328
add method
add method
add system CRM multi-field type
add scope
–
–
–
–
–
–
add method
add crm item support https://github.com/mesilov/bitrix24-php-sdk/issues/330
add enum
add Duplicate search support for
add
add CRM multifields support https://github.com/mesilov/bitrix24-php-sdk/issues/338
–
–
–
–
add Catalog https://github.com/mesilov/bitrix24-php-sdk/issues/364 scope services support
2.0-beta.1 — 18.02.2024
https://github.com/mesilov/bitrix24-php-sdk/releases – полный список изменений
Добавлено
add php 8.3, 8.2 support, drop 8.1 and 8.0 support
add
Symfony\Component\Uid\Uuid
requirementsadd contracts for bitrix24 applications based on bitrix24-php-sdk -
Bitrix24\SDK\Application\Contracts
, now added Bitrix24Account
add service builder factory https://github.com/mesilov/bitrix24-php-sdk/issues/328
add method
Bitrix24\SDK\Core\Credentials\Scope::initFromString
add method
Bitrix24\SDK\Application\ApplicationStatus::initFromString
add system CRM multi-field type
Bitrix24\SDK\Services\CRM\Common\Result\SystemFields\Types\Phone
add scope
user
,user_basic
,user_brief
,user.userfield
and services https://github.com/mesilov/bitrix24-php-sdk/issues/339–
Bitrix24\SDK\Services\User\Service\User::fields
- get user fields–
Bitrix24\SDK\Services\User\Service\User::current
- get current user–
Bitrix24\SDK\Services\User\Service\User::add
- add user–
Bitrix24\SDK\Services\User\Service\User::get
- get user–
Bitrix24\SDK\Services\User\Service\User::update
- update user–
Bitrix24\SDK\Services\User\Service\User::search
- search usersadd method
\Bitrix24\SDK\Services\CRM\Contact\Service\Batch::update()
for batch update contactsadd crm item support https://github.com/mesilov/bitrix24-php-sdk/issues/330
add enum
DealStageSemanticId
add Duplicate search support for
Bitrix24\SDK\Services\CRM\Duplicates\Service\Duplicate
add
x-request-id
header support https://github.com/mesilov/bitrix24-php-sdk/issues/354 add CRM multifields support https://github.com/mesilov/bitrix24-php-sdk/issues/338
–
Email
–
Phone
–
Website
–
IM
add Catalog https://github.com/mesilov/bitrix24-php-sdk/issues/364 scope services support
GitHub
Releases · mesilov/bitrix24-php-sdk
A powerful PHP library for the Bitrix24 REST API. Contribute to mesilov/bitrix24-php-sdk development by creating an account on GitHub.
👍7