Embedded chat widget for CodeIgniter 4
- Install with Composer:
> composer require tatter/chat - Update the database:
> php spark migrate --all - Publish asset files:
> php spark publish - Add Chat JS to your layout:
<script><?= view('Tatter\Chat\Views\javascript') ?></script> - Add a chat to any view:
<?= chat('my-first-chat') ?>
Chat allows developers to add a lightweight Bootstrap-style chat client to any page.
Install easily via Composer to take advantage of CodeIgniter 4's autoloading capabilities and always be up-to-date:
> composer require tatter/chatOr, install manually by downloading the source files and adding the directory to app/Config/Autoload.php.
Once the files are downloaded and included in the autoload, run any library migrations to ensure the database is setup correctly:
> php spark migrate --allChat has JavaScript code as well as asset dependencies that need to be included
with any view that has a conversation on it. Assets are managed by the
Tatter\Assets library; you can
publish all files with CodeIgniter's Publisher: spark publish. Be sure to configure
the Assets filter and apply it to routes (see docs).
Chat uses Tatter\Users to determine participants username and display name. You must
be sure to include a package that provides codeigniter4/authentication-implementation
(like Shield) or make your own (see Authentication
for framework requirements).
The easiest way to start a chat is with the helper. Load the helper file (helper('chat'))
and then use the chat($uid, $title) command wherever you would use a partial view:
<div id="main">
<h3>Yellow Widgets</h3>
<p>Main product info here!</p>
<aside>
<?= chat('product-7', 'Live Chat') ?>
</aside>
...The parameters to chat() are optional, and excluding them will load a one-time chat with
a random UID (e.g. for a one-time site visitor).
Conversations are stored and loaded from the database with the ConversationModel, and
most of the logic is handled by the Entities. For example, a Conversation entity can
$conversation->addUser($userId) to join or refresh a user and get back a Participant.
A Participant can $participant->say('hello world') to add a Message.