'Первый шаг' Добавить Lead(запрос/задачу) в воронку.
Внешняя интеграция (+widger) для amoCRM (весна 2022) + dadata подсказки.
Настройка окружения
- определитесь с хостом и загрузите туда проект (для amo нужен сертификат SSL на хосте https:\)
- выберете имя поддомена и поключитесь к демо версии amoCRM (https://www.amocrm.ru/) (14 дней, потом через чат с техподдержкой в конце периода - продлите период еще на 10 дней)
- зарегистрируйтесь на сервисе DaData (https://dadata.ru/) и получите бесплатный ключ api
Настройка amoCRM (для текущего релиза Весна 2022)
- добавьте несколько пользовательских полей в сущность Списки/Компании/Добавить компанию/Настройка' в примере это строковые поля: - ИНН - ОГРН - Юридический адрес
- добавьте воронку Сделки/Новая сделка
- создайте внешнюю интеграцию amoМаркет/Создать интеграцию/Внешняя интеграция/Создать
- 3.1. укажите путь к исполняемому файлу index.php (странице) проекта - здесь https:// каталог на хосте /app/amoCRM/widgets/addLead/
- 3.2. нажмите подключить, дождитесь изменения статуса на Подключено (с этого момента идет отсчет 20 минут жизни кода авторизации)
- добавьте значения в следующие файлы проекта
- 4.1. \app\amoCRM\amo\config.php
- $subdomain - имя поддомена из адреса вашего облака amoCRM
- $client_secret - секретный ключ (из настроек вашей интеграции)
- $client_id - id интеграции (из настроек вашей интеграции)
- $code - код авторизации (из настроек вашей интеграции)
- $redirect_uri путь к файлу проекта из п.п. 3.1
- 4.2. \app\amoCRM\dadata\config.php
- var token - ключ API (из сервиса DaData)
- 4.2. \app\amoCRM\widgets\addLead\script.js
- var token - ключ API (из сервиса DaData)
- 4.3. \app\amoCRM\amo\setParty.php
- $user_amo - ваш id пользователя amoCRM (профиль/Настройки профиля/ID пользователя)
- $pipeline_id - id воронки (встаньте на созданную воронку (сделки) - последние цифры в адресной строке)
- проставьте id пользовательских полей из п.п. 1
- 4.1. \app\amoCRM\amo\config.php
*значения можете взять из п.п. 5.2 \app\amoCRM\widgets\getInfo
*если $user_amo не указан ('') сделка будет создана от системного 'робот'
- авторизация (один раз, и через три месяца если не использовали свою интеграцию ни разу - повторно)
- 5.1. запустите (index.php) \app\amoCRM\amo\auth.php
- произойдет замена кода авторизации на токены которые будут сохранены в файле \app\amoCRM\amo\tokens.txt
- посмотрите в настройках вашей интеграции (Выданные доступы) что текущему пользователю выдано разрешение на ее использование
- 5.2. для проверки работоспособности выполните запрос к данным amoCRM
- запустите (amoCRM должен быть открыт в браузере (кеш)) \app\amoCRM\amo\get.phpp (файл покажет структуру пару GET запросов вашей учетки)
- или (amoCRM может быть закрыт) \app\amoCRM\widgets\getInfo\ (выберите запрос и посмотрите текущую структуру данных)
- 5.1. запустите (index.php) \app\amoCRM\amo\auth.php
*если не уложились в 20 минут - отключите свою интеграцию, затем включите ее вновь, дождитесь изменения статуса и внесите новый код авторизации в $code п.п. 4.1.
если файл (index.php) \app\amoCRM\amo\tokens.txt уже содержит токены - очистите его перед авторизацией
- виджет (просто страница проекта)
- 6.1. запустите (index.php) \app\amoCRM\widgets\addLead\
- 6.2. выберите чрез что запрашиваем данные из DaData
- через плагин (фронт, JS Плагин DaData, автолоадер + форматировынный выпадающий список и т.д.)(ключ DaData в прямой видимости)
- через API (бэк, ключ на сервере, запрос через API, тут автолоадер не стал делать - просто первое значение из ответа)(ключ типа спрятан на сервере и вроде не виден на первый взгляд)
- 6.3. кнопка добавить в amoCRM - создает новый Lead/Сделку с заполненными полями из формы для сущностей Сделка/Компания/Контакт
*можно добавить на форму выпадающий список воронок (значения можете взять из п.п. 5.2 (\app\amoCRM\widgets\getInfo)
Структура проекта
- \app\amoCRM\amo - здесь бэк авторизации в amoCRM и пара страниц запросов
- \app\amoCRM\dadata - здесь бэк для работы с DaData через сервер и свежие библиотеки js и css для JS плагина DaData
- \app\amoCRM\widgets\addLead - здесь страница виджета добавить сделку
- \app\amoCRM\widgets\getInfo - здесь страница не виджета (не стал делать отдельно, в рамках той-же интеграции) посмотреть структуру данных через API
- \app\framework\ - здесь фреймворк Uikit.3 для формы виджета(ов)
*в интеграции используется OAUTH 2.0 (ограниченный набор функций) нет возможностей как в JS-виджет (приватная интеграция, где вы отписываетесь от техподдержки amoCRM) привязываться к интерфейсам сущностей (свои выпадающие списки и т.д.) проект просто собран из разных примеров код не оптимизировал (время мало - демка кончается)
Список литературы
- amoCRM интеграция
https://habr.com/ru/post/650019/
https://prog-time.ru/kak-peredat-dannye-iz-formy-v-amocrm-s-pomoshhyu-api/
https://github.com/andrey-tech/amocrm-api-php - dadata интеграция
https://dadata.ru/api/find-party/ - исходник
https://gist.github.com/nalgeon/79a7609bf24bc0e833699f7eca125e86 - dadata пример реализации через плагин
https://tokmakov.msk.ru/blog/item/177
https://codepen.io/dadata/pen/QWxOEK - dadata документация
https://confluence.hflabs.ru/pages/viewpage.action?pageId=204669121 - свежий плагин
https://github.com/hflabs/suggestions-jquery/tree/master/dist - документация amoCRM
https://www.amocrm.ru/developers/content/integrations/intro
https://asuikit.com/v3/utility-javascript.ajax/ajax
добавлено:
- \app\amoCRM\widgets\addLeadToPipeline - здесь страница виджета добавить сделку в существующую воронку пользователем по умолчанию
итого:
- одна внешняя интеграция
- три веб морды виджета (addLead (здесь по умолчанию), addLeadToPipeline, getInfo) на выбор
- один раз авторизуемся auth.php, далее работаем через любую форму в браузере или добавляем виджет на рабочий стол amoCRM и работаем оттуда
ps
продолжения не будет!!!, нас переориентировали на Битрикс 24 (тоже самое вид сбоку)