hook = json_decode($hook, true); } function enviarMedia($whatsapp, $link, $type, $titulo = null) { $tipos = []; $tipos['link'] = $link; if (!empty($titulo)) { $tipos['caption'] = $titulo; } $this->debug = debug_backtrace(); $this->params = [ "to" => "+$whatsapp", "type" => "$type", "$type" => $tipos ]; $this->requestType("POST"); $this->setMetodo('messages'); return $this->exec(); } function enviarMsg($whatsapp, $mensagem, $encode = true) { if ($encode) { $mensagem = utf8_encode($mensagem); } $this->debug = debug_backtrace(); $this->params = array( "to" => "+$whatsapp", "type" => "text", "text" => array("body" => "$mensagem") ); $this->requestType("POST"); $this->setMetodo('messages'); return $this->exec(); } function enviarMsgIterativaLista($whatsapp, $mensagem, $nomeButton, $lista, $prex = '') { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "to" => "+$whatsapp", "type" => "interactive", "interactive" => array( "type" => "list", "body" => array( "text" => utf8_encode($mensagem) ), "action" => array( "button" => utf8_encode($nomeButton), "sections" => $this->montaSection($lista, $prex) ) ) ); $this->requestType("POST"); $this->setMetodo('messages'); $ret = $this->exec(); return $ret; } return false; } function montaSection($lista, $prex = '') { $sections = []; for ($i = 0; $i < count($lista); $i++) { array_push( $sections, array( "id" => "$prex$i", "title" => utf8_encode("{$lista[$i]['title']}"), "description" => utf8_encode("{$lista[$i]['sub']}") ) ); } return array( array( "title" => utf8_encode("Comandos"), "rows" => $sections ), ); } function enviarMsgIterativaBotao($whatsapp, $mensagem, $buttons) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "to" => "+$whatsapp", "type" => "interactive", "recipient_type" => "individual", "interactive" => array( "type" => "button", "body" => array( "text" => utf8_encode($mensagem) ), "action" => array( "buttons" => $buttons ) ) ); $this->requestType("POST"); $this->setMetodo('messages'); $ret = $this->exec(); return $ret; } return false; } function enviarContato($whatsapp, $nome, $contato) { $this->debug = debug_backtrace(); if ($whatsapp) { $this->params = array( "to" => "+$whatsapp", "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('messages'); return $this->exec(); } return false; } function enviarLocalizacao($whatsapp, $longitude, $latitude, $nome = null, $endereco = null) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->params = array( "to" => "+$whatsapp", "type" => "location", "location" => array( "longitude" => "$longitude", "latitude" => "$latitude", "name" => "$nome", "address" => utf8_encode("$endereco") ) ); $this->requestType("POST"); $this->setMetodo('messages'); return $this->exec(); } return false; } function baixarMidia() { if (in_array($this->getType(), ['location', 'contacts', 'text'])) { return true; } $name = $this->getId(); $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->requestType("GET"); $this->setMetodo('media/' . $name); $pathfile = $this->storage . $name; $retorno = $this->exec(); file_put_contents($pathfile, $retorno); if (file_exists($pathfile)) { return true; } } return false; } /** * Profile WhatsApp * @return string */ public function getProfile() { return $this->hook['contacts'][0]['profile']['name']; } /** * Phone WhatsApp * @return string */ public function getPhone() { return $this->hook['contacts'][0]['wa_id']; } /** * Returns the type of the message * @return string|boolean */ public function getType() { if ($this->hook) { 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 $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()) { if ($this->getType() == 'text') { return $this->hook['messages'][0]['id']; } return $this->hook['messages'][0][$this->getType()]['id']; } return false; } /** * Returns the (text, body) of the message * @return string|boolean */ public function getIsValidMessage() { return $this->hook['contacts']; } /** * Returns the (text, body) of the message * @return string|boolean */ public function getMessage() { if ($this->hook['messages'][0]['interactive']) { if ($this->hook['messages'][0]['interactive']['list_reply']) { $id = $this->hook['messages'][0]['interactive']['list_reply']['id']; if (strpos($id, 'P') === 0) { return $this->hook['messages'][0]['interactive']['list_reply']['description']; } return $this->hook['messages'][0]['interactive']['list_reply']['title']; } else { return $this->hook['messages'][0]['interactive']['button_reply']['title']; } } $message = $this->hook['messages'][0]['text']['body']; return ($message ? $message : false); } public function setMessage($msg) { $this->hook['messages'][0]['text']['body'] = $msg; } /** * 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['messages'][0]['location'][strtolower($type)]; if ($geolocation) { return $geolocation; } return false; } public function retornaTituloDocument() { if ($this->hook['messages'][0]['document']) { return $this->hook['messages'][0]['document']['filename']; } return null; } }