:sparkles: Удобный и быстрый клиент для работы с API amoCRM
Удобный и быстрый клиент на PHP для работы с API amoCRM, реализующий все методы оригинального API.
Данный пакет взаимодействует со старой версией API. Но это не значит, что это API более не поддерживается. Это полностью рабочее API, которое не собираются удалять, просто ссылки более не актуальные, к сожалению на данный момент единственным решением будет просмотр документации тут:
https://web.archive.org/web/20170801033744/https://developers.amocrm.ru/rest_api/
Переход на новую версию 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());
}
Модель 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
для работы с Webhooks
apiList()
- Метод для получения списка 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());
}
Для начала установить --dev
зависимости. После чего запустить:
$ vendor/bin/phpunit
Библиотека доступна на условиях лицензии MIT: http://www.opensource.org/licenses/mit-license.php