Статья больше пример как подружить веб-системы, если в одной из них нет возможности построить запрос как удобно ELMA, нежели решение для production-среды. Вместо приведенного middleware-скрипта на PHP, можно использовать абсолютно любое решение на любом стеке.
Несмотря на имеющийся функционал Web-форм в ELMA365, по различным причинам, может появится необходимость отправлять данные из форм стороннего сайта. В данной статье приводится пример по отправке данных из форм с сайта на "движке" Wordpress.
Через админ-панель WordPress необходимо установить два плагина:
- Contact Form 7 (используется для генерации и работы с формами, довольно гибкий популярный плагин)
- WP Webhooks (этот плагин позволяет отправлять свои запросы по событиям из WordPress, в наличии преднастроенная интеграция с плагином выше)
Далее переходим в настройки WP Webhooks, вкладка Send Data. Выбираем в самом низу наш плагин для форм. Далее нажимаем кнопку Add Webhook URL. Указываем название хука и адрес до скрипта, который будет backend'ом для запросов с WordPress. После создания хука, нажимаем на меню и выбираем Settings:
Выполнить следующие настройки:
- Change the data request type - JSON
- Change the data request method - POST
- Don't send mail as usually - Включить (в этом случае письмо НЕ будет уходить на настроенный почтовый ящик, будет выполняться только сам хук)
- Trigger on selected forms - Выбрать непосредственно форму, которую будем отправлять этим конкретным хуком. Таким образом для каждой формы можно настроить свой хук.
- Cutomize your Payload - Выбрать Form ID и Form Submit Data
- Нажать Save Settings
Сам запрос, который будет отсылаться на наш backend-скрипт приобретает такой вид:
Код:
{
"form_id":6,
"form_submit_data": {
"your-name":"xxxxxxx",
"your-email":"mail@mail.com",
"your-subject":"xxxxxx",
"your-message":"xxxxx"
}
}
В form_id хранится идентификатор формы, который генерируется в плагине Contact Form 7. Исходя из этого номера мы сможем реализовывать различные запросы в сторону ELMA365 через один backend-скрипт. Каждый атрибут в form_submit_data соответствует полю из формы, синтаксис можно посмотреть в плагине Contact Form 7.
Далее, на хостинге (можно рядом с WordPress) разместим PHP скрипт (путь должен соответствовать адресу в хуке в плагине WP Webhooks) со следующим листингом:
PHP:
<?php
// Идентификатор площадки
define('_COMPANY', 'aeqlmfdghrewee');
// Неймспейс, где лежит приложение, которое будет получать запрос
define('_NAMESPACE', '_clients');
// Код приложения, которое будет получать запрос
define('_CODE', '_leads');
// Токен авторизации
define('_TOKEN', '2f3cf8e6-d375-4c90-a5c2-55090eda587d');
$inputData = file_get_contents('php://input');
if(!empty($inputData)) {
// После этого наш запрос превращается в массив и работаем с ним как с массивом
$form = json_decode($inpuDatat, 1);
$formID = $form['form_id'];
$data = $form['form_submit_data'];
//Данная конструкция как раз позволяет обрабатывать несколько форм в одном скрипте
switch ($formID) {
case '6':
$yourName = $data['your-name'];
$yourEmail = $data['your-email'];
$yourSubject = $data['your-subject'];
$yourMessage = $data['your-message'];
// В качестве примера склеиваем полученные данные и кладем в поле "__name"
$newString = $yourName.' '.$yourEmail.' '.$yourSubject.' '.$yourMessage;
$context = [
'__name' => $newString
];
break;
default:
die('form_id is undefined');
break;
}
$postOutput = [
'context' => $context
];
$postOutput = json_encode($postOutput);
$elmaUrl = 'https://'._COMPANY.'.elma365.ru/pub/v1/app/'._NAMESPACE.'/'._CODE.'/create';
$res = curl_init();
curl_setopt($res, CURLOPT_RETURNTRANSFER, true);
curl_setopt($res, CURLOPT_URL, $elmaUrl);
curl_setopt($res, CURLOPT_HTTPHEADER, ['X-Token: '._TOKEN, 'Content-Type: application/json']);
curl_setopt($res, CURLOPT_POST, true);
curl_setopt($res, CURLOPT_POSTFIELDS, $postOutput);
$response = curl_exec($res);
print_r($response);
}
?>
Всё готово, можно попробовать отправить данные из формы Wordpress и в результате создастся новая Сделка, в качестве имени сделки будет "склейка" из полей формы. При необходимости, backend-скрипт можно переписать под своё решение.