xeops / amocrm
方便快捷的amoCRM API操作客户端
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/phpunit: ^5.7
README
PHP版本的方便快捷的amoCRM API操作客户端,实现了所有原始API的方法。
注意!文档链接已过时
此包与旧版API交互。但这并不意味着该API不再受支持。这是一个完全可工作的API,它不会被删除,只是链接已过时,遗憾的是,目前唯一可行的解决方案是查看此处文档
https://web.archive.org/web/20170801033744/https://developers.amocrm.ru/rest_api/
迁移到新版本API不是快速的过程,将花费很多时间。
安装
通过composer
$ composer require dotzero/amocrm
或在composer.json文件的require部分添加
"dotzero/amocrm": "0.3.*"
require
不使用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 = [])
- 添加类型为SIP的未整理申请apiAddMail($mails = [])
- 添加类型为MAIL的未整理申请apiAddForms($forms = [])
- 添加类型为FORMS的未整理申请addDataLead($values)
- 添加在申请批准后将创建的交易addDataContact($values)
- 添加在申请批准后将创建的联系人或公司
-
用于处理Webhooks的
webhooks
模型apiList()
- 该方法用于获取Webhooks列表apiSubscribe($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发生事件的通知,向第三方应用程序发出通知。您可以在账户的“API”部分设置中配置应用程序的HTTP地址和相关的工作规则。
可用的通知列表
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 帮助器的说明
可以使用 Fields
帮助器来存储字段 ID
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 许可证下可用:https://open-source.org.cn/licenses/mit-license.php