PABX/APIuTech

De uTech Tecnologia
Edição feita às 19h35min de 16 de outubro de 2024 por Utechnet (disc | contribs)

Ir para: navegação, pesquisa

Tabela de conteúdo


Introdução

  • A API do PABX uTech está disponível para a versão 1.0.1 - Qui 20 Sep 2023 ou superior.



Configuração do PABX

  • Para habilitar ou desabilitar o acesso a API, acesse a interface WEB do PABX, menu GESTÃOConfiguração. Depois clique na aba IntegraçõesGeral. Não opção API uTech'
  • Habilite ou desabilite a opção Habilitar API.
  • Configure um token de acesso no campo Token. É mandatório a configuração de um token. Se o campo ficar vazio, não será possível a utilização da API.


Nota: utilize um token forte, pois a API deixará seu PABX aberto para tentativas de uso da API!


Pabx-apiutech-config.png


Observações

  • A API retorna valores no formato JSON.
  • Utiliza protocolo HTTP.


Endpoints

/call/makecall - Gerar chamadas


Endpoint utilizado para gerar uma chamada. Ao executar o endpoint, será gerada uma chamada para o numero origem (parâmetro source). Quando a origem atender a chamada, será gerado pelo PABX uma chamada para o numero destino (parâmetro destination). Quando o destino atender a chamada, origem e destino estarão em conversação.


GET /v1/call/makecall


Parâmetros:
token Token definido na configuração do PABX uTech. string Mandatório
source Numero origem da chamada. Ramal, fila, etc. string Mandatório
destination Número destino da chamada. string Mandatório


Resposta:
status Estado da geração da chamada.
  • ok: Chamada será realizada.
  • error: Erro na requisição.
string
id Identificador da chamada (callid). Essa identificação será utilizada para requisições de status e gravação, etc. string
cause Em caso de erro na requisição, uma string de causa do erro será preenchida. string
Exemplo:
GET /utech/v1/call/makecall/?token=1234&source=2000&destination=04833334840


200 OK:
{
  "status": "ok",
  "id": "1695129954.462751335"
}
Erro 4XX/5XX:
{
  "status": "error",
  "cause": "Authentication error"
}



Exemplo em PHP

<?php
 
$token       = "1234";
$source      = "2001";
$destination = "4833334840";
$port        = "80";
$ipaddr      = "pabx.dominio.com";
 
$url = "";
$url = "$ipaddr:$port/utech/v1/call/makecall/?token={$token}&source={$source}&destination={$destination}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
if(!$result) {
    echo "error!\n";
    return 2;
}
 
print_r(json_decode($result, true));
 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpcode != 200) {
    echo "HTTP return code error [$httpcode]\n";
}
?>



/call/get_record - Fazer download de gravações


Endpoint utilizado para fazer o download de uma gravação. Se o ID passado corresponder a uma chamada válida e houver gravação dessa chamada, o PABX uTech irá iniciar o download da gravação. Caso contrário, será retornado erro 404 e um json com a causa.


GET /v1/call/get_record


Parâmetros:
token Token definido na configuração do PABX uTech. string Mandatório
id Identificador da chamada que deseja realizar o download da gravação. string Mandatório


Resposta:
status Estado da geração da chamada.
  • error: Erro na requisição.
string
cause Em caso de erro na requisição, uma string de causa do erro será preenchida. string
Exemplo:
/utech/v1/call/get_record/?token=1234&id=1694435179.3


200 OK:
A gravação!
Erro 4XX/5XX:
{
  "status": "error",
  "cause": "Invalid callid"
}



Exemplo em PHP

<?php
 
$token  = "1234";
$callid = "1234567890";
$port   = "80";
$ipaddr = "pabx.dominio.com";
 
$url = "";
$url = "$ipaddr:$port/utech/v1/call/get_record/?token={$token}&id={$callid}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
if(!$result) {
    echo "error!\n";
    return 2;
}
 
print_r(json_decode($result, true));
 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpcode != 200) {
    echo "HTTP return code error [$httpcode]\n";
}
?>



/call/get_rec_uri - Buscar link de gravações


Endpoint utilizado para buscar o link para de download de uma gravação. Se o ID passado corresponder a uma chamada válida e houver gravação dessa chamada, o PABX uTech retornar um json com o link da gravação. Caso contrário, será retornado erro 404 e um json com a causa.


GET /v1/call/get_record_uri


Parâmetros:
token Token definido na configuração do PABX uTech. string Mandatório
id Identificador da chamada que deseja realizar o download da gravação. string Mandatório


Resposta:
status Estado da geração da chamada.
  • ok: Requisição correta.
  • error: Erro na requisição.
string
url Link para download da gravação. uri
cause Em caso de erro na requisição, uma string de causa do erro será preenchida. string
Exemplo:
/utech/v1/call/get_record_uri/?token=1234&id=1694435179.3


200 OK:
{
  "status": "ok",
  "url": "https://dominio/storage/19092023/4001_6002_eb00000a_18750_003351.wav"
}
Erro 4XX/5XX:
{
  "status": "error",
  "cause": "Invalid callid"
}



Exemplo em PHP

<?php
 
$token  = "1234";
$callid = "1234567890";
$port   = "80";
$ipaddr = "pabx.dominio.com";
 
$url = "";
$url = "$ipaddr:$port/utech/v1/call/get_record_uri/?token={$token}&id={$callid}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
if(!$result) {
    echo "error!\n";
    return 2;
}
 
print_r(json_decode($result, true));
 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpcode != 200) {
    echo "HTTP return code error [$httpcode]\n";
}
?>



/call/summary - Buscar dados/resumo de chamadas


Endpoint utilizado para buscar informações de uma chamada, como NA, NB, duração entre outros.


GET /v1/call/summary


Parâmetros:
token Token definido na configuração do PABX uTech. string Mandatório
id Identificador da chamada que deseja buscar o sumário. string Mandatório


Resposta:
status Estado da geração da chamada.
  • ok: Requisição correta.
  • error: Erro na requisição.
string
summary Dados da chamada consultada:
  • callid: Identificação da chamada.
  • url: Link para download da gravação.
  • 'start_date: Data/Hora de inicio da chamada.
  • end_data: Data/Hora de finalização da chamada.
  • talk_duration: Tempo, em segundos,de conversação.
  • total_duration: Tempo, em segundos,total da chamada.
  • price: Custo da chamada.
  • caller: Numero origem.
  • called: Numero destino.
array/json
cause Em caso de erro na requisição, uma string de causa do erro será preenchida. string
Exemplo:
/utech/v1/call/summary/?token=1234&id=1694435179.3


200 OK:
{
  "status": "ok",
  "summary": {
    "callid": "1694435179.3",
    "url": "https://dominio/storage/19092023/4001_6002_eb00000a_18750_003351.wav",
    "start_date": "2023-09-19T00:33:51-03:00",
    "end_data": "2023-09-19T00:33:55-03:00",
    "talk_duration": "33",
    "total_duration": 42,
    "price": "0",
    "caller": "2000",
    "called": "4833334840"
  }
}
Erro 4XX/5XX:
{
  "status": "error",
  "cause": "Invalid callid"
}



Exemplo em PHP

<?php
 
$token  = "1234";
$callid = "1234567890";
$port   = "80";
$ipaddr = "pabx.dominio.com";
 
$url = "";
$url = "$ipaddr:$port/utech/v1/call/summary/?token={$token}&id={$callid}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
if(!$result) {
    echo "error!\n";
    return 2;
}
 
print_r(json_decode($result, true));
 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpcode != 200) {
    echo "HTTP return code error [$httpcode]\n";
}
?>



/call/call_status - Buscar o status atual de chamadas


Endpoint utilizado para buscar o estado atual de uma chamada.


GET /v1/call/call_status


Parâmetros:
token Token definido na configuração do PABX uTech. string Mandatório
id Identificador da chamada que deseja realizar o download da gravação. string Mandatório


Resposta:
status Estado da geração da chamada.
  • ok: Requisição correta.
  • error: Erro na requisição.
string
state Estado da chamada:
  • answered: Chamada atendida.
  • unanswered: Chamada não atendida.
  • proceeding: Chamada originada/enviada ao destino.
  • calling: Chamada iniciada.
  • diverted: Chamada desviada.
  • transferred: Chamada transferida.
array/json
id Identificador da chamada enviado na requisição. string
cause Em caso de erro na requisição, uma string de causa do erro será preenchida. string
Exemplo:
/utech/v1/call/call_status/?token=1234&id=1694435179.3


200 OK:
{
  "status": "ok",
  "id": "1695384025.44",
  "state": "answered"
}
Erro 4XX/5XX:
{
  "status": "error",
  "cause": "Invalid callid"
}



Exemplo em PHP

<?php
 
$token  = "1234";
$callid = "1234567890";
$port   = "80";
$ipaddr = "pabx.dominio.com";
 
$url = "";
$url = "$ipaddr:$port/utech/v1/call/call_status/?token={$token}&id={$callid}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
if(!$result) {
    echo "error!\n";
    return 2;
}
 
print_r(json_decode($result, true));
 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpcode != 200) {
    echo "HTTP return code error [$httpcode]\n";
}
?>



/call/endcall - Desligar/Derrubar chamadas


Endpoint utilizado para derrubar/desligar uma chamada ativa..


GET /v1/call/endcall


Parâmetros:
token Token definido na configuração do PABX uTech. string Mandatório
id Identificador da chamada que deseja realizar desligar. string Mandatório


Resposta:
status Estado da geração da chamada.
  • ok: Requisição correta.
  • error: Erro na requisição.
string
callstate Status da chamada:
  • finished: Chamada finalizada.
string
id Identificador da chamada enviado na requisição. string
Exemplo:
/utech/v1/call/endcall/?token=1234&id=1694435179.3


200 OK:
{
  "status": "ok",
  "callstate": "finished",
  "id": "1695383395.42"
}
Erro 4XX/5XX:
{
  "status": "error",
  "cause": "Invalid callid"
}



Exemplo em PHP

<?php
 
$token  = "1234";
$callid = "1234567890";
$port   = "80";
$ipaddr = "pabx.dominio.com";
 
$url = "";
$url = "$ipaddr:$port/utech/v1/call//endcall/?token={$token}&id={$callid}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
if(!$result) {
    echo "error!\n";
    return 2;
}
 
print_r(json_decode($result, true));
 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpcode != 200) {
    echo "HTTP return code error [$httpcode]\n";
}
?>



/call/callback - Callback para Filas


Endpoint utilizado gerar uma chamada de callback para as filas do PABX. PABX uTEch irá discar para o número definido no parâmetro number', e quando o usuário atender, a chamada é enviada para a fila do PABX definida no parâmetro queue


GET /v1/call/callback


Parâmetros:
token Token definido na configuração do PABX uTech. string Mandatório
queue Número da fila no PABX. number Mandatório
number Numero destino da chamada. number Mandatório


Resposta:
status Estado da geração da chamada.
  • ok: Requisição correta.
  • error: Erro na requisição.
string
id Identificador da chamada para consulta do status. string
Exemplo:
/utech/v1/call/callback/?token=1234&queue=555000&number=4833334840


200 OK:
{
  "status": "ok",
  "id": "1695383395.42"
}
Erro 4XX/5XX:
{
  "status": "error",
  "cause": "Invalid callid"
}



Exemplo em PHP

<?php
 
$token  = "1234";
$callid = "1234567890";
$port   = "80";
$ipaddr = "pabx.dominio.com";
 
$url = "";
$url = "$ipaddr:$port/utech/v1/call/callback/?token={$token}&queue={$queue}&number={$number}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
if(!$result) {
    echo "error!\n";
    return 2;
}
 
print_r(json_decode($result, true));
 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpcode != 200) {
    echo "HTTP return code error [$httpcode]\n";
}
?>




/exten/extenlist - Lista de Ramais


Endpoint utilizado para buscar a lista de ramais do PABX. Tamanho máximo da lista será de 200 ramais. Se houver mais ramais configurados no PABX uTech, deve-se utilizar o parâmetro page, para buscar os próximos 200. Os valores aceitos para o parâmetro page são de 0 a 5000.


GET /v1/exten/extenlist


Parâmetros:
token Token definido na configuração do PABX uTech. string Mandatório
page Número da página. Valor aceitos de 0 a 5000. number Mandatório


Resposta:
status Lista de ramais.
  • ok: Requisição correta.
  • error: Erro na requisição.
string
extenlist Dados dos ramais. json
  • extens: Lista de ramais
  • page: pagina retornada
  • total: total de ramais da plataforma
  • count: total de ramais retornados na requisição
Exemplo:
/utech/v1/exten/extenlist/?token=1234&page=0


200 OK:
{
  "status": "ok",
  "extenlist": {
    "extens": {
      "2000": {
        "exten": "2000",
        "name": "Ramal 2000"
      }
    },
    "total": "1",
    "count": 1,
    "page": "0"
  }
}
Erro 4XX/5XX:
{
  "status": "error",
  "cause": "Invalid parameter format [page]"
}



Exemplo em PHP

<?php
 
$token  = "1234";
$ipaddr = "pabx.dominio.com";
 
$url = "$ipaddr/utech/v1/exten/extenlist/?token=$token&page=0";
 
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
if(!$result) {
    echo "error!\n";
    return 2;
}
 
print_r(json_decode($result, true));
 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpcode != 200) {
    echo "HTTP return code error [$httpcode]\n";
}
?>



/exten/extenadd - Adicionar Ramal


Endpoint utilizado para adicionar um ramai no PABX.


GET /v1/exten/extenadd


Parâmetros:
token Token definido na configuração do PABX uTech. string Mandatório
exten Número do ramal. Somente dígitos. Máximo 20 caracteres. number Mandatório


  • POST:
name Nome/Identificação do ramal string Opcional
cid Numero de identificação do ramal. number Opcional
secret Senha de registro do ramal. number Mandatório
callwaiting Habilita/Desabilita chamada em espera. boolean Opcional
ringtimer Tempo de ring do ramal. number Opcional
recording Habilita/Desabilita a gravação do ramal. boolean Opcional
dtmfmode Tipo do DTMF enviado pelo ramal - Ver Tipo TDMF string Opcional
context Permissão de discagem do ramal - Ver Permissão de discagem number Opcional
callgroup ID do grupo chamada do ramal - Ver Grupo de chamada number Opcional
pickupgroup ID do grupo captura do ramal - Ver Grupo de captura number Opcional
src_perms Permissão de origem ramal em ligação - Ver Permissão ramal origem string Opcional
dst_perms Permissão de destino do ramal em ligação - Ver Permissão do ramal destino string Opcional
codeclist Lista de codec's aceitos pelo ramal - Ver Codecs

String com valores separados por virgula.

string Opcional
provisioning_enable Habilita provisionamento no ramal
  • 0 - Desabilitado
  • 1 - Habilitado
number Opcional
provisioning_macaddr Endereço MAC do ramal/Dispositivo provisionado. number Opcional
provisioning_profile Perfil de provisionamento - ID do perfil de provisionamento configurado no PBX. number Opcional


Resposta:
status Lista de ramais.
  • ok: Requisição correta.
  • error: Erro na requisição.
string
exten Identificação do ramal adicionado. string
Exemplo:
/utech/v1/exten/extenadd/?token=1234&exten=1000
{
  "name":"Nome do Usuario",
  "cid":"4033334840",
  "secret":"1234",
  "callwaiting":true,
  "ringtimer":30,
  "provisioning_enable":"1",
  "provisioning_macaddr":"00:11:22:33:44:55",
  "provisioning_profile":"2",
  "recording":true,
  "dtmfmode":"info",
  "context":1,
  "callgroup":2,
  "pickupgroup":2,
  "src_perms":"GDET",
  "dst_perms":"gdet",
  "codeclist":"alaw,ulaw,gsm,g729"
}


200 OK:
{
  "status": "ok",
  "exten": "1000"
}
Erro 4XX/5XX:
{
  "status": "error",
  "cause": "Invalid parameter format [exten]"
}



Exemplo em PHP

<?php
 
$token  = "1234";
$ipaddr = "pabx.dominio.com";
 
 
$ext['name'] = "Nome do Usuario";
$ext['cid'] = "4033334840";
$ext['secret'] = "1234";
$ext['callwaiting'] = true;
$ext['ringtimer'] = 30;
$ext['provisioning_enable'] = "1";
$ext['provisioning_macaddr'] = "00:11:22:33:44:55";
$ext['provisioning_profile'] = "2";
$ext['recording'] = true;
$ext['dtmfmode'] = 'info';
$ext['context'] = 1;
$ext['callgroup'] = 2;
$ext['pickupgroup'] = 2;
$ext['src_perms'] = "GDET";
$ext['dst_perms'] = "gdet";
$ext['codeclist'] = "alaw,ulaw,gsm,g729";
 
$url = "$ipaddr/utech/v1/exten/extenlist/?token=$token&exten=1000";
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($ext,JSON_UNESCAPED_SLASHES));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($ch);
if(!$result) {
    echo "error!\n";
    return 2;
}
 
print_r(json_decode($result, true));
 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpcode != 200) {
    echo "HTTP return code error [$httpcode]\n";
}
?>



/exten/extendel - Remover ramal


Endpoint utilizado Remover um ramal.


GET /v1/exten/extendel


Parâmetros:
token Token definido na configuração do PABX uTech. string Mandatório
exten Número do ramal. Somente números. Máximi 20 caracteres. number Mandatório


Resposta:
status Lista de ramais.
  • ok: Requisição correta.
  • error: Erro na requisição.
string
exten Identificação do ramal removido.
Exemplo:
/utech/v1/exten/extenlist/?token=1234&exten=1000


200 OK:
{
  "status": "ok",
  "exten": "1000
}
Erro 4XX/5XX:
{
  "status": "error",
  "cause": "Invalid parameter format [exten]"
}



Exemplo em PHP

<?php
 
$token  = "1234";
$ipaddr = "pabx.dominio.com";
 
$url = "$ipaddr/utech/v1/exten/extenlist/?token=$token&exten=1000";
 
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
if(!$result) {
    echo "error!\n";
    return 2;
}
 
print_r(json_decode($result, true));
 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpcode != 200) {
    echo "HTTP return code error [$httpcode]\n";
}
?>



Ferramentas pessoais
Espaços nominais

Variantes
Visualizações
Ações
Navegação
Ferramentas