Widget Público
Endpoints públicos para o fluxo de entrada do cliente na chamada de vídeo. Estes endpoints não requerem autenticação JWT, sendo acessados pelo cliente final.
Rate Limiting
Endpoints públicos estão limitados a 30 requisições por minuto por IP.
Endpoints
| Método | Endpoint | Descrição |
|---|---|---|
GET | /api/v1/call/:token/validate | Validar link de acesso |
POST | /api/v1/call/:token/join | Entrar na fila de atendimento |
GET | /api/v1/call/status/:call_id | Verificar status da chamada |
POST | /api/v1/call/evaluate/:call_id | Avaliar a chamada |
GET | /api/v1/call/turn-credentials | Obter credenciais TURN |
Validar Link de Acesso
Verifica se um link de acesso é válido e retorna informações do departamento.
GET /api/v1/call/:token/validatePath Parameters
| Parâmetro | Tipo | Descrição |
|---|---|---|
token | string | Token do link de acesso |
Exemplo de Request
curl -X GET https://voki.avanter.com.br/api/v1/call/abc123def456/validateResposta de Sucesso (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
}
}Link Inválido/Expirado (404)
{
"errors": {
"detail": "Link de acesso inválido ou expirado"
}
}Entrar na Fila
Cliente entra na fila de atendimento do departamento.
POST /api/v1/call/:token/joinRequest Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome do cliente |
email | string | Não | Email do cliente |
phone | string | Não | Telefone do cliente |
reason | string | Não | Motivo da chamada |
Exemplo de Request
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": "Suporte com configuração"
}'Resposta de Sucesso (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"
}
}Fluxo do Cliente
Após entrar na fila, o cliente deve conectar via WebSocket usando o websocket_token para receber atualizações em tempo real sobre a posição na fila e quando a chamada for iniciada.
Status da Chamada
Verifica o status atual de uma chamada (polling alternativo ao WebSocket).
GET /api/v1/call/status/:call_idExemplo de Request
curl -X GET https://voki.avanter.com.br/api/v1/call/status/1a2b3c4d-5e6f-7890-abcd-ef1234567890Resposta de Sucesso (200)
{
"data": {
"call_id": "1a2b3c4d-5e6f-7890-abcd-ef1234567890",
"status": "queued",
"position": 2,
"estimated_wait_time": 30
}
}Avaliar Chamada
Permite ao cliente avaliar a chamada após sua conclusão.
POST /api/v1/call/evaluate/:call_idRequest Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
rating | integer | Sim | Nota de 1 a 5 |
comment | string | Não | Comentário opcional |
Exemplo de Request
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": "Atendimento excelente! Problema resolvido rapidamente."
}'Resposta de Sucesso (200)
{
"data": {
"message": "Avaliação registrada com sucesso"
}
}Credenciais TURN (público)
Obtém credenciais TURN para o cliente estabelecer conexão WebRTC.
GET /api/v1/call/turn-credentialsExemplo de Request
curl -X GET https://voki.avanter.com.br/api/v1/call/turn-credentialsResposta de Sucesso (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
}
}