The Laravel Chat package simplifies one-to-one and group chat integration facilitates document sharing within chats, manages read and unread message counts, and supports document uploads to both local and AWS S3 storage
Before you get started, make sure you have the following prerequisites installed:
- PHP >= 8.1 (Support 8.2)
- Composer >= 2.0
- Laravel >= 8.1 (Supports L10 and L11)
- AWS API credentials (Optional)
- Pusher
- One-to-One Chat Integration
- Group Chat Integration
- Document Sharing within Chats
- Read and Unread Message Count Management
- Document Upload Support for Local Storage
- Document Upload Support for AWS S3 Storage
- Message body encryption and decryption
To install this package, use Composer:
composer require sevenspan/laravel-chat
To configure the package, publish the migration file with the following command:
php artisan vendor:publish --provider="SevenSpan\Chat\Providers\ChatServiceProvider"
This command will publish the configuration file chat.php to your project's config directories, respectively.
If you have cached configurations locally, clear the config cache using one of these commands:
php artisan optimize:clear
After publishing the migration and configuring, create the required tables for this package by running:
php artisan migrate
To configure message body encryption add these key on .env
file.
CHAT_ENCRYPT_MESSAGE=true #boolean
Once you have installed the package, you can start using its features in your Laravel application. Here's a brief overview of how to use some of the main features:
Use the list
method to get all channels.
use SevenSpan\Chat\Facades\Channel;
// $userId = 12; (Required)
// $perPage = 10; (Optional)
Channel::list($userId, $perPage);
Use the detail
method to get the detail of channel.
use SevenSpan\Chat\Facades\Channel;
// $userId = 12; (Required)
// $channelId = 10; (Required)
Channel::detail($userId, $channelId);
Use the create
method to create the new channel.
use SevenSpan\Chat\Facades\Channel;
// $userId = 12; (Required)
// $receiverId = 10; (Required)
// $channelName = "Goverment project" (Required)
Channel::create($userId, $receiverId, $channelName);
Use the update
method to update the channel details.
use SevenSpan\Chat\Facades\Channel;
// $userId = 12; (Required)
// $receiverId = 10; (Required)
// $channelName = "Goverment project" (Required)
Channel::update($userId, $receiverId, $channelName);
Use the delete
method to delete the channel.
use SevenSpan\Chat\Facades\Channel;
// $userId = 12; (Required)
// $channelId = 10; (Required)
Channel::delete($userId, $channelId);
Use the clearMessage
method to clear the chat history.
use SevenSpan\Chat\Facades\Channel;
// $userId = 1; (Required)
// $channelId = 1 (Required)
Channel::clearMessage($userId, $channelId);
Use the list
method to get all messages of the channel.
use SevenSpan\Chat\Facades\Message;
// $userId = 1; (Required)
// $channelId = 1 (Required)
// $perPage = 10; (Optional)
Message::list($userId, $channelId, $perPage);
Use the send
method to send a message.
use SevenSpan\Chat\Facades\Message;
// $userId = 1; (Required)
// $channelId = 1 (Required)
// $data = [
// 'body' => 'TEXT_MESSAGE',
// 'file' => Image Or Document
// ]; (Required)
Message::send($userId, $channelId, $data);
Note
In the $data param either body or file is required.
Use the getFiles
method to document of the channel.
use SevenSpan\Chat\Facades\Message;
// $userId = 1; (Required)
// $channelId = 1 (Required)
// $type = 'image' (Default: image)
// $perPage = 10; (Optional)
Message::getFiles($userId, $channelId, $type, $perPage);
Note
$type param supported value is image
or zip
.
Use the delete
method to delete the message.
use SevenSpan\Chat\Facades\Message;
// $userId = 1; (Required)
// $channelId = 1 (Required)
// $messageId = 10; (Required)
Message::delete($userId, $channelId, $messageId);
Use the read
method to read the message of a channel.
use SevenSpan\Chat\Facades\Message;
// $userId = 1; (Required)
// $channelId = 1 (Required)
// $messageId = 10; (Required)
Message::read($userId, $channelId, $messageId);
Note
The messages that have a lesser value than $messageId will be read automatically.
Use the list
method to get a list of users and also search for the name of the user.
use SevenSpan\Chat\Facades\User;
// $userId = 1; (Required)
// $name = "John Doe" (Optional)
// $perPage = 10; (Optional)
User::list($userId, $name, $perPage);
If you encounter any issues or would like to contribute to this package, we welcome contributions from the community to improve and enhance this package. If you'd like to contribute, please follow our contribution guidelines:
- Fork this repository.
- Clone the forked repository to your local machine.
- Create a new branch for your feature or bug fix: git checkout -b feature/your-feature-name
- Make your changes and commit them: git commit -m 'Add new feature'
- Push your changes to your fork: git push origin feature/your-feature-name
- Create a pull request to the original repository.
This package is open-source software licensed under the MIT License. Feel free to use, modify, and distribute it according to the terms of the license.