Hoje veremos como integrar aplicações web com a rede de serviços mobile.
Como ja foi visto antes em http://richard.brochini.com/?p=248, podemos usar a API do Bluevia para integrar várias linguagens, então por que não integrá-la usando uma linguagem web como o PHP para fazer coisas mais legais nos meus programas?
Antes de começar, precisamos escolher quais tecnologias usar, e neste caso vamos usar php5+zend, usando as classes que a própria bluevia disponibiliza.
Para a parte de SO estou utilizando uma dist Ubuntu e para web server, utilizaremos o apache serve.
Vamos dividir nosso sistema em duas partes: uma de envio e outra de leitura. Assim teremos dois processos separados e isso nos permite receber e enviar SMS’s ao mesmo tempo.
Para a leitura criaremos um arquivos chamado receber.php, onde irá receber todos os SMS’s e gravar em um arquivo chamado temp dentro do nosso servidor. Nesse caso estou gravando dentro desse arquivo, mas nada impede de alterar o fonte para gravar dentro de um BD ou algo do tipo.
Arquivo receber.php
Primeiro importamos as classes e incluímos o zend framework:
set_include_path(‘projeto/bluevia/ZendFramework-1.11.11/library’);
include_once “src/BlueviaClient.php”;
Depois criamos o arquivo para escrita:
$file = fopen (“temp”, “a”);
Agora iniciamos as classes e passamos a chaves de acesso do Bluevia:
$mode= BlueviaClient_Api_Constants::LIVE_MODE;
$application_context = array(
‘app’ => array(
‘consumer_key’ => ‘xxxxxx’,
‘consumer_secret’ => ‘xxxxxx’
));
$bv = new BlueviaClient($mode,$application_context);
$sms = $bv->getService(‘SmsMo’);
Definimos nosso shortcode, responsável por identificar nossa aplicação dentro da rede:
$shortcode = “xxxx”;
Agora fazemos o loop para ficar “aguardando” os sms’s chegarem e logo em seguida guardar o conteúdo deles no arquivo temp:
while(true){
try{
$msg = $sms->getMessages($shortcode);
if($msg!=”){
$temVars = $msg->receivedSMS->receivedSMS->message.”-”.$msg->receivedSMS->receivedSMS->originAddress->phoneNumber.”\r\n”;
while(true){
if(is_writable(temp)){
echo $temVars;
fwrite($file,$temVars);
break;
}
}
}
}catch(Exception $e) {
echo “erro “.$e->getMessage();
}
sleep(1);
}
fclose($file);
Agora precisamos deixar rodando dentro do Ubuntu como um processo, e neste caso usei esse comando:
var/usr/php receber.php &
Agora que já estamos recebendo, vamos enviar. Para isso criamos o arquivo enviar.php.
O início se parece muito com o outro que foi feito, inclui as classes e estancia elas:
$oldpath = set_include_path(‘.:/home/tecnomancher/projeto/bluevia/ZendFramework-1.11.11/library’);
include_once “src/BlueviaClient.php”;
$mode= BlueviaClient_Api_Constants::LIVE_MODE;
$application_context = array(
‘app’ => array(
‘consumer_key’ => ‘xxxxxx’,
‘consumer_secret’ => ‘xxxxx’
),
‘user’ => array(
‘token_access’ => ”,
‘token_secret’ => ”
)
);
$bv = new BlueviaClient($mode,$application_context);
$application_context = array(
‘app’ => array(
‘consumer_key’ => ‘xxxxx’,
‘consumer_secret’ => ‘xxxxxx’
),
‘user’ => array(
‘token_access’ => ‘xxxxxxxxxxxxx’,
‘token_secret’ => ‘xxxxxxxxxxxxx’
)
);
E para enviar basta passar as infos para a classe BlueviaClient, e tratar os erros:
$bv = new BlueviaClient($mode,$application_context);
if ($bv){
$smsMT = $bv->getService(‘SmsMT’);
if ($smsMT){
$smsMT->addRecipient(“551199732787″); // numero com 55 DD CEL
$smsMT->setMessage(“teste de envio olha eu aki!!”);
try{
$result = $smsMT->send();
print “Sms MT API\n”;
print “Send SMS\n”;
if($result) {
print “Sms ID “.$result.”\n”;
}
} catch (Exception $e) {
print “Sms MT\n”;
print “Send SMS\n”;
print “Exception sending SMS: “.$e->getMessage().”\n”;
}
print “Request “.$bv->getLastRequest().”\n”;
print “Response “.$bv->getLastResponse().”\n”;
try {
$delivery_status = $smsMT->getDeliveryStatus($result);
print “Delivery status\n”;
print “Phone number “.$delivery_status->smsDeliveryStatus->smsDeliveryStatus[0]->address->phoneNumber.”\n”;
print “Delivery status “.$delivery_status->smsDeliveryStatus->smsDeliveryStatus[0]->deliveryStatus.”\n”;
} catch (Exception $e) {
print “Delivery status\n”;
print “Exception retreiving the SMS delivery status: “.$e->getMessage().”\n”;
}
unset($smsMT);
}
}
Notem que a forma com que tratamos os erros nesse caso, foi seguindo os conceitos de OO dentro do PHP5.
Podemos facilmente adaptar esse fonte, para ler uma lista de celulares e os textos de dentro de um arquivo ou algo do tipo.
Desenvolvimento





