Aller au contenu principal

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

ChampTypeRequisDescription
sender_idintOuiID de l'expéditeur
receiver_idintOuiID du destinataire
contentstringOuiContenu du message
attachmentfileNonFichier 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

ChannelDescription
private-user.{id}Messages privés
presence-chatPrésence en ligne

Événements

ÉvénementPayload
.messageNouveau message
.notificationNotification
.typingIndicateur 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);
});