|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
require_once 'Integracao.php';
|
|
|
|
|
include "config.php";
|
|
|
|
|
|
|
|
|
|
/* * *****************************************************************************
|
|
|
|
|
* Classe default para criar novas integra<EFBFBD><EFBFBD>es com as API dos Provedores *
|
|
|
|
|
* ******************************************************************************
|
|
|
|
|
* 1 - Manter sempre o Padr<EFBFBD>o de OO *
|
|
|
|
|
* -> Classe com inicial MAIUSCULO *
|
|
|
|
|
* -> Metodo com inicial MINUSCULO *
|
|
|
|
|
* -> Manter o conceito de encapsulamento *
|
|
|
|
|
* -> Manter os dados em LOGS da Classe Logger.php *
|
|
|
|
|
* -> Documentar o c<EFBFBD>digo *
|
|
|
|
|
* *
|
|
|
|
|
* 2 - Metodos da API manter public. *
|
|
|
|
|
* *
|
|
|
|
|
* 3 - Deixar como usuario de execucao e acesso pbx:pbx *
|
|
|
|
|
* ******************************************************************************
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* DESCRICAO DO DESENVOLVEDOR
|
|
|
|
|
*
|
|
|
|
|
* @author Lucas Awade
|
|
|
|
|
* @function developer
|
|
|
|
|
* @company SimplesIP
|
|
|
|
|
* @version 1.0.0
|
|
|
|
|
*/
|
|
|
|
|
class Telegram extends Integracao {
|
|
|
|
|
|
|
|
|
|
private $token;
|
|
|
|
|
private $chat;
|
|
|
|
|
private $url;
|
|
|
|
|
private $metodo;
|
|
|
|
|
private $query;
|
|
|
|
|
private $curl;
|
|
|
|
|
private $debug;
|
|
|
|
|
private $params = array();
|
|
|
|
|
|
|
|
|
|
########################################################################
|
|
|
|
|
## FUNCOES DA API ##
|
|
|
|
|
########################################################################
|
|
|
|
|
|
|
|
|
|
public function sendMessage($text) {
|
|
|
|
|
$this->debug = debug_backtrace();
|
|
|
|
|
if ($this->getArgs(func_get_args())) {
|
|
|
|
|
$this->setMetodo("sendMessage");
|
|
|
|
|
$this->request('GET');
|
|
|
|
|
$this->params['chat_id'] = $this->chat;
|
|
|
|
|
$this->params['parse_mode'] = "HTML";
|
|
|
|
|
$this->params['text'] = $text;
|
|
|
|
|
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 $chat
|
|
|
|
|
* @param string $url
|
|
|
|
|
*/
|
|
|
|
|
public function __construct($id_integracao = null) {
|
|
|
|
|
$data = $this->db()->getConexaoAPI($id_integracao);
|
|
|
|
|
$this->token = $data['token'] ? $data['token'] : CONF_TOKEN_API;
|
|
|
|
|
$this->chat = $data['id_user'] ? $data['id_user'] : CONF_USERID_API;
|
|
|
|
|
$this->url = ($data['url'] != '127.0.0.1' || !$data['url']) ? $data['url'] . "bot" . $this->token . "/" : CONF_URL_API . "bot" . $this->token . "/";
|
|
|
|
|
$this->setLog(CONF_LOGGER_ATIVO);
|
|
|
|
|
$this->log->info("Iniciando integracao", debug_backtrace());
|
|
|
|
|
$this->log->debug("Credenciais de Acesso: " . print_r($data, true), 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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Informa o tipo de requisicao que sera feita pela cURL
|
|
|
|
|
* @param bool $request
|
|
|
|
|
*/
|
|
|
|
|
private function request($request = null) {
|
|
|
|
|
if (!$this->request || $request) {
|
|
|
|
|
$this->request = (strtoupper($request) == 'POST' ? strtoupper($request) : "GET");
|
|
|
|
|
}
|
|
|
|
|
$this->log->debug("HTTP Request: " . $this->request, debug_backtrace());
|
|
|
|
|
return $this->request;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Recebe array de forma de indice e valor
|
|
|
|
|
*
|
|
|
|
|
* @example array("qtype" => 'test_api', "query" => '123', "oper" => '=')
|
|
|
|
|
*
|
|
|
|
|
* @obs sempre chamar a fun<EFBFBD><EFBFBD>o debug_backtrace() para ser dispon<EFBFBD>vel em log
|
|
|
|
|
*
|
|
|
|
|
* @param type $params
|
|
|
|
|
* @debug_track function debug_backtrace()
|
|
|
|
|
*/
|
|
|
|
|
private function setParams() {
|
|
|
|
|
$x = 0;
|
|
|
|
|
$this->setQuery("?");
|
|
|
|
|
if ($this->params) {
|
|
|
|
|
foreach ($this->params as $key => $value) {
|
|
|
|
|
$this->setQuery("{$key}=$value");
|
|
|
|
|
if (count($this->params) != ++$x) {
|
|
|
|
|
$this->setQuery("&");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
unset($this->params);
|
|
|
|
|
$response = $this->exec();
|
|
|
|
|
return $this->response($response);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Recebe as informa<EFBFBD><EFBFBD>es e realiza a execucao da API
|
|
|
|
|
*
|
|
|
|
|
* @void
|
|
|
|
|
*/
|
|
|
|
|
private function exec() {
|
|
|
|
|
$this->log->debug("URL: " . $this->url . $this->metodo . $this->query, debug_backtrace());
|
|
|
|
|
$response = file_get_contents($this->url . $this->metodo . ($this->request() == "GET" ? $this->getQuery() : null));
|
|
|
|
|
return json_decode($response, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 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($data, true), $this->debug);
|
|
|
|
|
if ($data) {
|
|
|
|
|
return $data;
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|