Удобный и быстрый клиент на PHP для работы с API amoCRM, реализующий все методы оригинального API.
$ composer require dotzero/amocrm
или добавить
"dotzero/amocrm": "0.3.*"
в секцию require
файла composer.json.
Скачать последнюю версию 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 = [])
- Добавление неразобранных заявок с типом SIPapiAddMail($mails = [])
- Добавление неразобранных заявок с типом MAILapiAddForms($forms = [])
- Добавление неразобранных заявок с типом FORMSaddDataLead($values)
- Добавление сделки которая будет создана после одобрения заявкиaddDataContact($values)
- Добавление контакта или компании которая будет создана после одобрения заявки
-
Модель
webhooks
для работы с WebhooksapiList()
- Метод для получения списка WebhooksapiSubscribe($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 – это уведомление сторонних приложений посредством отправки уведомлений о событиях, произошедших в amoCRM. Вы можете настроить HTTP адреса ваших приложений и связанные с ними рабочие правила в настройках своего аккаунта, в разделе «API».
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());
}
Для хранения ID полей можно воспользоваться хелпером Fields
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 с привязкой к сделке в 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: http://www.opensource.org/licenses/mit-license.php