Giter Club home page Giter Club logo

amo's Introduction

Экстремально простой класс для работы с 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' => '[email protected]',
  "lead_fields" => array(
      "1577206" => 'Тестовое поле',
      "1756414" => @$_COOKIE['utm_campaign'],
      "1886412" => @$_COOKIE['utm_source']
  ),
  "contact_fields" => array(
      "3577506" => 'Тестовое поле'
  )
), "contact_form", "Заявка с сайта example.com")

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.