This repository has been archived by the owner on Oct 6, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
TorpedusSMS.php
131 lines (102 loc) · 2.85 KB
/
TorpedusSMS.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php
/*
* classe de envio de SMS usando a solucao da Torpedus (www.torpedus.com.br)
*
* Desenvolvido por rod@wgo.com.br
* 15/08/2014
* WGO Telecom
*
*/
class TorpedusSMS {
/**
* Usuario da conta torpedus
*
* @var string
*/
protected $username;
/**
* Senha da conta torpedus
*
* @var string
*/
protected $password;
/**
* Endereco/URL principal de acesso ao webservice da torpedus
*
* @var string
*/
protected $endereco;
/**
* Endereco/URL final com os parametros GET para disparar o SMS
*
* @var string
*/
protected $url = '';
/**
* curl handler para a requisicao
*
* @var resource
*/
protected $curl = null;
/**
* tamanho maximo para a mensagem a ser enviada via SMS
*
* @var int
*/
const TAMANHO_MAXIMO_MENSAGEM = 304;
public function __construct($username, $password, $endereco = 'http://torpedus.com.br/sms/index.php?') {
$this->username = $username;
$this->password = $password;
$this->endereco = $endereco;
$this->curl = curl_init();
}
/**
* envia uma mensagem via SMS ao telefone celular do destinatario
* @param string $destinatario telefone do destinatario
* @param string $mensagem mensagem a ser enviada
* @throws Exception dispara excecao caso a mensagem a ser enviada possua tamanho superior a TAMANHO_MAXIMO_MENSAGEM
* @return bool true caso a mensagem seja disparada
*/
public function send_sms($destinatario, $mensagem) {
if(strlen($mensagem) > self::TAMANHO_MAXIMO_MENSAGEM) {
throw new Exception('Tamanho da mensagem nao pode ultrapassar '.self::TAMANHO_MAXIMO_MENSAGEM.' caracteres.');
}
return $this->exec($destinatario, $mensagem);
}
private function buildUrl($destinatario, $mensagem) {
$query = array(
'app' => 'webservices',
'u' => $this->username,
'p' => $this->password,
'ta' => 'pv',
'to' => $destinatario,
'msg' => $mensagem,
);
$this->url = $this->endereco.http_build_query($query);
}
private function buildCurlOptions() {
$options = array(
CURLOPT_URL => $this->url,
CURLOPT_RETURNTRANSFER => true,
);
return $options;
}
private function exec($destinatario, $mensagem) {
$this->buildUrl($destinatario, $mensagem);
$options = $this->buildCurlOptions();
curl_setopt_array($this->curl, $options);
$response = curl_exec($this->curl);
// verifica se houve erro ao executar curl
if($errno = curl_errno($this->curl)) {
throw new Exception(sprintf('curl error %d: %s', $errno, curl_error($this->curl)));
}
// execucao curl ok, verifica se a requisicao http tambem retorna OK
if(($httpCode = curl_getinfo($this->curl, CURLINFO_HTTP_CODE)) != '200') {
throw new Exception(sprintf('Response code of requested resource is %d and it *must* be 200', $httpCode));
}
return true;
}
public function __destruct() {
curl_close($this->curl);
}
} // TorpedusSMS