dotzero / 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.*"
不使用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 帮助器,用于通过 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