Hook Formit. CallTouch + MODX
Всем привет!
Поступила задача на интеграцию форм с calltouch.ru/
На сайте есть информация Как подключить заявки с сайта к отслеживанию Calltouch
Мы же выберем решение в виде хука для Formit.
1. Переходим в раздел Передача данных через API, Webhooks в ЛК Calltouch и активируем пункт Передавать данные по API. Ниже указанные данные для интеграции. Пока не закрываем окно, нам понадобится информацияю
2. Создаем сниппет sendCallTouch и в него добавляем следующий код:
3. Сохраняем
4. Переходим к форме, которую будем интегрировать. В поле с указанием хуков добавляем наш новый хук:
5. Тестим
6. Профит
Поступила задача на интеграцию форм с calltouch.ru/
На сайте есть информация Как подключить заявки с сайта к отслеживанию Calltouch
Мы же выберем решение в виде хука для Formit.
2. Создаем сниппет sendCallTouch и в него добавляем следующий код:
<?php
$call_value = (int) $_COOKIE['_ct_session_id']; // ID сессии Calltouch, полученный из cookie
if (empty($call_value)) { return true; }
$ct_node_id = 99; // Вместо 99 подставляем номер Сервера
$ct_site_id = XXX; // Вместо XXX подставляем ID личного кабинета
$url = 'https://api-node' . $ct_node_id . '.calltouch.ru/calls-service/RestAPI/requests/' . $ct_site_id . '/register/';
$values = $hook->getValues();
// Тут указываем соответствие ключ - поле в форме
$fields = [
'fio' => $values['name'],
'comment' => $values['text'] ?: $values['package'],
'email' => $values['email'],
'phoneNumber' => $values['phone'],
'subject' => 'Заявка с сайта',
'sessionId' => $call_value,
];
// $modx->log(modX::LOG_LEVEL_ERROR, print_r($fields, 1));
try {
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_POST => 1,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => http_build_query($fields),
CURLOPT_HTTPHEADER => [
"Content-Type: application/x-www-form-urlencoded",
"charset: utf-8"
],
]);
$response = curl_exec($curl);
$modx->log(modX::LOG_LEVEL_INFO, $response);
} catch (Exception $e) {
$modx->log(modX::LOG_LEVEL_ERROR, $e);
}
return true;
3. Сохраняем
4. Переходим к форме, которую будем интегрировать. В поле с указанием хуков добавляем наш новый хук:
&hooks=`sendCallTouch,sendlead,FormItSaveForm,email`
5. Тестим
6. Профит
Поблагодарить автора
Отправить деньги
Комментарии: 6
Тот случай когда скрипт как скрипт, ничего необычного. Но все лайкнули пост, просто потому что Иван — красавчик!
?
Ну и ладно
возможно ваш код под ramex crm както почикать? или это только под CT?
в документации есть такое
и
в документации есть такое
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.crmramex.ru/treatment/create?token=8ec41300ba033a1eadb7008113c73f60734e08cefb7a993f68d2551f15715b93");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "lastname={lastname}&firstname={firstname}&phone={phone}&email={email}&comment={comment}&date_treatment={date_treatment}&address={address}&office_id={office_id}&source_id={source_id}");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: application/x-www-form-urlencoded"
));
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
и
<?php
/**
* Created by PhpStorm.
* User: ramex
* Date: 26.07.16
* Time: 14:11
*/
namespace common\components;
class RamexFormApi
{
protected $host = 'https://api.crmramex.ru';
protected $token;
public function __construct($token)
{
$this->token = $token;
}
/**
* Активные офисы дилера
*/
public function offices()
{
return $this->send('treatment/offices');
}
/**
* Источники обращения
*/
public function sources()
{
return $this->send('treatment/sources');
}
/**
* Добавляет обращение
* @param $params
* @return mixed
*/
public function create($params)
{
return $this->send('treatment/create', $params);
}
protected function send($method, $params = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $this->combineUrl($method));
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
if ($params !== null && is_array($params)) {
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
}
$result = curl_exec($curl);
curl_close($curl);
return json_decode($result);
}
/**
* @param $method
* @return string
*/
protected function combineUrl($method)
{
return "{$this->host}/{$method}?token={$this->token}";
}
}
Можно. Чего ж нельзя то. Иван написал универсальный пример. Чуть чуть доработать под схему вашей CRM и будет счастье
Подскажите пожалуйста где взять номер Сервера
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.