jawabapp / chat-sdk
Jawab Chat Composer SDK 包
Requires
- php: >=5.5.9
- ext-json: *
- bluerhinos/phpmqtt: @dev
- guzzlehttp/guzzle: *
Requires (Dev)
- symfony/dotenv: 5.x-dev
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管理持久程序的基本方法。将此扩展到您自己的程序应该是一个相对简单的任务。如果您有任何问题或需要进一步的建议,请务必在评论部分留言。