|
2 | 2 |
|
3 | 3 |  |
4 | 4 |
|
5 | | -Обертка на PHP7+ для работы с REST API [Битрикс24](https://dev.1c-bitrix.ru/rest_help/) с использованием механизма входящих вебхуков, |
6 | | -троттлингом запросов к серверу и логированием. |
| 5 | +Обертка на PHP7+ для работы с [REST API Битрикс24](https://dev.1c-bitrix.ru/rest_help/) с использованием механизма [входящих вебхуков](https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=99&LESSON_ID=8581), |
| 6 | +троттлингом запросов к API и логированием в файл. |
7 | 7 |
|
8 | 8 | **Документация находится в процессе разработки.** |
9 | 9 |
|
|
12 | 12 | <!-- MarkdownTOC levels="1,2,3,4,5,6" autoanchor="true" autolink="true" --> |
13 | 13 |
|
14 | 14 | - [Требования](#%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) |
15 | | -- [Класс `Bitrix24API`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-bitrix24api) |
| 15 | +- [Класс `\App\Bitrix24\Bitrix24API`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appbitrix24bitrix24api) |
16 | 16 | - [Базовые методы класса](#%D0%91%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0) |
17 | 17 | - [Дополнительные параметры](#%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B) |
18 | 18 | - [Методы работы с сущностями Битрикс24](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D1%8F%D0%BC%D0%B8-%D0%91%D0%B8%D1%82%D1%80%D0%B8%D0%BA%D1%8124) |
19 | 19 | - [Методы работы со сделками](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81%D0%BE-%D1%81%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0%D0%BC%D0%B8) |
20 | | - - [Обработка ошибок](#%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA) |
21 | | -- [Класс `\App\HTTP`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-apphttp) |
| 20 | +- [Вспомогательные классы](#%D0%92%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B) |
| 21 | + - [Класс `\App\HTTP`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-apphttp) |
| 22 | + - [Класс `\App\DebugLogger`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appdebuglogger) |
22 | 23 | - [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B) |
23 | 24 | - [Работа со сделками](#%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81%D0%BE-%D1%81%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0%D0%BC%D0%B8) |
24 | 25 | - [Автор](#%D0%90%D0%B2%D1%82%D0%BE%D1%80) |
|
32 | 33 | - PHP >= 7.0. |
33 | 34 | - Произвольный автозагрузчик классов, реализующий стандарт [PSR-4](https://www.php-fig.org/psr/psr-4/). |
34 | 35 |
|
35 | | -<a id="%D0%9A%D0%BB%D0%B0%D1%81%D1%81-bitrix24api"></a> |
36 | | -## Класс `Bitrix24API` |
| 36 | +<a id="%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appbitrix24bitrix24api"></a> |
| 37 | +## Класс `\App\Bitrix24\Bitrix24API` |
37 | 38 |
|
38 | | -Для работы с REST API Битрикс24 используется класс `\App\Bitrix24\Bitrix24API`. |
| 39 | +Для работы с REST API Битрикс24 используется класс `\App\Bitrix24\Bitrix24API`. |
| 40 | +При возникновении ошибок выбрасывается исключение с объектом класса `\App\Bitrix24\Bitrix24APIException`. |
39 | 41 |
|
40 | 42 | <a id="%D0%91%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0"></a> |
41 | 43 | ### Базовые методы класса |
42 | 44 |
|
43 | 45 | - `__construct(string $webhookURL)` Конструктор класса. |
44 | | - + `$webhookURL` - URL входящего вебхука Битрикс24. |
| 46 | + + `$webhookURL` - URL входящего вебхука. |
45 | 47 | - `request(string $function, array $params = []) :?array` Отправляет запрос в API. |
46 | 48 | + `$function` - имя метода (функции) запроса; |
47 | 49 | + `$params` - параметры запроса. |
|
70 | 72 | Свойство | По умолчанию | Описание |
71 | 73 | ----------------------- | ------------------ | -------- |
72 | 74 | `$batchSize` | 50 | Устанавливает количество команд в одном пакете запросов (batch) |
73 | | -`$logger` | null | Хранит объект класса, выполняющего логирование запросов и ответов API. Например, `\App\DebugLogger` |
| 75 | +`$logger` | null | Хранит объект класса `\App\DebugLogger`, выполняющего логирование запросов и ответов к API в файл. |
74 | 76 | `$http` | `object \App\HTTP` | Хранит объект класса `\App\HTTP`, отправляющего запросы к API |
75 | 77 |
|
76 | 78 | <a id="%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D1%8F%D0%BC%D0%B8-%D0%91%D0%B8%D1%82%D1%80%D0%B8%D0%BA%D1%8124"></a> |
|
110 | 112 | - `$deals` - массив наборов полей сделок со связанными товарными позициями `PRODUCTS`; |
111 | 113 | - `$params` - набор параметров сделки. |
112 | 114 | - `deleteDeals(array $dealIds = []) :array` Пакетно удаляет сделки и возвращает массив ID сделок. |
113 | | - - `$dealIds` - набор ID сделок. |
| 115 | + - `$dealIds` - массив ID сделок. |
114 | 116 | - `setDealFile($dealId, $userFieldId, string $fileName, string $fileContent, bool $isBase64FileData = true) :int` Устанавливает файл в НЕ множественное пользовательское поле типа файл (файл нельзя удалить) и возвращает ID сделки. |
115 | 117 | - `$dealId` - ID cделки; |
116 | 118 | - `$userFieldId` ID НЕ множественного пользовательского поля в сделке ('UF_CRM_XXXXXXXXXX'); |
|
135 | 137 | - `getDealProductRowFields() :array` Возвращает описание полей товарных позиций. |
136 | 138 | - `getDealFields() :array` Возвращает описание полей cделки, в том числе пользовательских. |
137 | 139 |
|
138 | | -<a id="%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA"></a> |
139 | | -### Обработка ошибок |
140 | | - |
141 | | -При возникновении ошибок при запросах к API выбрасывается исключение с объектом типа `\App\Bitrix24\Bitrix24APIException`. |
| 140 | +<a id="%D0%92%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B"></a> |
| 141 | +## Вспомогательные классы |
142 | 142 |
|
143 | 143 | <a id="%D0%9A%D0%BB%D0%B0%D1%81%D1%81-apphttp"></a> |
144 | | -## Класс `\App\HTTP` |
| 144 | +### Класс `\App\HTTP` |
145 | 145 |
|
146 | | -Вспомогательный класс `\App\HTTP` обеспечивает: |
| 146 | +Класс `\App\HTTP` обеспечивает: |
147 | 147 |
|
148 | | -- формирование запросов к API Битрикс 24; |
149 | | -- троттлинг запросов к API на требуемом уровне [не более 2-х запросов в секунду](https://dev.1c-bitrix.ru/rest_help/rest_sum/index.php); |
| 148 | +- формирование POST запросов к API Битрикс 24 по протоколу HTTPS; |
| 149 | +- троттлинг запросов к API на требуемом уровне - [не более 2-х запросов в секунду](https://dev.1c-bitrix.ru/rest_help/rest_sum/index.php); |
150 | 150 | - вывод отладочной информации о запросах к API в STDOUT. |
151 | 151 |
|
| 152 | +При возникновении ошибок выбрасывается исключение с объектом класса `\App\AppException`. |
152 | 153 | Дополнительные параметры доступны через публичные свойства класса `\App\HTTP`. |
153 | 154 |
|
154 | 155 | Свойство | По умолчанию | Описание |
|
164 | 165 | `$curlTimeout` | 60 | Устанавливает таймаут установения соединения, секунды |
165 | 166 | `$successStatusCodes` | [ 200 ] | Коды статуса НТТР, которые считаются успешными |
166 | 167 |
|
| 168 | +```php |
| 169 | +use \App\Bitrix24\Bitrix24API; |
| 170 | +use \App\HTTP; |
| 171 | + |
| 172 | +$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/'; |
| 173 | +$bx24 = new Bitrix24API($webhookURL); |
| 174 | + |
| 175 | +// Устанавливаем максимальный уровень вывода отладочных сообщений в STDOUT |
| 176 | +$bx24->http->debugLevel = HTTP::DEBUG_URL | HTTP::DEBUG_HEADERS | HTTP::DEBUG_CONTENT; |
| 177 | + |
| 178 | +// Устанавливаем троттлинг запросов на уровне не более 1 запроса в 2 секунды |
| 179 | +$bx24->http->throttle = 0.5; |
| 180 | + |
| 181 | +// Устанавливаем таймаут соединения в 30 секунд |
| 182 | +$bx24->http->curlTimeout = 30; |
| 183 | +``` |
| 184 | + |
| 185 | +<a id="%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appdebuglogger"></a> |
| 186 | +### Класс `\App\DebugLogger` |
| 187 | + |
| 188 | +Класс `\App\DebugLogger` обеспечивает логирование запросов и ответов к API в файл. |
| 189 | +При возникновении ошибок выбрасывается исключение с объектом класса `\App\AppException`. |
| 190 | + |
| 191 | +Список методов класса: |
| 192 | + |
| 193 | +- `static instance(string $logFileName = 'debug.log') :\App\DebugLogger` Возвращает объект класса. |
| 194 | + + `$logFileName` - имя лог файла. |
| 195 | +- `save(mixed $info, $object = null) :void` Сохраняет подлежащую логированию информацию в файл. |
| 196 | + + $info - строка, массив или объект для логирования; |
| 197 | + + $object - ссылка на объект класса в котором выполняется логирование. |
| 198 | + |
| 199 | +Дополнительные параметры логирования доступы через публичные свойства класса `\App\DebugLogger`. |
| 200 | + |
| 201 | +Свойство | По умолчанию | Описание |
| 202 | +----------------------- | ------------- | -------- |
| 203 | +`$isActive` | false | Включает или выключает логирование |
| 204 | +`$logFileDir` | `temp/` | Устанавливает каталог в котором сохраняются лог файлы |
| 205 | + |
| 206 | + |
| 207 | + |
| 208 | +```php |
| 209 | +use \App\Bitrix24\Bitrix24API; |
| 210 | +use \App\DebugLogger; |
| 211 | + |
| 212 | +$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/'; |
| 213 | +$bx24 = new Bitrix24API($webhookURL); |
| 214 | + |
| 215 | +$logFileName = 'debug_bitrix24api.log' |
| 216 | +$bx24->logger = DebugLogger::instance($logFileName); |
| 217 | + |
| 218 | +// Устанавливаем каталог для сохранения лог файлов |
| 219 | +$bx24->logger->logFileDir = 'logs/'; |
| 220 | + |
| 221 | +// Включаем логирование |
| 222 | +$bx24->logger->isActive = true; |
| 223 | + |
| 224 | +``` |
167 | 225 |
|
168 | 226 | <a id="%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B"></a> |
169 | 227 | ## Примеры |
|
0 commit comments