Skip to content
/ amo Public

Extremely simplified leads export for amoCRM

License

Notifications You must be signed in to change notification settings

phpony/amo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

Экстремально простой класс для работы с amoCRM

  • Выполняет первичный выпуск токенов;
  • Хранит актуальные токены в указанной директории, либо в папке с данным скриптом (было бы логичным, если бы эта директория не была публично доступна, не правда ли?);
  • Обновляет токены сам на основании refresh_token автоматически при инициализации, если дата access_token истекла;
  • Отправляет unsorted заявку с вашими данными в amoCRM в указанную воронку;
  • Максимально простой код с поддержкой PHP всех версий и отправкой запросов через CURL как для standalone работы, так и для интеграции в ваши проекты.

Чтобы начать работать

  1. Открыть в amoCRM раздел amoMarket: https://ваш_домен.amocrm.ru/amo-market/, нажать "три точки" и выбрать "Создать интеграцию";
  2. Придумать название интеграции (например, "Выгрузка заявок с сайта example.com"), указать все права и придумать адрес "редиректа" (не обязательно реальный, но важно запомнить и внести в настройки скрипта такой же);
  3. Сохранить свою интеграцию, открыть на первой вкладке её карточку и скопировать оттуда три ключа;
  4. Внести все данные в шапку скрипта:
  • Указать в скрипте $subdomain ваш_домен в amoCRM (в строке адреса часть [ваш_домен] до .amocrm.ru),
  • Секретный ключ - поместить в $client_secret,
  • ID интеграции - поместить в $client_id,
  • Внести адрес "редиректа" - в $redirect,
  • Опционально можно создать воронку, перейти на её страницу, в строке адреса скопировать последний фрагмент с цифрами и поместить в $pipelineId;
  1. Выполнить скрипт один раз через консоль с 20-минутным кодом авторизации (последний ключ со страницы настроек):
    # php amo.php 012345......89 папка_для_токенов
    
  2. Выполнять для выгрузки лида в amoCRM:
    $amo = new amoSend(папка_для_токенов); 
    $amo->sendLead(['phone'=>..,'email'=>..,'name'=>..,'type'=>...]);
    
  3. Рекомендуется прописать в планировщике инициализацию класса не реже чем раз в три месяца, т.к. через 3 месяца refresh_token истекает, и нужно будет перевыпустить токены заново начиная с пункта 4. Чтобы этого избежать, достаточно внести в cron задачу вида:
    3 15	1 * *	www-data	php /path/to/amo.php refresh папка_для_токенов
    

Формат передаваемых данных

Отправка unsorted-лида выполняется функцией sendLead($formData, $formId, $sourceName), принимающей три параметра:

  1. $formData - массив с полями:
    • name - (обязательно!) ФИО контакта
    • phone - (обязательно!) телефон контакта
    • type - тип заявки ("заказать звонок", "новый заказ" и т.п.)
    • email - электронная почта контакта,
    • lead_fields - массив из значений "ID-поля - значение" для заполнения собственных полей заявок (ID можно посмотреть в редакторе полей, кликнув на поле)
    • contact_fields массив из значений "ID-поля - значение" для заполнения собственных полей контактов (ID можно посмотреть в редакторе полей, кликнув на поле)
  2. formId - идентификатор формы (alphanumeric), можно придумать любой, или если формы на вашем сайте промаркированы уникальными идентификаторами - передавать их
  3. 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")

About

Extremely simplified leads export for amoCRM

Topics

Resources

License

Stars

Watchers

Forks

Languages