Click2Call API
Dispare chamadas telefônicas via Asterisk através de uma requisição HTTP simples.
Visão geral
A API Click2Call recebe uma requisição HTTP GET com os parâmetros da chamada, valida as informações e cria um call file no Asterisk para iniciar a ligação automaticamente.
A chamada é realizada de forma assíncrona — a API confirma que o arquivo foi gerado, mas o status da ligação em si é gerenciado pelo Asterisk.
Autenticação
Toda requisição precisa de dois critérios para ser aceita:
1. IP autorizado
Somente IPs previamente cadastrados no servidor conseguem acessar a rota. Solicite ao responsável técnico a liberação do seu IP de saída.
2. Token no header
Envie o token de autenticação no header X-Call-Token em todas as requisições.
X-Call-Token: seu-token-aqui
Nunca exponha seu token em código client-side, logs ou repositórios públicos.
Endpoint
O endereço base (host + porta) será fornecido pelo responsável técnico da sua integração.
Parâmetros
Todos os parâmetros são enviados via query string e são obrigatórios. Como a transmissão é via URL, todos os valores chegam ao servidor como string — a validação de formato e intervalo é feita server-side.
| Parâmetro | Formato esperado | Limite | Descrição |
|---|---|---|---|
call_prefix
required
|
apenas dígitos | máx. 10 chars | Prefixo de discagem no canal (ex: código de saída da central, como 9 ou 0). |
numero
required
|
apenas dígitos | máx. 20 chars | Número de telefone a ser chamado. Somente dígitos, sem formatação (ex: 11999990000). |
exten
required
|
apenas dígitos | máx. 20 chars | Ramal ou extensão do dialplan para onde a chamada será encaminhada ao ser atendida. |
max_retry
required
|
dígitos inteiros | 0 – 20 | Número máximo de tentativas de chamada caso não haja resposta. |
retry_time
required
|
dígitos inteiros | 1 – 300 (seg) | Intervalo em segundos entre cada tentativa de chamada. |
wait_time
required
|
dígitos inteiros | 1 – 300 (seg) | Tempo máximo em segundos de ring antes de considerar a chamada sem resposta. |
Respostas
A API retorna sempre Content-Type: application/json com a estrutura:
{
"type": 200,
"message": "Chamada gerada"
}
message indica qual parâmetro causou o erro.X-Call-Token inválido/ausente.Exemplos de código
Selecione a linguagem e copie o trecho pronto para uso.
curl -X GET \ "https://seu-servidor.com/click2call?call_prefix=9&numero=11999990000&exten=100&max_retry=3&retry_time=60&wait_time=30" \ -H "X-Call-Token: seu-token-aqui"
<?php // Parâmetros da chamada $params = [ 'call_prefix' => '9', 'numero' => '11999990000', 'exten' => '100', 'max_retry' => 3, 'retry_time' => 60, 'wait_time' => 30, ]; $url = 'https://seu-servidor.com/click2call?' . http_build_query($params); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Call-Token: seu-token-aqui']); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); echo $data['message']; // "Chamada gerada"
import requests
params = {
"call_prefix": "9",
"numero": "11999990000",
"exten": "100",
"max_retry": 3,
"retry_time": 60,
"wait_time": 30,
}
headers = {"X-Call-Token": "seu-token-aqui"}
r = requests.get(
"https://seu-servidor.com/click2call",
params=params,
headers=headers
)
print(r.json()["message"]) # "Chamada gerada"
const params = new URLSearchParams({
call_prefix: '9',
numero: '11999990000',
exten: '100',
max_retry: 3,
retry_time: 60,
wait_time: 30,
});
const res = await fetch(
`https://seu-servidor.com/click2call?${params}`,
{
method: 'GET',
headers: { 'X-Call-Token': 'seu-token-aqui' },
}
);
const data = await res.json();
console.log(data.message); // "Chamada gerada"
require 'net/http' require 'uri' require 'json' uri = URI('https://seu-servidor.com/click2call') uri.query = URI.encode_www_form( call_prefix: '9', numero: '11999990000', exten: '100', max_retry: 3, retry_time: 60, wait_time: 30 ) req = Net::HTTP::Get.new(uri) req['X-Call-Token'] = 'seu-token-aqui' res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |h| h.request(req) } data = JSON.parse(res.body) puts data['message'] # "Chamada gerada"
Erros comuns
| Código | Mensagem | Causa provável |
|---|---|---|
| 400 | Parametro 'X' nao informado |
Campo ausente na query string. |
| 400 | Parametro 'X' fora do limite |
Valor fora do intervalo permitido. |
| 403 | Acesso negado |
IP não liberado ou X-Call-Token incorreto/ausente. |
| 500 | O arquivo de chamada nao pode ser gerado |
Problema de permissão no servidor. Contate o suporte. |
| 500 | O arquivo de chamada nao pode ser movido |
Falha ao escrever no diretório do Asterisk. Contate o suporte. |