xeops/amocrm
Composer 安装命令:
composer require xeops/amocrm
包简介
Удобный и быстрый клиент для работы с API amoCRM
README 文档
README
Удобный и быстрый клиент на PHP для работы с API amoCRM, реализующий все методы оригинального API.
Внимание! Не актуальные ссылки на документацию
Данный пакет взаимодействует со старой версией API. Но это не значит, что это API более не поддерживается. Это полностью рабочее API, которое не собираются удалять, просто ссылки более не актуальные, к сожалению на данный момент единственным решением будет просмотр документации тут:
https://web.archive.org/web/20170801033744/https://developers.amocrm.ru/rest_api/
Переход на новую версию API не быстрый и займет много времени.
Установка
Через composer:
$ composer require dotzero/amocrm
или добавить
"dotzero/amocrm": "0.3.*"
в секцию require файла composer.json.
Без использования composer:
Скачать последнюю версию amocrm.phar.
<?php // Использовать ее вместо vendor/autoload.php require_once __DIR__ . '/amocrm.phar';
Быстрый старт
try { // Создание клиента $amo = new \AmoCRM\Client('SUBDOMAIN', 'LOGIN', 'HASH'); // SUBDOMAIN может принимать как часть перед .amocrm.ru, // так и домен целиком например test.amocrm.ru или test.amocrm.com // Получение экземпляра модели для работы с аккаунтом $account = $amo->account; // Вывод информации об аккаунте print_r($account->apiCurrent()); // Получение экземпляра модели для работы с контактами $contact = $amo->contact; // Заполнение полей модели $contact['name'] = 'ФИО'; $contact['request_id'] = '123456789'; $contact['date_create'] = '-2 DAYS'; $contact['responsible_user_id'] = 697344; $contact['company_name'] = 'ООО Тестовая компания'; $contact['tags'] = ['тест1', 'тест2']; // Добавление кастомного поля $contact->addCustomField(100, 'Значение'); // Добавление кастомного поля с типом "мультисписок" $contact->addCustomMultiField(200, [ 1237755, 1237757 ]); // Добавление ENUM кастомного поля $contact->addCustomField(300, '+79261112233', 'WORK'); // Добавление кастомного поля c SUBTYPE поля $contact->addCustomField(300, '+79261112233', false, 'subtype'); // Добавление ENUM кастомного поля с типом "мультисписок" $contact->addCustomField(400, [ ['+79261112233', 'WORK'], ]); // Добавление нового контакта и получение его ID print_r($contact->apiAdd()); } catch (\AmoCRM\Exception $e) { printf('Error (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); }
Список поддерживаемых моделей
- Аккаунт (пример, документация)
- Контакт (пример, документация)
- Сделка (пример, документация)
- Компания (пример, документация)
- Покупатель (пример, документация)
- Транзакция (пример, документация)
- Задача (пример, документация)
- Событие (пример, документация)
- Дополнительные поля (пример, документация)
- Звонок (пример, документация)
- Неразобранное (пример, документация)
- Webhooks (пример, документация)
- Воронки и этапы продаж (пример, документация)
- Периоды покупателей (пример, документация)
- Виджеты (пример, документация)
- Каталоги (пример, документация)
- Элементы каталогов (пример, документация)
- Связи (пример, документация)
Описание методов моделей
-
Модель
accountдля работы с АккаунтомapiCurrent($short = false)- Получение информации по аккаунту в котором произведена авторизацияgetUserByLogin($login = null)- Возвращает сведения о пользователе по его логину
-
Модель
contactдля работы с КонтактамиapiList($parameters, $modified = null)- Метод для получения списка контактов с возможностью фильтрации и постраничной выборкиapiAdd($contacts = [])- Метод позволяет добавлять контакты по одному или пакетноapiUpdate($id, $modified = 'now')- Метод позволяет обновлять данные по уже существующим контактамapiLinks($parameters, $modified = null)- Метод для получения списка связей между сделками и контактами
-
Модель
leadдля работы со СделкамиapiList($parameters, $modified = null)- Метод для получения списка сделок с возможностью фильтрации и постраничной выборкиapiAdd($leads = [])- Метод позволяет добавлять сделки по одной или пакетноapiUpdate($id, $modified = 'now')- Метод позволяет обновлять данные по уже существующим сделкам
-
Модель
companyдля работы с КомпаниямиapiList($parameters, $modified = null)- Метод для получения списка компаний с возможностью фильтрации и постраничной выборкиapiAdd($companies = [])- Метод позволяет добавлять компании по одной или пакетноapiUpdate($id, $modified = 'now')- Метод позволяет обновлять данные по уже существующим компаниям
-
Модель
customerдля работы с ПокупателямиapiList($parameters)- Метод для получения покупателей аккаунтаapiAdd($customers = [])- Метод позволяет добавлять покупателей по одному или пакетноapiUpdate($id)- Метод позволяет обновлять данные по уже существующим покупателям
-
Модель
transactionдля работы с ТранзакциямиapiList($parameters)- Метод для получения транзакций аккаунтаapiAdd($transactions = [])- Метод позволяет добавлять транзакции по одной или пакетноapiDelete($id)- Метод позволяет удалять транзакции
-
Модель
taskдля работы с ЗадачамиapiList($parameters, $modified = null)- Метод для получения списка задач с возможностью фильтрации и постраничной выборкиapiAdd($tasks = [])- Метод позволяет добавлять задачи по одной или пакетноapiUpdate($id, $text, $modified = 'now')- Метод позволяет обновлять данные по уже существующим задачам
-
Модель
noteдля работы с Примечаниями (Задачами)apiList($parameters, $modified = null)- Метод для получения списка примечаний с возможностью фильтрации и постраничной выборкиapiAdd($notes = [])- Метод позволяет добавлять примечание по одному или пакетноapiUpdate($id, $modified = 'now')- Метод позволяет обновлять данные по уже существующим примечаниям
-
Модель
custom_fieldдля работы с Дополнительными полямиapiAdd($fields = [])- Метод позволяет добавлять дополнительные поля по одному или пакетноapiDelete($id, $origin)- Метод позволяет удалять дополнительные поля
-
Модель
callдля работы со ЗвонкамиapiAdd($code, $key, $calls = [])- Метод позволяет добавлять звонки по одному или пакетно
-
Модель
unsortedдля работы со Списком неразобранных заявокapiList($parameters = [])- Метод для получения списка неразобранных заявок с возможностью фильтрации и постраничной выборкиapiGetAllSummary()- Метод для получения агрегированной информации о неразобранных заявкахapiAccept($uids, $user_id, $status_id = null)- Метод для принятия неразобранных заявокapiDecline($uids, $user_id)- Метод для отклонения неразобранных заявокapiAddSip($sip = [])- Добавление неразобранных заявок с типом SIPapiAddMail($mails = [])- Добавление неразобранных заявок с типом MAILapiAddForms($forms = [])- Добавление неразобранных заявок с типом FORMSaddDataLead($values)- Добавление сделки которая будет создана после одобрения заявкиaddDataContact($values)- Добавление контакта или компании которая будет создана после одобрения заявки
-
Модель
webhooksдля работы с WebhooksapiList()- Метод для получения списка WebhooksapiSubscribe($url, $events = [])- Метод для добавления WebhooksapiUnsubscribe($url, $events = [])- Метод для удаления Webhooks
-
Модель
pipelinesдля работы с Списком воронок и этапов продажapiList($id = null)- Метод для получения списка воронок и этапов продажapiAdd($pipelines = [])- Метод позволяет добавлять воронки и этапов продаж по одной или пакетноapiUpdate($id)- Метод позволяет обновлять данные по уже существующим воронкам и этапам продажapiDelete($id)- Метод позволяет удалять воронки по одной или пакетноaddStatusField($parameters, $id = null)- Добавление этапов воронки
-
Модель
customers_periodsдля работы с КомпаниямиapiList()- Метод для получения списка периодовapiSet($periods = [])- Метод позволяет изменять данные по периодам
-
Модель
widgetsдля работы с ВиджетамиapiList($parameters = [])- Метод для получения списка доступных для установки виджетовapiInstall($parameters)- Метод позволяет включать виджеты по одному или пакетноapiUninstall($parameters)- Метод позволяет выключать виджеты по одному или пакетно
-
Модель
catalogдля работы с КаталогамиapiList($id = null)- Метод для получения списка каталогов аккаунтаapiAdd($catalogs = [])- Метод позволяет добавлять каталоги по одному или пакетноapiUpdate($id)- Метод позволяет обновлять данные по уже существующим каталогамapiDelete($id)- Метод позволяет удалять данные по уже существующим каталогам
-
Модель
catalog_elementдля работы с Элементами каталогаapiList($parameters = [])- Метод для получения элементов каталога аккаунтаapiAdd($elements = [])- Метод позволяет добавлять элементы каталога по одному или пакетноapiUpdate($id)- Метод позволяет обновлять данные по уже существующим элементам каталогаapiDelete($id)- Метод позволяет удалять данные по уже существующим элементам каталога
-
Модель
linksдля работы со Связями между сущностямиapiList($parameters)- Метод для получения связей между сущностями аккаунтаapiLink($links = [])- Метод позволяет устанавливать связи между сущностямиapiUnlink($links = [])- Метод позволяет удалять связи между сущностями
Описание работы с Webhooks
Webhooks – это уведомление сторонних приложений посредством отправки уведомлений о событиях, произошедших в amoCRM. Вы можете настроить HTTP адреса ваших приложений и связанные с ними рабочие правила в настройках своего аккаунта, в разделе «API».
Список доступных уведомлений
add_lead- Добавить сделкуadd_contact- Добавить контактadd_company- Добавить компаниюadd_customer- Добавить покупателяupdate_lead- Изменить сделкуupdate_contact- Изменить контактupdate_company- Изменить компаниюupdate_customer- Изменить покупателяdelete_lead- Удалить сделкуdelete_contact- Удалить контактdelete_company- Удалить компаниюdelete_customer- Удалить покупателяstatus_lead- Смена статуса сделкиresponsible_lead- Смена ответственного сделкиrestore_contact- Восстановить контактrestore_company- Восстановить компаниюrestore_lead- Восстановить сделкуnote_lead- Примечание в сделкеnote_contact- Примечание в контактеnote_company- Примечание в компанииnote_customer- Примечание в покупателе
try { $listener = new \AmoCRM\Webhooks\Listener(); // Добавление обработчика на уведомление contacts->add $listener->on('add_contact', function ($domain, $id, $data) { // $domain Поддомен amoCRM // $id Id объекта связанного с уведомлением // $data Поля возвращаемые уведомлением }); // Вызов обработчика уведомлений $listener->listen(); } catch (\AmoCRM\Exception $e) { printf('Error (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); }
Описание хелпера Fields
Для хранения ID полей можно воспользоваться хелпером Fields
try { $amo = new \AmoCRM\Client(getenv('DOMAIN'), getenv('LOGIN'), getenv('HASH')); // Для хранения ID полей можно воспользоваться хелпером \AmoCRM\Helpers\Fields $amo->fields->StatusId = 10525225; $amo->fields->ResponsibleUserId = 697344; // Добавление сделок с использованием хелпера $lead = $amo->lead; $lead['name'] = 'Тестовая сделка'; $lead['status_id'] = $amo->fields->StatusId; $lead['price'] = 3000; $lead['responsible_user_id'] = $amo->fields->ResponsibleUserId; $lead->apiAdd(); // Также можно просто использовать хелпер без клиента $fields = new \AmoCRM\Helpers\Fields(); // Как объект $fields->StatusId = 10525225; $fields->ResponsibleUserId = 697344; // Или как массив $fields['StatusId'] = 10525225; $fields['ResponsibleUserId'] = 697344; } catch (\AmoCRM\Exception $e) { printf('Error (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); }
Описание хелпера B2BFamily
Хелпер для отправки письма через B2BFamily с привязкой к сделке в amoCRM
try { $amo = new \AmoCRM\Client(getenv('DOMAIN'), getenv('LOGIN'), getenv('HASH')); $b2b = new \AmoCRM\Helpers\B2BFamily( $amo, getenv('B2B_APPKEY'), getenv('B2B_SECRET'), getenv('B2B_EMAIL'), getenv('B2B_PASSWORD') ); // Подписать клиента AmoCrm на Webhooks $b2b->subscribe(); // Отправить письмо и прикрепить его к сделке $b2b->mail(6003277, [ 'to' => 'mail@example.com', 'type' => 'message', 'subject' => 'Тест b2bfamily', 'text' => 'Тестовое сообщение', 'events' => [ 'trigger' => 'message_open', 'not_open_timeout' => 1 ] ]); } catch (\AmoCRM\Helpers\B2BFamilyException $e) { printf('Error (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); }
Интеграция с фреймворками
- Yii Framework 1.x (yii-amocrm)
- Yii Framework 2.x (yii2-amocrm)
- Laravel 5.x (laravel-amocrm)
Тестирование
Для начала установить --dev зависимости. После чего запустить:
$ vendor/bin/phpunit
Лицензия
Библиотека доступна на условиях лицензии MIT: http://www.opensource.org/licenses/mit-license.php
xeops/amocrm 适用场景与选型建议
xeops/amocrm 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4.39k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 04 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「api」 「crm」 「amoCRM」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 xeops/amocrm 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 xeops/amocrm 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 xeops/amocrm 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A PHP client for the Salesforce SOAP API
Makes your AmoCRM Webhooks looks pretty
A PSR-7 compatible library for making CRUD API endpoints
Command-line utility for Vtiger CRM.
AmoCRM integration
Library for Kommo (AmoCRM)
统计信息
- 总下载量: 4.39k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-04-08
