├── .codeclimate.yml ├── teste.php ├── README.md └── TotalVoiceAPI.class.php /.codeclimate.yml: -------------------------------------------------------------------------------- 1 | --- 2 | engines: 3 | duplication: 4 | enabled: true 5 | config: 6 | languages: 7 | - php 8 | fixme: 9 | enabled: true 10 | phpmd: 11 | enabled: true 12 | ratings: 13 | paths: 14 | - "**.php" 15 | exclude_paths: [] 16 | -------------------------------------------------------------------------------- /teste.php: -------------------------------------------------------------------------------- 1 | debugOn(); 9 | 10 | $api->returnAssoc(); 11 | 12 | //print_r($api->enviaSMS("**********", "Esta é uma mensagem de testes")); 13 | 14 | 15 | //print_r($api->enviaTTS("**********", "Isto é um texto falado")); 16 | 17 | 18 | //print_r($api->enviaAudio("**********", "https://api.evoline.com.br/painel/demo-song.mp3")); 19 | 20 | 21 | print_r($api->enviaChamada("**********", "**********")); 22 | 23 | 24 | echo "\n"; 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TotalVoiceAPI-PHP (LEGADO) 2 | 3 | Nova Library [PHP Totalvoice](https://github.com/totalvoice/totalvoice-php) 4 | 5 | ## Como utilizar (how to) 6 | 7 | ```php 8 | debugOn(); //ativa o modo debug, printa todos os requests e responses 14 | 15 | /* configura o retorno dos metodos como um array associativo, exemplo: $retorno['msg'] */ 16 | $api->returnAssoc(); 17 | 18 | /* configura o retorno dos metodos como um objeto, exemplo: $retorno->msg */ 19 | //$api->returnObject(); //comportamento default 20 | 21 | //print_r($api->enviaSMS("**********", "Esta é uma mensagem de testes")); 22 | //print_r($api->enviaTTS("**********", "Isto é um texto falado")); 23 | //print_r($api->enviaAudio("**********", "http://fooooooo.bar/audio.mp3")); 24 | 25 | /* 26 | $dados = array(); 27 | 28 | $tts['mensagem'] = 'lendo texto 222'; 29 | $tts['velocidade'] = -2; 30 | $dados_tts['acao'] = 'tts'; 31 | $dados_tts['acao_dados'] = $tts; 32 | array_push($dados, $dados_tts); 33 | 34 | 35 | 36 | $audio['url_audio'] = 'http://www.totalvoice.com.br/central/ola_opcoes.mp3'; 37 | $audio['resposta_usuario'] = true; 38 | $dados_audio['acao'] = 'audio'; 39 | $dados_audio['acao_dados'] = $audio; 40 | array_push($dados, $dados_audio); 41 | 42 | 43 | $tts2['mensagem'] = 'Obrigado! aguarde nosso contato em ate 24 horas'; 44 | $tts2['velocidade'] = -2; 45 | $dados_tts2['acao'] = 'tts'; 46 | $dados_tts2['acao_dados'] = $tts2; 47 | array_push($dados, $dados_tts2); 48 | print_r($api->enviaComposto("48996281618", $dados, "4832830151")); 49 | */ 50 | 51 | print_r($api->enviaChamada("**********", "**********")); 52 | echo "\n"; 53 | ``` 54 | 55 | ## Pré requisitos 56 | 57 | - PHP deve estar compilado com a lib-curl 58 | 59 | 60 | ## Licença 61 | 62 | MIT 63 | -------------------------------------------------------------------------------- /TotalVoiceAPI.class.php: -------------------------------------------------------------------------------- 1 | accessToken = $accessToken; 12 | $this->assoc = $assoc; 13 | $this->debug = $debug; 14 | } 15 | 16 | public function debugOn() 17 | { 18 | $this->debug = true; 19 | 20 | } 21 | public function debugOff() 22 | { 23 | $this->debug = false; 24 | } 25 | 26 | //Todos os metodos retornam uma array associativa 27 | public function returnAssoc() 28 | { 29 | $this->assoc = true; 30 | } 31 | //Todos os metodos retornam uma objeto 32 | public function returnObject() 33 | { 34 | $this->assoc = false; 35 | } 36 | 37 | private function sendRequest($path, $method, $body=null) 38 | { 39 | if ($this->debug) { 40 | echo "Evoline Request: $path Method: $method Body: $body \n"; 41 | } 42 | $request = curl_init(); 43 | curl_setopt($request, CURLOPT_URL, "https://api.totalvoice.com.br".$path); 44 | curl_setopt($request, CURLOPT_RETURNTRANSFER, true); 45 | if ($body) { 46 | curl_setopt($request, CURLOPT_POST, true); 47 | curl_setopt($request, CURLOPT_POSTFIELDS, $body); 48 | } 49 | curl_setopt($request, CURLOPT_CUSTOMREQUEST, $method); 50 | curl_setopt($request, CURLOPT_HTTPHEADER, array('Access-Token: '.$this->accessToken)); 51 | $responseBody = curl_exec($request); 52 | if ($this->debug) { 53 | echo "Evoline Response: $responseBody \n"; 54 | } 55 | return json_decode($responseBody, $this->assoc); 56 | } 57 | 58 | /* CONTA */ 59 | public function consultaSaldo() 60 | { 61 | return $this->sendRequest('/saldo', 'GET'); 62 | } 63 | 64 | 65 | public function minhaConta() 66 | { 67 | return $this->sendRequest('/conta', 'GET'); 68 | } 69 | 70 | public function atualizaDadosConta($nome, $login, $senha, $cpfCnpj, $telefone) 71 | { 72 | $body = array(); 73 | if ($nome) { 74 | $body['nome'] = $nome; 75 | } 76 | if ($login != null) { 77 | $body['login'] = $login; 78 | } 79 | if ($senha != null) { 80 | $body['senha'] = $senha; 81 | } 82 | if ($cpfCnpj != null) { 83 | $body['cpf_cnpj'] = $cpfCnpj; 84 | } 85 | if ($telefone != null) { 86 | $body['telefone'] = $telefone; 87 | } 88 | return $this->sendRequest('/conta', 'PUT', json_encode($body)); 89 | } 90 | 91 | /* CHAMADA */ 92 | public function enviaChamada($origem, $destino, $gravarAudio=false, $binaOrigem=null, $binaDestino=null) 93 | { 94 | $body = array(); 95 | $body['numero_origem'] = $origem; 96 | $body['numero_destino'] = $destino; 97 | $body['gravar_audio'] = $gravarAudio; 98 | if ($binaOrigem != null) { 99 | $body['bina_origem'] = $binaOrigem; 100 | } 101 | if ($binaDestino != null) { 102 | $body['bina_destino'] = $binaDestino; 103 | } 104 | return $this->sendRequest('/chamada', 'POST', json_encode($body)); 105 | } 106 | 107 | 108 | public function cancelaChamada($chamadaId) 109 | { 110 | return $this->sendRequest("/chamada/$chamadaId", 'DELETE'); 111 | } 112 | 113 | public function statusChamada($chamadaId) 114 | { 115 | return $this->sendRequest("/chamada/$chamadaId", 'GET'); 116 | } 117 | 118 | public function relatorioChamadas($dataInicio, $dataFim) 119 | { 120 | return $this->sendRequest("/chamada/relatorio?data_inicio=$dataInicio&data_fim=$dataFim", 'GET'); 121 | } 122 | 123 | /* SMS */ 124 | public function enviaSMS($numeroDestino, $mensagem, $respostaUsuario=false, $multiSMS = false, $dataCriacao = null) 125 | { 126 | $body = array(); 127 | $body['numero_destino'] = $numeroDestino; 128 | $body['mensagem'] = $mensagem; 129 | $body['resposta_usuario'] = $respostaUsuario; 130 | $body['multi_sms'] = $multiSMS; 131 | $body['data_criacao'] = $dataCriacao; 132 | return $this->sendRequest('/sms', 'POST', json_encode($body)); 133 | } 134 | 135 | 136 | public function statusSMS($smsId) 137 | { 138 | return $this->sendRequest("/sms/$smsId", 'GET'); 139 | } 140 | 141 | public function relatorioSMS($dataInicio, $dataFim) 142 | { 143 | return $this->sendRequest("/sms/relatorio?data_inicio=$dataInicio&data_fim=$dataFim", 'GET'); 144 | } 145 | 146 | /* TTS */ 147 | public function enviaTTS($numeroDestino, $mensagem, $velocidade=0, $respostaUsuario=false, $bina = null) 148 | { 149 | $body = array(); 150 | $body['numero_destino'] = $numeroDestino; 151 | $body['mensagem'] = $mensagem; 152 | $body['velocidade'] = $velocidade; 153 | $body['resposta_usuario'] = $respostaUsuario; 154 | $body['bina'] = $bina; 155 | return $this->sendRequest('/tts', 'POST', json_encode($body)); 156 | } 157 | 158 | public function enviaComposto($numeroDestino, $dados, $bina) 159 | { 160 | $body = array(); 161 | $body['numero_destino'] = $numeroDestino; 162 | $body['dados'] = $dados; 163 | $body['bina'] = $bina; 164 | return $this->sendRequest('/composto', 'POST', json_encode($body)); 165 | } 166 | 167 | public function statusTTS($ttsIs) 168 | { 169 | return $this->sendRequest('/tts/' . $ttsIs, 'GET'); 170 | } 171 | 172 | public function relatorioTTS($dataInicio, $dataFim) 173 | { 174 | return $this->sendRequest("/tts/relatorio?data_inicio=$dataInicio&data_fim=$dataFim", 'GET'); 175 | } 176 | 177 | /* Audio */ 178 | public function enviaAudio($numeroDestino, $urlAudio, $respostaUsuario=false) 179 | { 180 | $body = array(); 181 | $body['numero_destino'] = $numeroDestino; 182 | $body['url_audio'] = $urlAudio; 183 | $body['resposta_usuario'] = $respostaUsuario; 184 | return $this->sendRequest('/audio', 'POST', json_encode($body)); 185 | } 186 | 187 | 188 | public function statusAudio($audioId) 189 | { 190 | return $this->sendRequest('/audio/' . $audioId, 'GET'); 191 | } 192 | 193 | public function relatorioAudio($dataInicio, $dataFim) 194 | { 195 | return $this->sendRequest("/audio/relatorio?data_inicio=$dataInicio&data_fim=$dataFim", 'GET'); 196 | } 197 | 198 | /* VERIFICAÇÃO */ 199 | public function enviaVerificacao($numeroDestino, $nomeProduto, $tamanho = 4, $isTTS = false) 200 | { 201 | $body = array(); 202 | $body['numero_destino'] = $numeroDestino; 203 | $body['nome_produto'] = $nomeProduto; 204 | $body['tamanho'] = $tamanho; 205 | $body['tts'] = $isTTS; 206 | return $this->sendRequest('/verificacao', 'POST', json_encode($body)); 207 | } 208 | 209 | /* VERIFICAÇÃO */ 210 | public function confirmaVerificacao($id, $pin) 211 | { 212 | return $this->sendRequest('/verificacao?id='.$id.'&pin='.$pin, 'GET'); 213 | } 214 | 215 | public function enviaBina($numero) 216 | { 217 | $body = array(); 218 | $body['telefone'] = $numero; 219 | return $this->sendRequest('/bina', 'POST', json_encode($body)); 220 | } 221 | 222 | public function validaBina($codigo, $telefone) 223 | { 224 | return $this->sendRequest('/bina?codigo='.$codigo.'&telefone='.$telefone, 'GET'); 225 | } 226 | 227 | public function removerBina($telefone) 228 | { 229 | return $this->sendRequest("/bina/".$telefone, "DELETE"); 230 | } 231 | } 232 | --------------------------------------------------------------------------------