forked from Claudio/integracao
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
6.8 KiB
216 lines
6.8 KiB
<?php |
|
|
|
require_once 'Integracao.php'; |
|
include_once "config.php"; |
|
|
|
|
|
class Xpro extends Integracao { |
|
/** DADOS PARA REQUISICAO */ |
|
private $token; |
|
private $url; |
|
private $metodo; |
|
private $query; |
|
private $curl; |
|
private $debug; |
|
private $params = array(); |
|
|
|
######################################################################## |
|
## FUNCOES DA API ## |
|
######################################################################## |
|
|
|
/* |
|
* |
|
id_chamada - (String, Obrigat?rio) identificador ?nico da liga??o |
|
telefone - (int, Obrigat?rio) n?mero do telefone chamador (cliente) (bina, identificador de chamada) |
|
Protocolo (int, opcional) * Id da solicita??o, Passado no momento da liga??o possibilitando a explos?o de aba, para o usu?rio logado. |
|
? codigo_agente - (int, Opcional) * id interno do operador no sistema de telefonia usado para vincular a solicita??o ao operador |
|
? emailusuario - (String, Opcional) * e_mail do operador, usado para vincular a solicita??o ao operador |
|
? consultor - (Int, Opcional) * id do usu?rio no Xpro, usado para vincular a solicita??o ao operador |
|
|
|
*/ |
|
public function recebeChamada($numero, $id_chamada) { |
|
$this->debug = debug_backtrace(); |
|
if ($this->getArgs(func_get_args())) { |
|
$this->params = array( |
|
'telefone' => $numero, |
|
'id_chamada' => $id_chamada, |
|
'token' => $this->token |
|
); |
|
$this->setMetodo('receberchamada'); |
|
return $this->setParams(); |
|
} else { |
|
return false; |
|
} |
|
} |
|
|
|
/* |
|
id_chamada (string, obrigat?rio) id da liga??o passado no receber chamada |
|
audio (string, opcional) URL do ?udio da liga??o para download |
|
duracao (int, opcional) tempo da liga??o em segundos |
|
tempo_espera (int, opcional) tempo de espera da liga??o em segundos |
|
atendida (bool, opcional) 1 para indicar que a liga??o foi atendida |
|
abandonada (bool, opcional) 1 para indicar que a liga??o foi abandonada |
|
retida_na_ura (bool, opcional) 1 para indicar que a liga??o foi retida na URA |
|
perdida (bool, opcional) 1 para indicar que a liga??o foi perdida |
|
*/ |
|
|
|
public function encerraChamada($id_chamada, $audio, $duracao) { |
|
$this->debug = debug_backtrace(); |
|
if ($this->getArgs(func_get_args())) { |
|
$this->params = array( |
|
'token' => $this->token, |
|
'id_chamada' => $id_chamada, |
|
'audio' => $audio, |
|
'duracao' => $duracao |
|
); |
|
|
|
$this->setMetodo('terminachamada'); |
|
return $this->setParams(); |
|
} else { |
|
return false; |
|
} |
|
} |
|
|
|
public function encerraChamadaCron($id_chamada, $audio, $duracao, $token) { |
|
$this->debug = debug_backtrace(); |
|
if ($this->getArgs(func_get_args())) { |
|
$this->params = array( |
|
'token' => $token, |
|
'id_chamada' => $id_chamada, |
|
'audio' => $audio, |
|
'duracao' => $duracao |
|
); |
|
|
|
$this->setMetodo('terminachamada'); |
|
return $this->setParams(); |
|
} else { |
|
return false; |
|
} |
|
} |
|
|
|
|
|
######################################################################## |
|
## FUNCOES DEFAULT DA CLASSE ## |
|
######################################################################## |
|
|
|
/** |
|
* Coleta as informacoes iniciais para o inicio da integracao com a API. |
|
* |
|
* @param string $token |
|
* @param string $url |
|
* @param boolean $log |
|
*/ |
|
public function __construct($url = CONF_URL_API, $token = CONF_TOKEN_API, $log = CONF_LOGGER_ATIVO) { |
|
$this->setLog($log); |
|
if(end(str_split($url)) != '/'){ |
|
$url .= '/'; |
|
} |
|
$this->token = $token; |
|
$this->url = $url; |
|
|
|
//$this->integracaoReg(); |
|
$this->log->info("Iniciando integracao", debug_backtrace()); |
|
} |
|
|
|
/** |
|
* Parametriza o metodo utilizado para a consulta. |
|
* |
|
* @param type $metodo |
|
*/ |
|
private function setMetodo($metodo) { |
|
$this->metodo = $metodo; |
|
} |
|
|
|
/** |
|
* Escreve a query para ser passada para o curl |
|
* |
|
* @param string $query |
|
*/ |
|
private function setQuery($query) { |
|
return $this->query .= $query; |
|
} |
|
|
|
/** |
|
* retorna a string pronta da query do curl e limpa a variavel. |
|
* |
|
* @return string $query |
|
*/ |
|
private function getQuery() { |
|
$query = $this->query; |
|
unset($this->query); |
|
return $query; |
|
} |
|
|
|
/** |
|
* Constroi de forma dinamica a string para ser passada para a execucao do Curl |
|
* |
|
* @void |
|
*/ |
|
private function curl() { |
|
/* |
|
* Final da linha para pegar os dados da variavel |
|
*/ |
|
$this->curl = curl_init(); |
|
curl_setopt($this->curl, CURLOPT_URL, $this->url.$this->metodo); |
|
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1); |
|
curl_setopt($this->curl, CURLOPT_TIMEOUT, 120); |
|
curl_setopt($this->curl, CURLOPT_POST, 1); |
|
curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST, 0); |
|
curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, 0); |
|
curl_setopt($this->curl, CURLOPT_POSTFIELDS, $this->params); |
|
|
|
$this->log()->debug("Curl: ". print_r(curl_getinfo($this->curl), true), debug_backtrace()); |
|
} |
|
|
|
/** |
|
* Recebe array de forma de indice e valor |
|
* |
|
* @example array("qtype" => 'test_api', "query" => '123', "oper" => '=') |
|
* |
|
* @obs sempre chamar a fun??o debug_backtrace() para ser dispon?vel em log |
|
* |
|
* @param type $params |
|
* @debug_track function debug_backtrace() |
|
*/ |
|
private function setParams() { |
|
$this->curl(); |
|
unset($this->params); |
|
return $this->exec(); |
|
} |
|
|
|
/** |
|
* Recebe as informa??es e realiza a execucao da API |
|
* |
|
* @void |
|
*/ |
|
private function exec() { |
|
/** |
|
* Caso tenha problema de requisi??o |
|
*/ |
|
$content = curl_exec($this->curl); |
|
if (curl_errno($this->curl)) { |
|
$this->log->error(curl_error($this->curl), debug_backtrace()); |
|
curl_close($this->curl); |
|
$this->audioError(); |
|
return false; |
|
} |
|
curl_close($this->curl); |
|
return $this->response($content); |
|
} |
|
|
|
/** |
|
* Prepara dos dados para ser transmitidos para o metodo a ser retornado a |
|
* integracao. |
|
* |
|
* @return array |
|
*/ |
|
private function response($data) { |
|
$this->log->debug("Reponse API: " . print_r(json_decode($data, true), true), $this->debug); |
|
if ($data) { |
|
return json_decode($data, true); |
|
} else { |
|
return false; |
|
} |
|
} |
|
} |
|
|
|
|