- Выполняет первичный выпуск токенов;
- Хранит актуальные токены в указанной директории, либо в папке с данным скриптом (было бы логичным, если бы эта директория не была публично доступна, не правда ли?);
- Обновляет токены сам на основании
refresh_token
автоматически при инициализации, если датаaccess_token
истекла; - Отправляет unsorted заявку с вашими данными в amoCRM в указанную воронку;
- Максимально простой код с поддержкой PHP всех версий и отправкой запросов через CURL как для standalone работы, так и для интеграции в ваши проекты.
- Открыть в amoCRM раздел amoMarket: https://ваш_домен.amocrm.ru/amo-market/, нажать "три точки" и выбрать "Создать интеграцию";
- Придумать название интеграции (например, "Выгрузка заявок с сайта example.com"), указать все права и придумать адрес "редиректа" (не обязательно реальный, но важно запомнить и внести в настройки скрипта такой же);
- Сохранить свою интеграцию, открыть на первой вкладке её карточку и скопировать оттуда три ключа;
- Внести все данные в шапку скрипта:
- Указать в скрипте
$subdomain
ваш_домен в amoCRM (в строке адреса часть [ваш_домен] до.amocrm.ru
), - Секретный ключ - поместить в
$client_secret
, - ID интеграции - поместить в
$client_id
, - Внести адрес "редиректа" - в
$redirect
, - Опционально можно создать воронку, перейти на её страницу, в строке адреса скопировать последний фрагмент с цифрами и поместить в
$pipelineId
;
- Выполнить скрипт один раз через консоль с 20-минутным кодом авторизации (последний ключ со страницы настроек):
# php amo.php 012345......89 папка_для_токенов
- Выполнять для выгрузки лида в amoCRM:
$amo = new amoSend(папка_для_токенов); $amo->sendLead(['phone'=>..,'email'=>..,'name'=>..,'type'=>...]);
- Рекомендуется прописать в планировщике инициализацию класса не реже чем раз в три месяца, т.к. через 3 месяца
refresh_token
истекает, и нужно будет перевыпустить токены заново начиная с пункта 4. Чтобы этого избежать, достаточно внести в cron задачу вида:3 15 1 * * www-data php /path/to/amo.php refresh папка_для_токенов
Отправка unsorted-лида выполняется функцией sendLead($formData, $formId, $sourceName)
, принимающей три параметра:
$formData
- массив с полями:name
- (обязательно!) ФИО контактаphone
- (обязательно!) телефон контактаtype
- тип заявки ("заказать звонок", "новый заказ" и т.п.)email
- электронная почта контакта,lead_fields
- массив из значений "ID-поля - значение" для заполнения собственных полей заявок (ID можно посмотреть в редакторе полей, кликнув на поле)contact_fields
массив из значений "ID-поля - значение" для заполнения собственных полей контактов (ID можно посмотреть в редакторе полей, кликнув на поле)
formId
- идентификатор формы (alphanumeric), можно придумать любой, или если формы на вашем сайте промаркированы уникальными идентификаторами - передавать ихsourceName
- источник данных (по логике - имя вашего сайта или системы, откуда вы выгружаете заявку)
В общем виде отправка лида выглядит так:
require_once "/path/to/amo.php";
$amo = new amoSend(папка_для_токенов);
$amo->sendLead(array(
'type' => 'Тестовая заявка с сайта',
'name' => 'Иванов Иван Иванович',
'phone' => '+78888888888',
'email' => 'contact@example.com',
"lead_fields" => array(
"1577206" => 'Тестовое поле',
"1756414" => @$_COOKIE['utm_campaign'],
"1886412" => @$_COOKIE['utm_source']
),
"contact_fields" => array(
"3577506" => 'Тестовое поле'
)
), "contact_form", "Заявка с сайта example.com")