landpro / amo
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is not auto-updated.
Last update: 2024-10-01 04:59:56 UTC
README

这是一个用于操作amoCRM API的PHP客户端,实现了所有原始API的方法。
注意!文档链接已过时
该包与旧版API交互。但这并不意味着该API不再受支持。这是一个完全可用的API,他们不打算删除它,只是链接已经过时。遗憾的是,目前唯一可行的解决方案是查看以下文档
https://web.archive.org/web/20170801033744/https://developers.amocrm.ru/rest_api/
迁移到新版本API不是很快,需要花费很长时间。
安装
通过composer
$ composer req "landpro/amo"
在composer.json文件的require部分
不使用composer
<?php
// Использовать ее вместо vendor/autoload.php
require_once __DIR__ . '/amocrm.phar';
快速开始
try {
// Создание клиента
$amo = new \AmoCRM\Client(
'SUBDOMAIN',
'CLIENT_SECRET', // Секретный ключ
'CLIENT_ID', // ID интеграции
'TOKEN_PATH', // Путь, где будет храниться файл с токеном
'REDIRECT_URI' // Redirect URI указанный в настройках интеграции
);
// SUBDOMAIN может принимать как часть перед .amocrm.ru,
// так и домен целиком например test.amocrm.ru или test.amocrm.com
// Redirect URI - ссылка на ваш сайт, который будет обрабатывать работу с ключами.
// Получение экземпляра модели для работы с аккаунтом
$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用于处理WebhooksapiList()- 获取Webhooks列表的方法apiSubscribe($url, $events = [])- 添加Webhooks的方法apiUnsubscribe($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 Helper 描述
可以使用 Fields Helper 来存储字段 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 Helper 描述
此 Helper 用于通过 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


