Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

🗿 Инструкции и инструменты скрипта

🧙🏻‍♂️🧬 Как устроена логика скрипта?

Допустим, есть интернет магазин, в котором есть личный кабинет для партнеров. В магазине реализован механизм отправки данных о заказе с помощью вебхуков. Use-case: при создании заказа в ЛК сайта, программно шлется POST запрос на определенный url с информацией заказа. Далее по нему в crm создаются: Сделка у контакта Партнера в определенной воронке/этапе с заполнением полей заказа, а также создание Примечания с данными заказа, которые являются расширенной информацией. В сделку также крепятся товары из заказа.

Поиск контакта Партнера в amoCRM осуществляется по полю, в котором содержится id Партнера - в запросе это, например, 'customer_id': '1',. Т.е. одним из необходимых условий для работы интеграции данное поле уже должно быть заполнено у каждого контакта Партнера.

Данные покупателя идут в сделку в соответствующие поля, которые определены в конфиге полей.

🛠 Установка скрипта

  • Быстрая установка. Если нужно, чтобы скрипт был в отдельной папке - распаковываем в нее, и прописываем в конфиге и .htaccess, подробней ниже. Далее открываем путь https://ваш.домен/папка_скрипта/readme - и читаем)

  • Конфигурационные файлы для рабочих окружений находятся в папках внутри /config. Выбор конкретного окружения задается в файле .env.type в корне папки /config. Например, если это рабочее окружение, то в файл пишем prod и все конфиги приложения будут в папке prod.

  • Создать базу данных на хостинге. Сделать импорт базы из файла в папке /db, которая лежит в корне скрипта. Прописать данные доступа к БД в файле конфига в параметре database

  • Если скрипт расположен не в корне домена, то нужно задать папку в 2-х местах: в конфиге параметр script_folder и в файле .htaccess в правилах, например так: RewriteRule ^.*$ /название_папки/index.php [L,QSA]

  • В конфиге скрипта записать урл редиректа: https://ваш.домен/папка_скрипта/api/auth

  • Создать интеграцию в амо https://i.imgur.com/rUAauaH.jpg

  • Заполнить редирект урл(тот который в конфиге) в параметре: redirect_uri

  • Сохранить или сразу записать в файл конфига папка_скрипта/config/название_окружения/amo.config.php эти значения https://i.imgur.com/YFj9l6w.jpg, где домен - это домен вашего аккаунт, редирект урл - это все тот же redirect_uri, а ключ и id клиента - в интеграции амо https://i.imgur.com/FIhoKEa.jpg

  • После заполнения конфига, перейти по адресу https://ваш.домен/папка_скрипта/api/auth - всплывет кнопка, подтвердить доступ, затем должна быть надпись про успех авторизации.

🛠 Настройки скрипта

  • Пароли и логины пользователей задается в конфиге /config/user.php https://i.imgur .com/oKzdqvx.png . Для создания пользователя, нужно "скопировать" массив, и указать login - это то, что в форме авторизации вводить, пароль password - это хеш пароля, который вводят в форме, его можно сформировать в сервисе https://passwordsgenerator .net/sha1-hash-generator/ . По-умолчанию, это логин, т.е. для admin пароль admin. И задать роль - их список можно посмотреть в файле /config/roles.php

  • cache параметр задает время жизни кеша по ключам, например для контактов установлены сутки 24 * 60 * 60

  • domain, client_id, client_secret, redirect_uri - параметры авторизации

  • В файле amo.config.php можно задать contact_cf_partner_id - id поля контакта, по которому ищем партнера

  • Соответствие полей запроса и амо, а также настройки именования сделки и куда она попадает, задается в файле request.mapper.php. Тут можно задать воронку, этап куда сделка создается, а также имя для новой сделки:
    'pipeline_id' => 1731979, 'status_id' => 26034988, 'lead_name' => 'Заказ из ЛК',
    В разделе mapping задается соответствие полей в запросе, с маппингом полей амо. Сам маппинг амо задается в другом конфиге: amo-fields.mapper.php. Чтобы задать, находим id поля в амо, пишем в маппинг, где для поля сами придумываем машинное имя, которое будет использовано в файле request.mapper.php. Например, в запросе есть поле payment_address_1 - находим в амо его id, создаем запись в amo-fields .mapper.php в виде : 'lead.cf.customer_payment_address_1' => [ 'id' => 685733, ], и затем в файле request.mapper.php прописываем соответствие 'payment_address_1' => [ 'id' => 'payment_address_1', 'mapped_id' => 'lead.cf.customer_payment_address_1', ], . Иззи) Теперь поле запроса пишется в поле сделки. >

  • Остальные, не описанные выше парамеры являются системными для скрипта.

👑 Администрирование

📃 Просмотр логов транзакций приложения

Обновить авторизацию

Сброс всех кешей

Обновление кеша конфига

Сброс всех сессий авторизации (разлогинить)

💢 Сброс вообще всех сессий

🔐 Инструменты

🔑 Генератор хеша для пароля авторизации

📮 FAQ

  • Данный скрипт выложен для ознакомления. Много осталось не реализованным, к сожалению, продолжения не будет.

  • Вопрос: Почему обертка для api amo на самописе, а не на laravel, например? Ответ: Есть несколько причин. Простота и управляемость. Для многих задач использование laravel является избыточным, как для бюджета, так и для сопровождения.

    • Один из примеров - это система вебхуков амо. Отправляя вебхук, амо ожидает от сервера ответ. Причем быстрый. И тут либо у вас есть очереди, либо быстрый сервер. Либо вы отдаете 200. В laravel отдача 200 появилась с 8 версии, и то, там это сделано через php-fpm(fastcgi_finish_request), что для хостингов, которые используют клиенты(а это обычно либо шаред, либо впс, но там тоже не могут его нормально настроить), как оказывается, является проблемой. В данном скрипте есть класс Request и в нем можно задать свой обработчик ответа. Да, на ларавел тоже можно все заменить и переопределить, но смысл фреймворка - использовать его, а не бороться с ним.
    • На самом деле планировалась отдельная версия обертки amo api и для laravel. Она должна была стать частью большой системы. Разработка SaaS велась параллельно созданию отдельных Stand Alone Integrations для клиентов. На laravel планировалось построить платформу - с пользователями, кабинетами, подписками, очередями, логированием и прочим, прочим. Разработка остановлена.
  • Features скрипта:

    • Конфиги по окружениям и контекстам(можно задать свои).
    • Роутинг с laravel-подобным способом задания путей.
    • Логи с помощью monolog.
    • Service подобные обертки сервисов амо. Сделано для возможности добавления функционала, которого нет в sdk amo.
    • Авторизация и авторизация
    • Поддержка twig шаблонов и php шаблонов
    • Lock файлы
    • Работа с БД через PDO обертку
    • Кеширование запросов к амо и не только
    • Контейнер приложения, доступный в коде скрипта с сервисами
    • Сессии и переводы строк
    • Все сразу не опишешь)

About

SDK в альфа состоянии(но рабочем) на самописном фреймфорке для api 4 от amoCRM

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages