emincmg/convo-lite

为 Laravel 项目提供的轻量级会话包,便于实现流畅的聊天体验。

dev-master 2024-07-30 11:29 UTC

This package is auto-updated.

Last update: 2024-09-30 11:52:17 UTC


README

Convo Lite 是一个允许您在 Laravel 应用程序中轻松创建和管理聊天室的工具包。此工具包使您的用户能够相互交流。

安装

您可以使用 composer 将 Convo Lite 包含到项目中

composer require emincmg/convo-lite

配置

运行以下命令发布工具包的可发布文件

php artisan vendor:publish --provider="Emincmg\ConvoLite\Providers\ConversationServiceProvider"

这将把迁移文件发布到您的应用程序的 database/migrations 文件夹,并配置文件发布到您的应用程序的 config 文件夹。

更改默认模型

您可以通过 config/convo_lite.php 来更改创建会话时使用的默认模型

'user_model' => config('auth.providers.users.model','App\\Models\\User.php'),

默认情况下为您的应用程序的默认模型,因此您可以更改它,或者如果您只为这个包更改,则更改此字段。

迁移

运行迁移以创建必要的数据库表

php artisan migrate

用法

要开始使用 Convo Lite,您可以在项目中添加一些基本的路由和控制器方法来管理会话和消息。以下是一个示例用法

创建会话

接收者可以是整数或数组(如果多个)。如果提供了多个接收者,会话将在他们之间创建。

$senderId= 1;
$receiverIds = [2,3];

Convo::createConversation($senderId,$receiverIds);

这将返回刚刚创建的会话;

[
    {
        "title": null,
        "updated_at": "2024-06-06T14:18:50.000000Z",
        "created_at": "2024-06-06T14:18:50.000000Z",
        "id": 1
    }
]

要为会话设置标题,您可以这样做;

$conversation = Convo::getConversationById(1);
$conversation->setTitle('Test Title');

或者直接创建包含标题的会话。

 Convo::createConversation($senderId,$receiverIds,'Test Title');

两者将返回相同的结果;

[
    {
        "title": "Test Title",
        "updated_at": "2024-06-06T14:18:50.000000Z",
        "created_at": "2024-06-06T14:18:50.000000Z",
        "id": 1
    }
]

如果提供了多个接收者,则响应将为创建的会话的集合。

获取会话

通过 ID 获取

$conversation = Convo::getConversationById(1);

通过标题获取

$conversation = Convo::getConversationByTitle('Title')

添加参与者

您可以通过以下方式将参与者附加到现有的会话中;

$conversation = Convo::getConversationById(1);
$userId = 1;

Convo::addParticipators($conversation, $userIds)

或者您可以直接发送会话的 ID;

$conversationId = 1;
$userId = 1;

Convo::addParticipators($conversationId, $userId)

您也可以添加多个参与者;

$conversationId = 1;
$userIds = [1,2,3,4];

Convo::addParticipators($conversationId, $userIds)

发送消息

通过外观(文件是可选的)发送消息;

$conversationId = 1;
$message = Convo::sendMessage($conversationId,$user,'hello',$request->files());

或者您可以直接传递会话实例。

$conversation = Convo::getConversationById(1);
$message = Convo::sendMessage($conversation,$user,'hello',$request->files());

获取消息

通过会话模型获取

$conversation = Convo::getConversationById(1);
$messages = Convo::getMessagesByConversation($conversation);

或者您可以直接通过会话实例访问其消息;

$conversation = Convo::getConversationById(1);
$conversation->messages;

许可

Convo Lite 是开源软件,根据 MIT 许可证 许可。