Удобный и быстрый клиент на 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


