Widget Public
Endpoints publics pour le flux d'entrée du client dans l'appel vidéo. Ces endpoints ne nécessitent pas d'authentification JWT et sont accessibles par le client final.
Rate Limiting
Les endpoints publics sont limités à 30 requêtes par minute par IP.
Endpoints
| Méthode | Endpoint | Description |
|---|---|---|
GET | /api/v1/call/:token/validate | Valider un lien d'accès |
POST | /api/v1/call/:token/join | Rejoindre la file d'attente |
GET | /api/v1/call/status/:call_id | Vérifier le statut de l'appel |
POST | /api/v1/call/evaluate/:call_id | Évaluer l'appel |
GET | /api/v1/call/turn-credentials | Obtenir les identifiants TURN |
Valider un Lien d'Accès
Vérifie si un lien d'accès est valide et retourne les informations du département.
GET /api/v1/call/:token/validatePath Parameters
| Paramètre | Type | Description |
|---|---|---|
token | string | Token du lien d'accès |
Exemple de Requête
curl -X GET https://voki.avanter.com.br/api/v1/call/abc123def456/validateRéponse de Succès (200)
{
"data": {
"valid": true,
"department_name": "Suporte Técnico",
"company_name": "Avanter Aliado Tecnológico Ltda",
"company_logo_url": null,
"primary_color": "#6366f1",
"queue_size": 2,
"estimated_wait_time": 30,
"online_agents": 3
}
}Lien Invalide/Expiré (404)
{
"errors": {
"detail": "Lien d'accès invalide ou expiré"
}
}Rejoindre la File d'Attente
Le client rejoint la file d'attente du département.
POST /api/v1/call/:token/joinRequest Body
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name | string | Oui | Nom du client |
email | string | Non | Email du client |
phone | string | Non | Téléphone du client |
reason | string | Non | Motif de l'appel |
Exemple de Requête
curl -X POST https://voki.avanter.com.br/api/v1/call/abc123def456/join \
-H "Content-Type: application/json" \
-d '{
"name": "Carlos Ferreira",
"email": "carlos@email.com",
"reason": "Support pour la configuration"
}'Réponse de Succès (200)
{
"data": {
"call_id": "1a2b3c4d-5e6f-7890-abcd-ef1234567890",
"status": "queued",
"position": 3,
"estimated_wait_time": 45,
"websocket_token": "temp_ws_token_for_customer...",
"websocket_url": "wss://voki.avanter.com.br/socket/websocket"
}
}Flux du Client
Après avoir rejoint la file d'attente, le client doit se connecter via WebSocket en utilisant le websocket_token pour recevoir des mises à jour en temps réel sur sa position dans la file et le moment où l'appel sera initié.
Statut de l'Appel
Vérifie le statut actuel d'un appel (alternative par polling au WebSocket).
GET /api/v1/call/status/:call_idExemple de Requête
curl -X GET https://voki.avanter.com.br/api/v1/call/status/1a2b3c4d-5e6f-7890-abcd-ef1234567890Réponse de Succès (200)
{
"data": {
"call_id": "1a2b3c4d-5e6f-7890-abcd-ef1234567890",
"status": "queued",
"position": 2,
"estimated_wait_time": 30
}
}Évaluer l'Appel
Permet au client d'évaluer l'appel après sa conclusion.
POST /api/v1/call/evaluate/:call_idRequest Body
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
rating | integer | Oui | Note de 1 à 5 |
comment | string | Non | Commentaire optionnel |
Exemple de Requête
curl -X POST https://voki.avanter.com.br/api/v1/call/evaluate/1a2b3c4d-5e6f-7890-abcd-ef1234567890 \
-H "Content-Type: application/json" \
-d '{
"rating": 5,
"comment": "Service excellent ! Problème résolu rapidement."
}'Réponse de Succès (200)
{
"data": {
"message": "Évaluation enregistrée avec succès"
}
}Identifiants TURN (public)
Obtient les identifiants TURN pour que le client puisse établir une connexion WebRTC.
GET /api/v1/call/turn-credentialsExemple de Requête
curl -X GET https://voki.avanter.com.br/api/v1/call/turn-credentialsRéponse de Succès (200)
{
"data": {
"urls": [
"turn:voki.avanter.com.br:3478?transport=udp",
"turn:voki.avanter.com.br:3478?transport=tcp"
],
"username": "1708300800:anonymous",
"credential": "abcdef1234567890",
"ttl": 86400
}
}