dotzero/amocrm

方便快捷的amoCRM API操作客户端

v0.3.29 2019-12-08 18:26 UTC

This package is auto-updated.

Last update: 2024-09-09 04:50:26 UTC


README

amoCRM

Build Status Latest Stable Version Total Downloads License Code Coverage Scrutinizer Code Quality Say Thanks!

方便快捷的PHP客户端,用于操作amoCRM API,实现了所有原始API的方法。

注意!文档链接已过时

本包与旧版API交互。但这并不意味着API不再受支持。这是一个完全有效的API,他们不会删除,只是链接已不再有效。遗憾的是,目前唯一的方法是查看以下文档:

https://web.archive.org/web/20170801033744/https://developers.amocrm.ru/rest_api/

迁移到新版本API不会很快,将花费大量时间。

Say Thanks!

安装

通过composer

$ composer require dotzero/amocrm

或者添加到composer.json文件的require部分。

"dotzero/amocrm": "0.3.*"

不使用composer

下载最新版本的amocrm.phar。

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());
}

支持模型列表

模型方法描述

  • 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 = []) - 该方法用于添加 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 帮助器描述

可以使用 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());
}

与框架的集成

测试

开始前,请安装 --dev 依赖。之后运行

$ vendor/bin/phpunit

许可证

该库在 MIT 许可证下提供:https://open-source.org.cn/licenses/mit-license.php