jawabapp/chat-sdk

此包的最新版本(v1.0.15)没有可用的许可信息。

Jawab Chat Composer SDK 包

v1.0.15 2021-03-10 14:11 UTC

This package is auto-updated.

Last update: 2024-09-12 16:13:38 UTC


README

JawabChat 是一款聊天应用,您可以轻松将其集成到您的服务中,为您的结构添加聊天功能。这个库将帮助您轻松集成聊天功能。

安装

您可以直接使用 composer 将此库安装到您的应用程序中

composer require jawabapp/chat-sdk

您的责任

在将 JawabChat 应用程序作为服务使用之前,您的服务需要提供一些功能。

服务令牌

我们期望一个作为字符串的服务令牌,以便能够访问您的服务。我们将通过“Accept-Token”字段将此令牌发送到您的端点。

用户 API

我们需要一个用户 API 来获取您的用户信息。我们将使用此用户与您的客户进行聊天。您的用户电话将是服务的主要键。您应该发送一个唯一的用户电话号码。您需要创建一个 API 端点,该端点使用您已提供的服务令牌。

我们将发送如下请求来获取用户信息

$response = $client->request(
    'POST',
    '----user-enpoint----',                     // You need to provide us an user endpoint
    [
        'headers' => [
            'Accept-Token' => '--service-token--',
            'Accept-Language' => 'en'           // We get this language from topics
        ],
        'form_params' => [
            'topic_id' => 1                     // should be integer
        ]
    ]
);

此 API 的响应应该是 JSON 格式,结构如下

{
    "user_id": integer,
    "user_name": string,
    "user_phone": string,
    "user_avatar": url
}

主题列表 API

我们需要一个主题端点来处理聊天的主题。当为您创建聊天时,我们将发送请求来获取主题。

$response = $client->request(
    'GET',
    '--- topic-endpoint ---',               // You need to give us a user endpoint
    [
        'headers' => [
            'Accept-Token' => '-- service-token --',
            'Accept-Language' => 'en'       // We will use this for the application language. You need to translate topics' name according to language.
        ]
    ]
);

此端点应返回 JSON 响应,结构如下

{
    "items": [
        {
            "id": integer,
            "title": string,
            "avatar" => url-as-string,
            "description" => string
        },
        ...
    ]
}

SDK 功能

发送通道

您可以向用户发送消息。

\ChatSDK\Facades\Config::make(array(
    'app_token' => 'token.token.token.token',
));

\ChatSDK\Channels\SendChannel::send(
    1,                  // $sender_id => Your message sender id
    'topic/1',          // $topic => Your group id which is coming after creating a UserChannel
    'text',             // $content_type => This can be text, image, etc
    'content'           // $content => Content of the messages as string
);

接收通道

您可以在 JawabChat 上接收用户的响应。为此,您只需要一个令牌。

\ChatSDK\Facades\Config::make(array(
    'app_token' => 'token.token.token.token',
));

\ChatSDK\Channels\ReceiveChannel::receive(function($message, $sender) {
    echo json_encode($message);
    echo json_encode($sender);
},true);

响应消息结构

  • 主题字符串
  • 消息 ID 字符串
  • 内容类型 [图像,文本]
  • 内容 URL(字符串)

响应发送者结构

  • 电话字符串
  • 昵称字符串

此功能将永久有效。也许您需要将此功能作为一项服务。

管理员

http://supervisord.org/index.html

sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install supervisor

添加程序

Supervisor 程序的配置文件位于 /etc/supervisor/conf.d 目录中,通常每个文件一个程序,扩展名为 .conf。我们的脚本配置文件,保存于 /etc/supervisor/conf.d/chat_receiver.conf,将如下所示

[program:chat_receiver]
command=php tests/receive.php
autostart=true
autorestart=true
user=root
numprocs=1
stderr_logfile=/var/log/chat_receiver.err.log
stdout_logfile=/var/log/chat_receiver.out.log

一旦我们的配置文件创建并保存,我们可以通过 supervisorctl 命令通知 Supervisor 我们的新程序。首先,我们告诉 Supervisor 在 /etc/supervisor/conf.d 目录中查找任何新的或更改的程序配置

supervisorctl reread

然后告诉它执行任何更改

supervisorctl update

每次您更改任何程序配置文件时,运行这两个命令都会使更改生效。

管理程序

一旦我们的程序运行,我们肯定会想要停止、重新启动或查看它们的状态。我们最初使用的 supervisorctl 程序还具有一个交互模式,我们可以通过该模式发出命令来控制我们的程序。

要进入交互模式,不带任何参数启动 supervisorctl

$ supervisorctl
chat_receiver                      RUNNING    pid 12614, uptime 1:49:37
supervisor>

启动时,supervisorctl 将首先打印所有程序的状态和运行时间,然后显示一个命令提示符。输入 help 将显示我们可以使用的所有可用命令

supervisor> help

default commands (type help ):
=====================================
add    clear  fg        open  quit    remove  restart   start   stop  update
avail  exit   maintail  pid   reload  reread  shutdown  status  tail  version

以简单的方式开始,我们可以通过在程序名称后跟相应的命令来启动、停止和重启程序

supervisor> stop chat_receiver
chat_receiver: stopped
supervisor> start chat_receiver
chat_receiver: started
supervisor> restart chat_receiver
chat_receiver: stopped
chat_receiver: started

使用状态,我们可以查看在做出任何更改后每个程序当前的执行状态

supervisor> status
chat_receiver                      STOPPED    Jul 21 01:07 AM

最后,一旦我们完成,我们可以使用Ctrl-C退出supervisorctl或通过在提示符中输入quit来退出

supervisor> quit

这就完成了!您已经掌握了通过Supervisor管理持久程序的基本方法。将此扩展到您自己的程序应该是一个相对简单的任务。如果您有任何问题或需要进一步的建议,请务必在评论部分留言。

致谢