xeops/amocrm

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

维护者

详细信息

github.com/xeops/amocrm-php

源代码

安装: 701

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 110

v0.3.29.1 2020-04-08 17:32 UTC

This package is auto-updated.

Last update: 2024-09-09 03:25:43 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.*"

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

支持模型列表

模型方法的描述

  • 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 发送邮件并关联 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