x3group-dev/calltouch

1.0.1 2024-08-13 08:41 UTC

This package is auto-updated.

Last update: 2025-03-13 10:00:50 UTC


README

Ссылка на сервис

Установка

composer require x3group-dev/calltouch

Отслеживание UTM-меток

Для корректной интеграции с CallTouch необходимо подключить сбор UTM-меток посетителя
use X3Group\CallTouch\Conversion\Utm;

Utm::search();

Отслеживание активных аккаунтов

В любой части сайта необходимо разместить js скрипт поиска активных кабинетов CallTouch
use X3Group\CallTouch\Helpers\RenderHelper;

RenderHelper::showTrackingParameters();

Карта соответствия свойств

Точка взаимодействия с CallTouch является общей, для всех методов. Необходимо построить карту соответствий, которая привязывает ключи значений запроса с внутренними механизма обработки. Допускается множественное указание, если более 1 ключа совпало, то произойдет выбор случайного значения.
use X3Group\CallTouch\Container\FieldMap;

$map = new FieldMap();
$map->setPhone(['USER_PHONE']);
$map->setCallUrl(['NOW_PAGE']);

Создание отчета

Предоставляется возможность указания произвольных механизмов формирования отчета о результате взаимодействия с CallTouch. Отчет отправляется вне зависимости от результата работы.

Генератор отчета должен реализовывать интерфейс X3Group\CallTouch\Reporters\ReportedInterface

Пример собственного генератора отчета

use Throwable;

use X3Group\CallTouch\Result\ResultInterface;
use X3Group\CallTouch\Helpers\ExceptionHelper;
use X3Group\CallTouch\Reporters\ReportedInterface;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\RequestInterface;

class EmailReporter implements ReportedInterface
{    
    private ?ResponseInterface $response = null;
    private ?RequestInterface $request = null;
    private ?ResultInterface $result = null;
    
    public function report(): void
    {
        if (null === $this->response) {
            return;
        }
    
        $responseBody = $this->response->getBody();
        $responseBody->rewind();
        
        $message = $responseBody->getContents() ?: 'Unknown error';
    
        mail('test@mail.ru', 'Subject', $message);
    }
    
    public function setResponse(ResponseInterface $response): self
    {
        $this->response = $response;
        return $this;
    }
    
    public function setRequest(RequestInterface $request): self
    {
        $this->request = $request;
        return $this;
    }
    
    public function setResultValidate(ResultInterface $result): self
    {
        $this->result = $result;
        return $this; 
    }
}

Инициализация и отправка запроса

Для создания метода отправки заявок в CallTouch рекомендуется пользоваться сборщиком.

Необходимо указать токен доступа - благодаря которому происходит защищенное общение с API. Вторым параметром указываем какой метод отправки заявки нам необходим.

use X3Group\CallTouch\MethodsEnum;
use X3Group\CallTouch\Builder\MethodBuilder;

$token = 'your access token...';

$builder = new MethodBuilder($token, MethodsEnum::CallBack);
$callTouch = $builder->make();

Пример отправки заявки на обратный звонок

use X3Group\CallTouch\Builder\CallbackBuilder;

$routeKey = "myKey";
$token = 'your access token...';

$formData = [
    'USER_PHONE' => '79099999999',
    'NAME' => "Игорь",
    'EMAIL' => "test@mail.ru",
    'NOW_PAGE' => 'http://test.ru',
];

$builder = new CallbackBuilder($token);
$builder->getFieldMap()
    ->setPhone(['USER_PHONE', 'PERSONAL_PHONE'])
    ->setCallUrl(['NOW_PAGE'])
    ->setFields([
        'NAME',
        'EMAIL',
        'NOW_PAGE'
    ]);

$builder->setRouteKey($routeKey)
    ->addReporter(new EmailReporter)
    ->make()
    ->send($formData);

Если мы имеем несколько кабинетов CallTouch, то необходимо в явном виде передать желаемый кабинет. Если будет указан несуществующий кабинет, то произойдет отправка заявки без указания сессии.

$callTouch->setModelID('your model_id ...');