token = CONF_TELEGRAM_AUTH_TOKEN; $this->url = CONF_TELEGRAM_AUTH_URL; $this->request = new RequestURL(); } function convertToWebsocket($msg) { } function enviarMsgIterativaLista($telegram, $mensagem, $nomeButton, $lista, $prex = '') { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "chatId" => "$telegram", "text" => array("body" => utf8_encode("$mensagem")), "options" => array( "reply_markup" => array( "inline_keyboard" => $this->montaOp($lista, $prex) ) ) ); $this->requestType("POST"); $this->setMetodo('sendMessage'); return $this->exec(); } return false; } function montaOp($lista, $prex = '') { $botoes = []; for ($i = 0; $i < count($lista); $i++) { array_push( $botoes, array( array( "text" => utf8_encode("{$lista[$i]['title']}"), "callback_data" => $prex == "C" ? utf8_encode("{$lista[$i]['title']}") : utf8_encode("{$lista[$i]['sub']}") ), ) ); } return $botoes; } function enviarMsgIterativaBotao($telegram, $mensagem, $buttons) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "chatId" => "$telegram", "text" => array("body" => utf8_encode("$mensagem")), "options" => array( "reply_markup" => array( "inline_keyboard" => array( array( array( "text" => utf8_encode("/presente"), "callback_data" => utf8_encode("/presente") ), ) ) ) ) ); $this->requestType("POST"); $this->setMetodo('sendMessage'); return $this->exec(); } return false; } function enviarMsg($telegram, $mensagem) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "chatId" => "$telegram", "text" => array("body" => "$mensagem") ); $this->requestType("POST"); $this->setMetodo('sendMessage'); return $this->exec(); } return false; } function enviarContato($telegram, $nome, $contato) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "chatId" => "$telegram", "type" => "contacts", "contacts" => array( array( "name" => array( "first_name" => "$nome", "formatted_name" => "$nome" ), "phones" => array( array( "phone" => "$contato", "type" => "CELL", "wa_id" => "$contato" ) ) ) ) ); $this->requestType("POST"); $this->setMetodo('sendContact'); return $this->exec(); } return false; } function enviarLocalizacao($telegram, $longitude, $latitude, $nome = null, $endereco = null) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "chatId" => "$telegram", "longitude" => "$longitude", "latitude" => "$latitude", ); $this->requestType("POST"); $this->setMetodo('sendLocation'); return $this->exec(); } return false; } function enviaDocumento($telegram, $link, $titulo = null) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "chatId" => "$telegram", "file" => "$link", "options" => array( "caption" => "$titulo" ), "fileOptions" => array( "filename" => "$titulo" ) ); $this->requestType("POST"); $this->setMetodo('sendDocument'); return $this->exec(); } return false; } function enviaImagem($telegram, $link, $titulo = null) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "chatId" => "$telegram", "file" => "$link", ); $this->requestType("POST"); $this->setMetodo('sendPhoto'); return $this->exec(); } return false; } function enviaSticker($telegram, $link) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "chatId" => "$telegram", "file" => "$link", ); $this->requestType("POST"); $this->setMetodo('sendSticker'); return $this->exec(); } return false; } function enviaVideo($telegram, $link, $titulo = null) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "chatId" => "$telegram", "file" => "$link", "options" => array( "caption" => "$titulo" ) ); $this->requestType("POST"); $this->setMetodo('sendVideo'); return $this->exec(); } return false; } function enviaAudio($telegram, $link) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "chatId" => "$telegram", "file" => "$link", ); $this->requestType("POST"); $this->setMetodo('sendVoice'); return $this->exec(); } return false; } function baixarMidia($name) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->requestType("GET"); $this->setMetodo('media/' . $name); $file = $this->storage . $name; file_put_contents($file, $this->exec()); if (file_exists($file)) { return $file; } } return false; } function setStorage($storage) { $this->storage = $storage; } /** * Profile WhatsApp * @return string */ public function getProfile() { return $this->hook['from']['first_name']; } /** * Phone WhatsApp * @return string */ public function getPhone() { if ($this->hook['chat']['id']) { return $this->hook['chat']['id']; } else { return $this->hook['from']['id']; } } /** * Returns the type of the message * @return string|boolean */ public function getType() { if ($this->hook) { if (array_key_exists("contact", $this->hook)) { return 'contacts'; } if (array_key_exists("location", $this->hook)) { return 'location'; } if (array_key_exists("document", $this->hook)) { return 'document'; } if (array_key_exists("audio", $this->hook)) { return 'audio'; } if (array_key_exists("video", $this->hook)) { return 'video'; } if (array_key_exists("sticker", $this->hook)) { return 'sticker'; } if (array_key_exists("photo", $this->hook)) { return 'image'; } if (array_key_exists("text", $this->hook)) { return 'text'; } if (array_key_exists("data", $this->hook)) { return 'text'; } return $this->hook['messages'][0]['type']; } return false; } /** * Returns the mime of the message * @return string|boolean */ public function getMimetype() { if ($this->hook['messages'][0][$this->getType()]['mime_type']) { return base64_encode($this->hook['messages'][0][$this->getType()]['mime_type']); } return false; } /** * Returns the id of the message * @return string|boolean */ public function getId() { if ($this->hook && $this->getType()) { return $this->hook['messages'][0][$this->getType()]['id']; } return false; } /** * Returns the (text, body) of the message * @return string|boolean */ public function getIsValidMessage() { return true; } /** * Returns the (text, body) of the message * @return string|boolean */ public function getMessage() { if ($this->hook['data']) { return $this->hook['data']; } if ($this->hook['text']) { return $this->hook['text']; } $message = $this->hook['data']; return ($message ? $message : false); } /** * Returns the name of the contact * @return string|boolean */ public function getContactFormatted() { $formatted = $this->hook['messages'][0]['contacts'][0]['name']['formatted_name']; if ($formatted) { return $formatted; } return false; } /** * Returns the phone of the contact * @return string|boolean */ public function getContactPhone() { $contact = $this->hook['messages'][0]['contacts'][0]['phones'][0]['wa_id']; if ($contact) { return $contact; } return false; } /** * Returns the latitude|longitude of the location * @return string|boolean */ public function getGeolocation($type) { $geolocation = $this->hook['location'][strtolower($type)]; if ($geolocation) { return $geolocation; } return false; } function setHook($hook) { $this->hook = $hook; } ######################################################################## ## FUNCOES DO SISTEMA ## ######################################################################## function setMetodo($metodo) { $this->metodo = $metodo; } /** * Escreve a query para ser passada para o curl * * @param string $query */ function setQuery($query) { return $this->query .= $query; } /** * retorna a string pronta da query do curl e limpa a variavel. * * @return string $query */ function getQuery() { $query = $this->query; unset($this->query); return $query; } /** * Verifica se todos os parametros passados foram completados. * * @param array $args * @return true|false */ function getArgs($args) { foreach ($args as $value) { if (!$value) { return false; } } return true; } /** * Recebe o tipo de Requisi��o GET/POST * * @return boolean */ function requestType($req = null) { if (!$req) { return $this->requestType; } if (strtoupper($req) == "GET") { return $this->requestType = "GET"; } else if (strtoupper($req) == "POST") { return $this->requestType = "POST"; } } function exec() { $this->setQuery(json_encode($this->params)); //SET QUERY $this->request->setUrl($this->url . $this->metodo); $header = array(); //$header[] = "Authorization: Bearer {$this->token}"; if ($this->requestType == 'POST') { $header[] = 'Content-Type: application/json'; $this->request->post_field($this->getQuery(), true); } $this->request->header($header); $this->request->method_request($this->requestType); $response = $this->request->exec_request(); return $this->response($response); } function response($result) { if ($result) { if (json_decode($result, true) !== null) { return json_decode($result, true); } return $result; } else { return false; } } public function getLinkDownload($host) { if ($this->hook['photo']) { return end($this->hook['photo'])['file_id']; } if ($this->hook['sticker']) { return $this->hook['sticker']['file_id']; } if ($this->hook['video']) { return $this->hook['video']['file_id']; } if ($this->hook['audio']) { return $this->hook['audio']['file_id']; } if ($this->hook['document']) { return $this->hook['document']['file_id']; } } public function retornaTituloDocument($msg) { return $this->hook['document']['file_name']; } }