Messagerie
Liste des conversations
GET /chats/conversation_summaries
Authorization: Bearer <token>
Réponse
{
"success": true,
"data": [
{
"user_id": 25,
"user_name": "John Doe",
"phone": "+33612345678",
"last_message": "Bonjour, à quelle heure...",
"timestamp": "2024-06-01T14:30:00Z",
"is_read": 0,
"sent_by_me": false,
"is_online": true,
"last_seen": null
}
]
}
Messages d'une conversation
GET /chats/messages/{other_user_id}
Authorization: Bearer <token>
Réponse
{
"success": true,
"data": [
{
"id": 1,
"sender_id": 25,
"receiver_id": 30,
"content": "Bonjour !",
"attachment": null,
"is_read": 1,
"is_sent_by_me": false,
"created_at": "2024-06-01T14:30:00Z"
}
]
}
Envoyer un message
POST /chats/send_messages
Authorization: Bearer <token>
Content-Type: multipart/form-data
Body
| Champ | Type | Requis | Description |
|---|---|---|---|
| sender_id | int | Oui | ID de l'expéditeur |
| receiver_id | int | Oui | ID du destinataire |
| content | string | Oui | Contenu du message |
| attachment | file | Non | Fichier joint |
Réponse
{
"success": true,
"data": {
"id": 123,
"sender_id": 30,
"receiver_id": 25,
"content": "Bonjour !",
"attachment": null,
"is_read": 0,
"created_at": "2024-06-01T15:00:00Z"
}
}
Marquer comme lu
POST /chats/mark-read/{message_id}
Authorization: Bearer <token>
WebSocket (Temps réel)
Authentification
POST /broadcasting/auth
Authorization: Bearer <token>
Body
{
"socket_id": "123.456",
"channel_name": "private-user.30"
}
Channels
| Channel | Description |
|---|---|
private-user.{id} | Messages privés |
presence-chat | Présence en ligne |
Événements
| Événement | Payload |
|---|---|
.message | Nouveau message |
.notification | Notification |
.typing | Indicateur de frappe |
Exemple de connexion (Laravel Echo)
import Echo from 'laravel-echo';
import Pusher from 'pusher-js';
const echo = new Echo({
broadcaster: 'reverb',
key: 'your-reverb-key',
wsHost: 'imobiznets-backend-test-yxxo2i-fecde5-136-112-175-192.traefik.me',
wsPort: 443,
forceTLS: true,
authEndpoint: 'http://imobiznets-backend-test-yxxo2i-fecde5-136-112-175-192.traefik.me/api/v1/broadcasting/auth',
auth: {
headers: {
Authorization: `Bearer ${token}`
}
}
});
// Écouter les messages
echo.private(`user.${userId}`)
.listen('.message', (data) => {
console.log('Nouveau message:', data);
});