📄Gerenciamento de Filas de Atendimento
📄 API Reference: Manage Queue (Gerenciamento de Filas de Atendimento)
Esta API permite a consulta, criação, atualização e exclusão de Filas de Atendimento (Queues) no sistema Voipper, incluindo o gerenciamento dos ramais (devices/membros) atrelados a cada fila.
🔐 Autenticação e Permissões
Todas as requisições requerem autenticação válida (via Token/Key na URL ou Header).
Regras de Hierarquia:
- Nível 4 (Assinantes): Têm acesso restrito apenas às filas da sua própria conta. O sistema ignora IDs de clientes de terceiros informados na URL ou no corpo da requisição.
- Nível 2 (Revendas): Podem interagir com filas dos clientes atrelados à sua hierarquia.
📍 Endpoints e Parâmetros de Rota
Diferente de outras APIs do sistema, o parâmetro principal na URL ({id}) refere-se ao ID do Cliente (Assinante), enquanto o ID da Fila específica deve ser passado como um parâmetro de query (?id_record=).
| Método | Endpoint | Descrição |
| GET | /api/manageQueue/{id_cliente}?id_record={id_fila} |
Lista todas as filas do cliente ou uma fila específica. |
| PUT | /api/manageQueue/{id_cliente} |
Cria uma nova Fila de Atendimento. |
| POST | /api/manageQueue/{id_cliente}?id_record={id_fila} |
Atualiza uma Fila de Atendimento existente. |
| DELETE | /api/manageQueue/{id_cliente}?id_record={id_fila} |
Exclui uma Fila de Atendimento. |
(Nota: Para Assinantes / Nível 4, o {id_cliente} na URL pode ser preenchido com 0, pois o sistema detectará automaticamente o ID da própria conta logada).
📥 1. Consultar Filas (GET)
Retorna a listagem de Filas de Atendimento e os detalhes dos ramais que são membros delas.
- Parâmetro de URL:
id_cliente(Obrigatório para Admin/Revenda. Opcional para Assinante). - Parâmetro de Query:
id_record(Opcional. Se não for enviado, listará todas as filas do cliente).
Exemplo de Retorno (Sucesso)
{
"error": 0,
"reason": "OK",
"records": 1,
"data": [
{
"id": 943,
"id_cliente": 119,
"descricao": "Atendimento Comercial",
"strategy": "ringall",
"musiconhold": "custom",
"announce": {
"id": 903,
"descricao": "Bem-vindo_Comercial"
},
"announce_frequency": 0,
"timeout": 3600,
"queue_type": 0,
"id_backup1": 919,
"status": 1,
"devices": [
{
"id_ramal": "920",
"ramal": "PJSIP/ramal1001",
"status_ramal": "1"
}
]
}
]
}
📤 2. Criar ou Atualizar Fila (PUT / POST)
O payload deve ser enviado em formato JSON.
- O método
PUTexige os dados mínimos para criação (comodescricao). - O método
POSTpermite a atualização parcial de campos isolados.
📋 Dicionário de Dados (Payload JSON)
Identificação e Estratégia
| Campo | Tipo | Obrigatório (PUT)? | Descrição |
id_cliente |
Inteiro | Sim (p/ Admin/Revenda) | ID do assinante dono da fila. |
descricao |
String | Sim | Nome da Fila (Ex: "Suporte N1"). |
strategy |
String | Não | Estratégia de distribuição. Valores suportados: ringall, leastrecent, fewestcalls, random, rrmemory. Padrão: random. |
queue_type |
Inteiro | Não | Tipo de membros: 1 (Ramais Locais) ou 2 (Agentes Dinâmicos). |
Áudios e Anúncios
| Campo | Tipo | Descrição |
musiconhold |
String | Música de espera da fila. Envie "custom" para usar a playlist do cliente ou "default" para a música do sistema. |
announce |
Objeto | Áudio de entrada da fila. Obrigatório o envio no formato de objeto com a chave id: {"id": ID_DO_AUDIO}. |
announce_frequency |
Inteiro | Frequência (em segundos) que a posição ou tempo será anunciada. |
announce_holdtime |
Inteiro | Anunciar o tempo estimado de espera? (0 = Não, 1 = Sim). |
announce_position |
Inteiro | Anunciar a posição do cliente na fila? (0 = Não, 1 = Sim). |
play_agent_audio |
Inteiro | ID de um áudio (Sussurro) tocado para o agente antes de conectar a chamada ao cliente. |
Tempos e Regras (Timers)
| Campo | Tipo | Descrição |
timeout |
Inteiro | Tempo máximo de espera na fila (em segundos) antes do transbordo. |
retry |
Inteiro | Tempo de pausa entre tentativas de chamar os ramais (em segundos). |
wrapuptime |
Inteiro | Tempo de "respiro" do agente após finalizar uma chamada (em segundos). |
reportholdtime |
Inteiro | O agente ouvirá o tempo que o cliente esperou? (0 ou 1). |
ringinuse |
Inteiro | Tocar para o ramal mesmo que ele já esteja em uso? (0 ou 1). |
Transbordo, Membros e Status
| Campo | Tipo | Descrição |
id_backup1 |
Inteiro | ID de outra Fila para usar como Transbordo (caso o cliente atinja o timeout sem atendimento). |
devices |
Array de Int | Lista de IDs dos ramais que fazem parte da fila. (Nota: no Update, a API substitui a lista inteira pelos IDs informados neste array). |
status |
Inteiro | Status da Fila (0 = Inativa, 1 = Ativa). Padrão: 1. |
Exemplo de Payload de Criação (PUT) ou Atualização (POST)
{
"descricao": "Atendimento Comercial",
"strategy": "ringall",
"musiconhold": "custom",
"announce": {
"id": 903
},
"timeout": 120,
"retry": 15,
"wrapuptime": 5,
"id_backup1": 919,
"devices": [920, 921, 925],
"status": 1
}
❌ 3. Excluir Fila (DELETE)
Remove permanentemente a Fila de Atendimento do sistema.
- Parâmetro de Rota (
{id}): ID do cliente (Obrigatório, use0se a API for chamada por credencial de Assinante). - Parâmetro de Query (
?id_record=): Obrigatório - ID interno da Fila a ser deletada.
Exemplo de Chamada de Exclusão: DELETE /api/manageQueue/119?id_record=943
⚠️ Códigos de Retorno e Erros Comuns
As respostas de erro seguem o padrão JSON abaixo:
| Código (reason) | Motivo | Resolução |
RECORD_NOT_FOUND |
A Fila informada não foi encontrada ou não pertence ao cliente. | Verifique se você passou o ?id_record= na URL para métodos POST, GET ou DELETE. |
INVALID_CUSTOMER |
ID do cliente não foi enviado na rota (Admin/Revenda). | Passe o ID do cliente na rota {id_cliente} ou no payload. |
CUSTOMER_NOT_FOUND |
Cliente / Assinante informado na criação não foi encontrado. | Valide o customer_id. |
INVALID_DATA |
Dados obrigatórios ausentes. | Certifique-se de enviar o campo descricao no PUT. |
MALFORMED_REQUEST |
Sintaxe JSON incorreta ou tipos de dados inválidos. | Verifique se Arrays e Objetos (como o announce) foram passados corretamente. |
Notas de Sistema (Comportamento Automático): > * Reload do Asterisk: Qualquer alteração, inserção de membros (devices) ou exclusão na fila executará o comando
queue reload allno sistema para aplicar as regras em tempo real no PBX.
- Sobrescrita de Membros: Ao atualizar os membros da fila via POST, o array
devicessubstitui integralmente a configuração anterior. Se desejar adicionar um ramal, você deve enviar o array contendo os ramais existentes + o ramal novo.- Auditoria: Todas as mudanças disparam um log de segurança no módulo "API - Gerenciar Filas de Atendimento".