carandclassic / talkjs
TalkJS API 的 PHP 客户端
Requires
- php: >=7.4
- ext-json: *
- symfony/http-client: ^4.4|^5.2|^6.0
Requires (Dev)
- phpunit/phpunit: ^9.5.4
This package is auto-updated.
Last update: 2024-09-23 09:54:47 UTC
README
从 shapintv/talkjs 分支 fork。
有关参数、自定义数据以及您可以与此 API 一起发送的其他信息的更多信息,请参阅 TalkJS REST API 文档。
此包的结构是根据 TalkJS REST API 结构精心设计的,因此以下所有内容都被视为独立的 API
- 用户
- 对话
- 消息
目前未实现
- 通知
- 发送文件消息
安装
通过 Composer
$ composer require carandclassic/talkjs
用法
这可以直接使用,或者与 Laravel 中的自动发现一起使用。
创建 TalkJSClient
use CarAndClassic\TalkJS\TalkJSClient; $appId = 'my_app_id'; $secretKey = 'my_secret_key'; $talkJSClient = new TalkJSClient($appId, $secretKey);
Laravel
首先,将 TALKJS_APP_ID
和 TALKJS_SECRET_KEY
添加到您的 env 文件中。这些将自动从包的配置中提取 talkjs.app_id
和 talkjs.secret_key
。
如果您想更改此设置,可以发布应用程序配置并修改应用程序中的 talkjs.php
配置文件
php artisan vendor:publish --provider=CarAndClassic\\TalkJS\\Providers\\TalkJSServiceProvider
Laravel 的自动服务发现将允许您按常规依赖注入 TalkJSClient
。或者,对于一次性使用,您也可以使用 app()->make()
通过传递覆盖 appId
和 secretKey
参数来实现
$talkJSClient = app()->make(TalkJSClient::class, ['appId' => 'my_custom_app_id', 'secretKey' => 'my_custom_secret_key']);
输入数据与 API 数据
下面您将看到“输入数据”和“API数据”被引用。
- 输入数据 = 通过此包发送的数据
- API数据 = 从 API 返回的数据
这样做的原因是,目前 TalkJS 对于成功的资源更新/创建返回空的 200 响应,但返回您发送的内容仍然很有帮助。
ID
用户和对话的 TalkJS ID 是自定义的,并由您的应用程序管理。
过滤
所有获取多个记录(用户、对话、消息)的端点都有限制和分页选项。以下 API 使用中尽可能使用 $filters
变量进行演示,其外观如下
$filters = [ 'limit' => 50, 'startingAfter' => 'latestMessageId' ];
创建 TalkJSClient
$appId = 'YOUR_APP_ID'; $secretKey = 'YOUR_SECRET_KEY'; $talkJSClient = new TalkJSClient($appId, $secretKey);
用户
请注意,TalkJS 目前不提供用户删除 API,而是 建议 您使用更新/编辑端点来匿名化个人信息。
- 创建或更新用户,返回包含输入数据的
UserCreated
类
$talkJSClient->users->createOrUpdate('my_custom_id', [ "name" => "Alice", "email" => ["alice@example.com"], "welcomeMessage" => "Welcome!", "photoUrl" => "https =>//demo.talkjs.com/img/alice.jpg", "role" => "buyer", "phone" => ["+1123456789"], "custom" => [ "foo" => "bar" ] ]);
- 检索用户,返回包含 API 数据的
User
模型类
$talkJSClient->users->find('my_user_id');
- 获取所有用户,返回包含 API 数据的
User
模型类的数组
$talkJSClient->users->find($filters);
- 获取用户的对话,返回包含 API 数据的
Conversation
模型类的数组
$talkJSClient->users->getConversations('my_user_id');
对话
- 创建或更新对话,返回包含输入数据的
ConversationCreatedOrUpdated
事件类
$talkJSClient->conversations->createOrUpdate('my_conversation_id', [ 'subject' => 'My new conversation', 'participants' => ['my_user_id_1', 'my_user_id_2'], 'welcomeMessages' => ['Welcome!'], 'custom' => ['test' => 'test'], 'photoUrl' => null ]);
- 检索对话,返回包含 API 数据的
Conversation
模型类
$talkJSClient->conversations->get('my_conversation_id');
- 查找对话,返回包含 API 数据的
Conversation
模型类的数组
$talkJSClient->conversations->find();
- 加入对话,返回包含输入数据的
ConversationJoined
事件类
$talkJSClient->conversations->join('my_conversation_id', 'my_user_id');
- 离开对话,返回包含输入数据的
ConversationLeft
事件类
$talkJSClient->conversations->leave('my_conversation_id', 'my_user_id');
- 删除对话,返回包含输入数据的
ConversationLeft
事件类
$talkJSClient->conversations->delete('my_conversation_id');
- 更新参与设置(通知和读写访问)
$notify = true; // Boolean, default true $access = 'ReadWrite'; // ReadWrite or Read, default ReadWrite $talkJSClient->conversations->updateParticipation('my_conversation_id', 'my_user_id', $notify, $access);
消息
有关自定义数据和过滤器的更多信息,请参阅上述链接的 TalkJS 文档。
请注意
- 发送文件附件尚未实现。
- 返回多个消息的端点将以降序返回消息,即最新的消息首先返回。
$custom = [ 'foo' => 'bar' ];
- 获取对话中的消息,返回一个包含API数据的
Message
模型类的数组
$talkJSClient->messages->get('my_conversation_id', $filters);
- 在对话中查找特定消息
$talkJSClient->messages->find('my_conversation_id', 'message_id');
- 发布系统消息,返回一个包含输入数据和
type
为SystemMessage
的MessageCreated
事件类
$talkJSClient->messages->postSystemMessage('my_conversation_id', $text, $custom);
- 发布用户消息,返回一个包含输入数据和
type
为UserMessage
的MessageCreated
事件类
$talkJSClient->messages->postUserMessage('my_conversation_id', $username, $text, $custom);
- 编辑消息,返回一个包含输入数据的
MessageEdited
事件类
$talkJSClient->messages->edit('my_conversation_id', 'message_id', $text, $custom);
- 删除消息,返回一个没有任何数据的
MessageDeleted
事件类
$talkJSClient->messages->delete('my_conversation_id', 'message_id');
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。