TalkJS API 的 PHP 客户端

v1.0.6 2024-04-23 09:04 UTC

This package is auto-updated.

Last update: 2024-09-23 09:54:47 UTC


README

Latest version Total downloads

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_IDTALKJS_SECRET_KEY 添加到您的 env 文件中。这些将自动从包的配置中提取 talkjs.app_idtalkjs.secret_key

如果您想更改此设置,可以发布应用程序配置并修改应用程序中的 talkjs.php 配置文件

php artisan vendor:publish --provider=CarAndClassic\\TalkJS\\Providers\\TalkJSServiceProvider

Laravel 的自动服务发现将允许您按常规依赖注入 TalkJSClient。或者,对于一次性使用,您也可以使用 app()->make() 通过传递覆盖 appIdsecretKey 参数来实现

$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');
  • 发布系统消息,返回一个包含输入数据和typeSystemMessageMessageCreated事件类
$talkJSClient->messages->postSystemMessage('my_conversation_id', $text, $custom);
  • 发布用户消息,返回一个包含输入数据和typeUserMessageMessageCreated事件类
$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)。请参阅许可文件以获取更多信息。