x3group-dev/calltouch

1.0.1 2024-08-13 08:41 UTC

This package is auto-updated.

Last update: 2024-09-13 08:55:18 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的所有方法都使用相同的交互点。需要构建一个对应图,将查询值的键与内部处理机制相关联。如果多个键匹配,则随机选择一个值。
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 ...');