Laravel Messenger
Prerequisites
- PHP
^7.4 | ^8.0 | ^8.1
- Laravel
^8.42
- Route model binding enabled in your API / WEB middleware groups.
Features
- Realtime messaging between multiple models.
- RESTful API, allowing you to create your own UI or connect to your mobile app.
- Private and group threads.
- Message reactions, replies, edits, and deletion.
- Send image, document, audio, and video messages.
- Group thread chat-bots. Ready-made bots
- Customize and create your own chat-bot handlers and bot packages. See the Chat Bots documentation.
- Add participants in a group thread from your friends list.
- Permissions per participant within a group thread.
- Friends, Search, and Online status systems.
- Private thread approval when the two participants are not friends.
- Provider avatars, group thread avatars, and bot avatars.
- Underlying calling system you can extend. See the Calling documentation.
- Group thread invitation links (like discord).
- All endpoints are protected behind policies.
- Scheduled commands for automated cleanup and checks.
- Queued jobs fired from our event subscribers.
- Most features can be toggled at runtime using our
Messenger
facade. MessengerComposer
facade allows you to have easy access to the core actions anywhere within your own app, such as sending messages, images, reactions, and more.- You can implement or extend your own
BroadcastDriver
,VideoDriver
, andFriendDriver
, simply by binding your classes into the container. - Support for morph maps on your provider models. See: Morph Maps
- Optional extra payload when sending messages to allow custom json to be stored with the message.
- Owner relationships returns a
Ghost Profile
when not found (null-object pattern). - Private threads auto-lock when the recipient is not found / deleted.
Upcoming for v2
- Temporary Ephemeral conversations.
- Improved API pagination / filters.
- Condense attachment routes.
- Possible extraction of friends system.
- Improved image manipulation / saving of multiple sizes.
- Encryption of messages (E2E is the long term goal).
- Translations for internal messages.
- Pinned messages.
- Chat-bots able to trigger off of an event.
Notes
- This is a
Laravel
package and must be installed in alaravel
application to run. - Read through the
messenger.php
config file before migrating! - This is a pure backend driven package providing an API to interact with, thus no web UI or websocket implementation will be setup for you.
- Calling is disabled by default. You are responsible for implementing your own media server or connecting to a 3rd party provider.
- Configure your laravel applications broadcast driver and set up your websocket implementation to utilize the real-time broadcast emitted.
Installation
Composer
composer require rtippin/messenger
To complete the setup, please refer to the installation documentation listed below:
Documentation
-
Install / Registering Providers
-
Configuration
-
Commands
-
Broadcasting
-
Events
-
Chat Bots
-
Calling
-
Messenger Composer
-
Helpers / Facades
-
API Explorer
Addons / Demo
- Messenger Bots - Pre-made bots you can register within this package.
- Messenger Faker - Adds commands useful in development environments to mock/seed realtime events and messages.
- Messenger Web UI - Ready-made web routes and publishable views / assets, including default images.
- Demo App - A demo laravel app with this core package installed, including a Live Demo.
Richard Tippin
Credits -LICENSE
CHANGELOG
Security
If you discover any security related issues, please email author instead of using the issue tracker.