📄Gerenciamento de Filas de Atendimento

📄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 NextBilling, 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 PUT exige os dados mínimos para criação (como descricao).

  • O método POST permite 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, use 0 se 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:

{ "error": 1, "reason": "CODIGO_DO_ERRO", "message": "Descrição amigável do erro." }

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 all no sistema para aplicar as regras em tempo real no PBX.

  • Sobrescrita de Membros: Ao atualizar os membros da fila via POST, o array devices substitui 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".