chezrd/jivochat-webhooks-api

用于Jivochat(Jivosite)Webhooks API集成的库。

2.1.8 2023-05-16 22:49 UTC

This package is auto-updated.

Last update: 2024-09-19 20:12:08 UTC


README

Latest Stable Version License

用于 Jivochat (Jivosite) Webhooks API集成的库。

此库允许您与Jivosite Webhooks API集成,

  • 并以事件驱动方式处理API调用;
  • 将特定事件的API请求JSON数据转换为事件对象;
  • 生成API响应;
  • 将原始请求(和生成的响应)数据保存到MySQL或MongoDB服务器,并通过Monolog进行记录。

有关俄语文档,请参阅 README-ru.md

要求

此库需要PHP 7.0或更高版本进行基本使用。

可选要求

  • PDO扩展 允许将Webhooks请求/响应数据记录到MySQL服务器;
  • Monolog库 允许使用Monolog记录Webhooks请求/响应;
  • MongoDB库 允许将Webhooks请求/响应数据记录到MongoDB服务器。

强烈建议安装上述至少一个记录器,以保留通过Webhooks API发送的原始请求的“备份”。

安装

安装此库的首选方式是通过 Composer。要安装最新版本,运行

composer require chezrd/jivochat-webhooks-api

基本用法

<?php

use ChezRD\Jivochat\Webhooks\Log\MySQLLog;
use ChezRD\Jivochat\Webhooks\Event;
use ChezRD\Jivochat\Webhooks\EventListener;
use ChezRD\Jivochat\Webhooks\Model\EventRequest\ChatAcceptedRequest;
use ChezRD\Jivochat\Webhooks\Model\EventRequest\ChatFinishedRequest;
use ChezRD\Jivochat\Webhooks\Response;
use ChezRD\Jivochat\Webhooks\Response\SuccessResponse;
use ChezRD\Jivochat\Webhooks\Response\UpdateResponse;

// create MySQL logger
$dbLogger = new MySQLLog(new PDO('mysql:dbname=test;host=127.0.0.1', 'root', 'root'));

// create Callback API event listener
$listener = new EventListener([$dbLogger]);

// bind listener for `chat_accepted` event
$listener->on(Event::EVENT_CHAT_ACCEPTED, function (ChatAcceptedRequest $request): Response {
    // here you do your stuff - find user in your database, etc
    $user = User::getByEmail($request->visitor->email);
    
    // generate response on Callback API
    $response = new UpdateResponse();
    $response->setCRMLink(...);
    $response->setContactInfo(...);
    $response->setCustomData(...);
    
    // event handler must return Response object
    return $response;
});

// bind listener for `chat_accepted` event
$listener->on(Event::EVENT_CHAT_FINISHED, function (ChatFinishedRequest $request): Response {
    /** @var int Timestamp of the chat's first message. */
    $chatBeginAt = $request->chat->messages[0]->timestamp;
    // ...
    
    return new SuccessResponse();
});

// execute event listener
$listener->listen();

文档

许可协议

此库受MIT许可证的许可 - 有关详细信息,请参阅 LICENSE 文件。

致谢

感谢2017年的原始库作者Oleg Fedorov (Olegf13),以及此Jivosite Webhook处理器库。