Download the PHP package andrei-mireichyk/amocrm-api-library without Composer
On this page you can find all versions of the php package andrei-mireichyk/amocrm-api-library. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download andrei-mireichyk/amocrm-api-library
More information about andrei-mireichyk/amocrm-api-library
Files in andrei-mireichyk/amocrm-api-library
Informations about the package amocrm-api-library
amoCRM API Library
В данном пакете представлен API клиент с поддержкой основных сущностей и авторизацией по протоколу OAuth 2.0 в amoCRM.
Оглавление
- Установка
- Начало работы
- Поддерживаемые методы и сервисы
- Обработка ошибок
- Фильтры
- Работа с Custom Fields сущностей
- Работа с тегами сущностей
- Константы
- Примеры
Установка
Установить библиотеку можно с помощью composer:
Начало работы и авторизация
Для начала использования вам необходимо создать объект бибилиотеки:
Так же предоставляется фабрика для создания объектов \AmoCRM\AmoCRM\Client\AmoCRMApiClientFactory
.
Для ее использования вам нужно реализовать интерфейс \AmoCRM\OAuth\OAuthConfigInterface
и \AmoCRM\OAuth\OAuthServiceInterface
Затем необходимо создать объект (\League\OAuth2\Client\Token\AccessToken
) Access токена из вашего хранилища токенов и установить его в API клиент.
Также необходимо установить домен аккаунта amoCRM в виде СУБДОМЕН.amocrm.(ru/com).
Вы можете установить функцию-callback на событие обновления Access токена, если хотите дополнительно обрабатывать новый токен (например сохранять его в хранилище токенов):
Отправить пользователя на страницу авторизации можно 2мя способами:
-
Отрисовав кнопку на сайт:
- Отправив пользователя на страницу авторизации
Для получения Access Token можно использовать следующий код в обработчике, который будет находится по адресу, указаному в redirect_uri
Пример авторизации можно посмотреть в файле examples/get_token.php
Подход к работе с библиотекой
В библиотеке используется сервисный подход. Для каждой сущности имеется сервис. Для каждого метода имеется свой объект коллекции и модели. Работа с данными происходит через коллекции и методы библиотеки.
Модели и коллекции имеют методы и , методы возвращают представление объекта в виде массива и в виде данных, отправляемых в API.
Также для работы с коллекциями имеют следующие методы:
-
- добавляет модель в конец коллекции.
-
- добавляет модель в начало коллекции.
-
- возвращает массив моделей в коллекции.
-
- получение первой модели в коллекции.
-
- получение последней модели в коллекции.
-
- получение кол-ва элементов в коллекции.
-
- проверяет, что коллекция не пустая.
-
- получение модели по значению ключа.
-
- замена модели по значению ключа.
При работе с библиотекой необходимо не забывать о лимитах API amoCRM. Для оптимальной работы с данными лучше всего создавать/изменять за раз не более 50 сущностей в методах, где есть пакетная обработка.
Нужно не забывать про обработку ошибок, а также не забывать о безопасности хранилища токенов. Утечка токена грозит потерей досутпа к аккаунту.
Поддерживаемые методы и сервисы
Библиотека поддерживает большое количество методов API. Методы сгруппированы и объекты-сервисы. Получить объект сервиса можно вызвав необходимый метод у библиотеки, например:
В данный момент доступны следующие сервисы:
Сервис | Цель сервиса |
---|---|
notes | Примечание сущности |
tags | Теги сущностей |
tasks | Задачи |
leads | Сделки |
contacts | Контакты |
companies | Компании |
catalogs | Каталоги |
catalogElements | Элементы каталогов |
customFields | Пользовательские поля |
customFieldGroups | Группы пользовательских полей |
account | Информация об аккаунте |
roles | Роли пользователей |
users | Роли юзеров |
customersSegments | Сегменты покупателей |
events | Список событий |
webhooks | Вебхуки |
unsorted | Неразобранное |
pipelines | Воронки сделок |
statuses | Статусы сделок |
widgets | Виджеты |
lossReason | Причины отказа |
transactions | Покупки покупателей |
customers | Покупатели |
customersStatuses | Сегменты покупателя |
calls | Звонки |
products | Товары |
shortLinks | Короткие ссылки |
getOAuthClient | oAuth сервис |
getRequest | Голый запросы |
Для большинства сервисов есть базовый набор методов:
-
getOne - Получить 1 сущность
- id (int|string) - id сущности
- with (array) - массив параметров with, которые поддерживает модель сервиса
- Результатом выполнения будет модель сущности
-
get Получить несколько сущностей:
- filter (BaseEntityFilter) - фильтр для сущности
- with (array) - массив параметров with, которые поддерживает модель сервиса
- Результатом выполнения будет коллекция сущностей
-
addOne Создать одну сущность:
- model (BaseApiModel) - модель создаваемой сущности
- Результатом выполнения будет модель сущности
-
add Создать сущности пакетно:
- collection (BaseApiCollection) - коллекция моделей создаваемой сущности
- Результатом выполнения будет коллекция моделей сущности
-
updateOne Обновить одну сущность:
- model (BaseApiModel) - модель создаваемой сущности
- Результатом выполнения будет модель сущности
-
update Обновить сущности пакетно:
- collection (BaseApiCollection) - коллекция моделей создаваемой сущности
- Результатом выполнения будет коллекция моделей сущности
- syncOne Синхронизировать одну модель с сервером:
- model (BaseApiModel) - коллекция моделей создаваемой сущности
- with (array) - массив параметров with, которые поддерживает модель сервиса
- Результатом выполнения будет коллекция моделей сущности
Не все методы доступны во всех сервисах. В случае их вызова будет выброшены Exception.
Некоторые сервисы имеют специфичные методы, ниже рассмотрим сервисы, которые имеют специфичные методы.
Методы доступные в сервисе :
-
getAuthorizeUrl получение ссылки на авторизация
- options (array)
- state (string) состояние приложения
- Результатом выполнения будет строка с ссылкой на авторизация приложения
- options (array)
-
getAccessTokenByCode получение аксес токена по коду авторизации
- code (string) код авторизации
- Результатом выполнения будет объект (AccessTokenInterface)
-
getAccessTokenByRefreshToken получение аксес токена по рефреш токену
- accessToken (AccessTokenInterface) объект аксес токена
- Результатом выполнения будет объект (AccessTokenInterface)
-
setBaseDomain установка базового домена, куда будут отправляться запросы необходимые для работы с токенами
- domain (string)
-
setAccessTokenRefreshCallback установка callback, который будет вызван при обновлении аксес токена
- function (callable)
-
getOAuthButton установка callback, который будет вызван при обновлении аксес токена
- options (array)
- state (string) состояние приложения
- color (string)
- title (string)
- compact (bool)
- class_name (string)
- error_callback (string)
- mode (string)
- Результатом выполнения будет строка с HTML кодом кнопки авторизации
- options (array)
- exchangeApiKey метод для обмена API ключа на код авторизации
- login - email пользователя, для которого обменивается API ключ
- apiKey - API ключ пользователя
- Код авторизации будет прислан на указанный в настройках приложения redirect_uri
Методы связей доступны в сервисах , , , :
-
link Привязать сущность
- model (BaseApiModel) - модель главной сущности
- links (LinksCollection|LinkModel) - коллекция или модель связи
- Результатом выполнения является коллекция связей (LinksCollection)
-
getLinks Получить связи сущности
- model (BaseApiModel) - модель главной сущности
- filter (LinksFilter) - фильтр для связей
- Результатом выполнения является коллекция связей (LinksCollection)
- unlink Отвязать сущность
- model (BaseApiModel) - модель главной сущности
- links (LinksCollection|LinkModel) - коллекция или модель связи
- Результатом выполнения является bool значение
Методы удаления доступны в сервисах , , , , , , , :
-
delete
- model (BaseApiModel) - модель сущности
- Результатом выполнения является bool значение
- deleteOne
- collection (BaseApiCollection) - коллекция моделей сущностей
- Результатом выполнения является bool значение
Методы доступные в сервисе :
- setMode Смена режима покупателей (периодические покупки или сегментация). Если покупатели выключены - то они будут включены.
- mode (string) - тип режима (periodicity или segments)
- isEnabled (bool) - включен ли функционал покупателей, по-умолчанию - true
- Результатом выполнения является строка названия включенного режима или null в случае отключения функционала
Методы доступные в сервисе :
- getByParentId Получение данных по ID родительской сущности
- parentId - ID родительской сущности
- filter (BaseEntityFilter) - фильтр
- with (array) - массив параметров with, которые поддерживает модель сервиса
Методы доступные в сервисе
- getCurrent
- with (array) - массив параметров with, которые поддерживает модель сервиса
- Результатом выполнения является модель AccountModel
Методы доступные в сервисе
-
addOne Создать одну сущность:
- model (BaseApiModel) - модель создаваемой сущности
- Результатом выполнения будет модель сущности
-
add Создать сущности пакетно:
- collection (BaseApiCollection) - коллекция моделей создаваемой сущности
- Результатом выполнения будет коллекция моделей сущности
-
link
- model (BaseApiModel) - модель неразобранного
- body (array) - массив дополнительной информации для привязки
- Результатом выполнения будет модель LinkUnsortedModel
-
accept
- model (BaseApiModel) - модель неразобранного
- body (array) - массив дополнительной информации для принятия
- Результатом выполнения будет модель AcceptUnsortedModel
-
decline
- model (BaseApiModel) - модель неразобранного
- body (array) - массив дополнительной информации для отклонения
- Результатом выполнения будет модель DeclineUnsortedModel
- summary
- filter (BaseEntityFilter) - фильтр для сущности
- Результатом выполнения будет модель UnsortedSummaryModel
Методы доступные в сервисе
-
subscribe
- model (WebhookModel) - модель вебхука
- Результатом выполнения является модель WebhookModel
- unsubscribe
- model (WebhookModel) - модель вебхука
- Результатом выполнения является bool значение
Методы доступные в сервисе
-
install
- model (WidgetModel) - модель виджета
- Результатом выполнения является модель WidgetModel
- uninstall
- model (WidgetModel) - модель виджета
- Результатом выполнения является модель WidgetModel
Методы доступные в сервисе
-
settings
- Результатом выполнения является модель ProductsSettingsModel
- updateSettings
- model (ProductsSettingsModel) - модель виджета
- Результатом выполнения является модель ProductsSettingsModel
Обработка ошибок
Вызов методов библиотеки может выбрасывать ошибки типа . В данные момент доступны следующие типы ошибок, они все наследуют AmoCRMApiException:
Тип | Условия |
---|---|
AmoCRM\Exceptions\AmoCRMApiConnectExceptionException | Подключение к серверу не было выполнено |
AmoCRM\Exceptions\AmoCRMApiErrorResponseException | Сервер вернул ошибку на выполняемый запрос |
AmoCRM\Exceptions\AmoCRMApiHttpClientException | Произошла ошибка http клиента |
AmoCRM\Exceptions\AmoCRMApiNoContentException | Сервер вернул код 204 без результата, ничего страшного не произошло, просто нет данных на ваш запрос |
AmoCRM\Exceptions\AmoCRMApiTooManyRedirectsException | Слишком много редиректов (в нормальном режиме не выкидывается) |
AmoCRM\Exceptions\AmoCRMoAuthApiException | Ошибка в oAuth клиенте |
AmoCRM\Exceptions\BadTypeException | Передан не верный тип данных |
AmoCRM\Exceptions\InvalidArgumentException | Передан не верный аргумент |
AmoCRM\Exceptions\NotAvailableForActionException | Метод не доступен для вызова |
AmoCRM\Exceptions\AmoCRMApiPageNotAvailableException | Выбрасывается в случае запроса следующей или предыдущей страницы коллекции, когда страница отстутвует |
У выброшенных Exception есть следующие методы:
У ошибки типа AmoCRMApiErrorResponseException есть метод , который вернет ошибки валидации входящих данных.
Фильтры
В данный момент библиотека поддерживает фильтры для следующих сервисов:
Сервис | Фильтр | Особенности | Поддерживает ли сортировку? |
---|---|---|---|
Доступен в ограниченном виде, в будущих версиях будет расширен | ❌ | ||
Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ | ||
Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ | ||
Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ | ||
Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ | ||
Фильтр для списка событий | ❌ | ||
, , , | Фильтр для получения связей для метода \AmoCRM\EntitiesServices\HasLinkMethodInterface::getLinks | ❌ | |
Фильтра для \AmoCRM\EntitiesServices\EntityNotes::get | ✅ | ||
Фильтр для \AmoCRM\EntitiesServices\EntityTags::get | ❌ | ||
Фильтр для метода \AmoCRM\EntitiesServices\Tasks::get | ✅ | ||
Фильтр для метода \AmoCRM\EntitiesServices\Unsorted::get | ✅ | ||
Фильтр для метода \AmoCRM\EntitiesServices\Unsorted::summary | ❌ | ||
Фильтр для метода получения хуков | ❌ |
Работа с дополнительными полями сущностей
Дополнительные поля доступны у сущностей следующих сервисов:
У моделей, который возвращаются у этих сервисов, поля можно получить через метод . На вызов данного метода возвращается объект или , если значений полей нет.
Внутри коллекции находятся модели значений полей, все модели наследуются от , но зависят от типа поля.
У моделей, наследующих доступны следующие методы:
- , - получение/установка id поля
-
- получение типа поля
- , - получение/установка кода поля
- , - получение/установка названия поля
- , - получение/установка коллекции значений
Так как некоторые поля могут иметь несколько значений, в свойстве values хранится именно коллекция значений типа . Моделями коллекции являются модели типа .
Схема отношений объектов:
Для разных типов полей мы уже подготовили разные модели и коллекции:
Namespace, в котором находятся модели значения -
Namespace, в котором находятся коллекции моделей значения -
Namespace, в котором находятся модели дополнительных полей -
Тип поля | Модель значения | Коллекция моделей значений | Модель доп поля | Контакт | Сделка | Компания | Покупатель | Каталог | Сегмент |
---|---|---|---|---|---|---|---|---|---|
Текст | TextCustomFieldValueModel | TextCustomFieldValueCollection | TextCustomFieldValuesModel | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Число | NumericCustomFieldValueModel | NumericCustomFieldValueCollection | NumericCustomFieldValuesModel | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Флаг | CheckboxCustomFieldValueModel | CheckboxCustomFieldValueCollection | CheckboxCustomFieldValuesModel | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Список | SelectCustomFieldValueModel | SelectCustomFieldValueCollection | SelectCustomFieldValuesModel | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Мультисписок | MultiselectCustomFieldValueModel | MultiselectCustomFieldValueCollection | MultiSelectCustomFieldValuesModel | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Мультитекст | MultitextCustomFieldValueModel | MultitextCustomFieldValueCollection | MultitextCustomFieldValuesModel | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Дата | DateCustomFieldValueModel | DateCustomFieldValueCollection | DateCustomFieldValuesModel | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Ссылка | UrlCustomFieldValueModel | UrlCustomFieldValueCollection | UrlCustomFieldValuesModel | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Дата и время | DateTimeCustomFieldValueModel | DateTimeCustomFieldValueCollection | DateTimeCustomFieldValuesModel | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Текстовая область | TextareaCustomFieldValueModel | TextareaCustomFieldValueCollection | TextareaCustomFieldValuesModel | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Переключатель | RadiobuttonCustomFieldValueModel | RadiobuttonCustomFieldValueCollection | RadiobuttonCustomFieldValuesModel | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Короткий адрес | StreetAddressCustomFieldValueModel | StreetAddressCustomFieldValueCollection | StreetAddressCustomFieldValuesModel | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Адрес | SmartAddressCustomFieldValueModel | SmartAddressCustomFieldValueCollection | SmartAddressCustomFieldValuesModel | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
День рождения | BirthdayCustomFieldValueModel | BirthdayCustomFieldValueCollection | BirthdayCustomFieldValuesModel | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
Юр. лицо | LegalEntityCustomFieldValueModel | LegalEntityCustomFieldValueCollection | LegalEntityCustomFieldValuesModel | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
Цена | PriceCustomFieldValueModel | PriceCustomFieldValueCollection | PriceCustomFieldValuesModel | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
Категория | CategoryCustomFieldValueModel | CategoryCustomFieldValueCollection | CategoryCustomFieldValuesModel | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
Предметы | ItemsCustomFieldValueModel | ItemsCustomFieldValueCollection | ItemsCustomFieldValuesModel | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
Пример кода, как создать коллекцию значения полей сущности:
Чтобы удалить значения поля доступен специальный объект .
Передав этот объект, вы зануляете значение поля.
Пример:
Работа с тегами сущностей
Теги доступны как отдельный сервис . При создании данного сервиса, вы указываете тип сущности, с тегами которой вы будете работать. В данный момент доступны:
- EntityTypesInterface::LEADS,
- EntityTypesInterface::CONTACTS,
- EntityTypesInterface::COMPANIES,
- EntityTypesInterface::CUSTOMERS,
Для работы с тегами конкретной сущности, нужно взаимодействовать с конкретной моделью сущности. С помощью методов и вы можете получить коллекцию тегов сущности или установить её.
Для изменения тегов вам необходимо передавать всю коллекцию тегов, иначе теги могут быть потеряны.
Пример добавления/изменения тегов у сущности:
или
Для удаления тегов в setTags можно передать в setTags
специальный объект \AmoCRM\Collections\NullTagsCollection
.
Пример удаления тегов у сущности:
Константы
Основные константы находятся в интерфейсе \AmoCRM\Helpers\EntityTypesInterface
.
Также доступны константы в следующих классах/интерфейсах:
\AmoCRM\OAuth\AmoCRMOAuth::BUTTON_COLORS
- доступные цвета для кнопки на сайт\AmoCRM\Models\Unsorted\BaseUnsortedModel
- константы для кодов категорий неразобранного\AmoCRM\Models\CustomFields\BirthdayCustomFieldModel
- константы для свойства remind у поля День Рождения\AmoCRM\Models\Interfaces\CallInterface
- константы статусов звонков\AmoCRM\EntitiesServices\Interfaces\HasParentEntity
- константы для ключей в запросах методов, у которых есть родительский сущность (в данный момент только notes)\AmoCRM\Models\CustomFieldsValues\ValueModels\ItemsCustomFieldValueModel
- константы для ключей значения поля Items\AmoCRM\Models\Rights\RightModel
- константы, связанные с правами\AmoCRM\Models\AccountModel
- константы для аргумента with для сервисаaccount
\AmoCRM\Models\TaskModel
- константы для дефолтных типов задач\AmoCRM\Models\NoteType\TargetingNote
- константы поддерживаемых внешних сервисов для примечаний о таргетинге (добавляют DP)\AmoCRM\Models\RoleModel
- константы для аргумента with для сервисаroles
\AmoCRM\Models\Factories\NoteFactory
- константы типов примечаний\AmoCRM\Models\NoteType\MessageCashierNote
- статусы примечания "Сообщение кассиру"\AmoCRM\Models\LeadModel
- константы для аргумента with для сервисаleads
\AmoCRM\Filters\Interfaces\HasOrderInterface
- константы для сортировки\AmoCRM\Models\EventModel
- константы для аргумента with для сервисаevents
\AmoCRM\Models\CustomFields\CustomFieldModel
- константы типов полей\AmoCRM\Models\Customers\CustomerModel
- константы для аргумента with для сервисаcustomers
\AmoCRM\Models\ContactModel
- константы для аргумента with для сервисаcontacts
\AmoCRM\Models\CompanyModel
- константы для аргумента with для сервисаcompanies
Работа в случае смены субдомена аккаунта
Одноразовые токены интеграций, расшифровка
Примеры
В рамках данного репозитория имеется папка examples с различными примерами.
Для их работы необходимо добавить в неё файл .env со следующим содержимым, указав ваши значения:
CLIENT_ID="UUID интеграци"
CLIENT_SECRET="Секретный ключ интеграции"
CLIENT_REDIRECT_URI="https://example.com/examples/get_token.php (Важно обратить внимание, что он должен содержать в себе точно тот адрес, который был указан при создании интеграции)"
Затем вы можете поднять локальный сервер командой composer serve
. После конфигурацию необходимо перейти в браузере на страницу
http://localhost:8181/examples/get_token.php
для получения Access Token.
Для получения доступа к вашему локальному серверу из вне можно использовать сервис ngrok.io.
После авторизации вы можете проверить работу примеров, обращаясь к ним из браузера. Стоит отметить, что для корректной работы примеров необходимо проверить ID сущностей в них.
License
MIT
All versions of amocrm-api-library with dependencies
ext-json Version *
amocrm/oauth2-amocrm Version ^2.0
guzzlehttp/guzzle Version 6.*
illuminate/support Version 5.* || 6.* || 7.*
symfony/dotenv Version 4.* || 5.*
fig/http-message-util Version 1.*
ramsey/uuid Version ^3 || ^4
lcobucci/jwt Version ^3.3