Fonte: tutorial de envio de SMS através do celular usando PHP - http://www.samuca.com/sms/enviando-sms-atraves-do-php.php
O autor (que eu suponho se chamar Samuel/Samuca) fez o tutorial "em um projeto recente, precisou enviar uma enorme quantidade de SMS, através do próprio sistema, e procurou a melhor forma, entenda por mais barata, de enviar minhas próprias mensagens através do sistema"
Ele ainda responde dúvidas na própria página do tutorial.
Para uma versão completa com imagens e tabelas certinhas, vá no site original.Descoberto via http://www.phpavancado.net/node/441
Como enviar SMS via Celular e PHP da forma mais barata
Objetivo desse tutorial
Ensinar, passo a passo, como configurar seu Telefone, e fazer um script PHP para enviar mensagens através do próprio telefone Celular.
Motivações para escrita desse tutorial
Em um projeto recente, precisei enviar uma enorme quantidade de SMS, através do próprio sistema, e procurei a melhor forma, entenda por mais barata, de enviar minhas próprias mensagens através do sistema.
Pré-requisitos:
- conhecimento em PHP
- conhecimento básico em windows
- um telefone que seja reconhecido no windows como GSM Modem.
Analise do problema.
Existem hoje no mercado, diversos Gateways SMS para envio de mensagem, porem, obviamente todos são pagos. Dois que eu procurei foram:
Human -
http://www.human.com.br
Bee Contact -
http://www.beecontact.com.br/br/home/index.htm
Analisando os dois procurados, esbarrei nos seguintes problemas:
- As mensagens são armazenadas em banco de dados próprios, pode não ser impeditivo para muitas pessoas, mas para meu projeto quanto mais sigilo melhor.
- O preço é 'compativel' com o preço normal de uma mensagem enviada, dependendo do plano que você escolher com sua operadora
A telefonia no Brasil:
É uma pena que a Anatel não faca nada para melhorar nossa vida, acontece que o envio de SMS no brasil é um dos mais caros do mundo, fora a burocracia para ter essa ferramenta. Por exemplo, nos gateways pesquisados, todos pediam um cadastro e motivo para que eles fossem encaminhados para a operadora, informando o porque estou utilizando essa funcionalidade
Plano escolhido:
Para o projeto, fui em todas as operadoras: Vivo, Claro, Oi e TIM. Como não tenho plano corporativo, a que mais me atendeu foi a Vivo, pelos seguintes motivos: Peguei o plano conta 350, cujas vantagens são:
100 SMS inclusos Incluso
300 SMS como 'beneficio' escolhido do plano Incluso
1000 SMS se enviados depois das 22:00 da noite, e até 7:00 da manha R$ 7.50 mês
Assinatura do plano R$ 155.00 mês
Total R$ 162.50 mês
Outro detalhe, peguei o aparelho que está sendo usado no tutorial por R$ 10, um nokia E51, excelente aparelho, que atendeu perfeitamente, porem se não tivesse pego esse telefone, eu ainda mandaria mensagens de vivo -> vivo por R$ 0,05 até o mês de julho.
Softwares necessários para a aplicação
A escolha do telefone
Resumidamente, o melhor telefone para essa aplicação, é qualquer um que seja reconhecido pelo Windows como Modem GSM, e que ele mesmo se recarregue pela USB (dessa forma você não precisará de deixar o telefone ligado na tomada). Os seguintes telefones foram testados, e funcionam perfeitamente para a solução:
Como saber se meu telefone é GSM Modem ?
Clique com o botão direito em Meu Computador > Propriedades > Aba Hardware > Gerenciador de Dispositivos
Se você ver uma imagem como essa abaixo, na parte de Modems, seu celular é reconhecido como Modem GSM
Existem vários tutoriais espalhados pela web, aqui trato apenas sobre a configuração no Nokia E51
Primeiro, instale o
Nokia PC Suite no seu computador, ATENÇÃO: não plugue o telefone ainda, porque senão vai dar problema de reconhecimento dos drivers no Windows
Após a instalação você pode até desinstalar o Pc Suite (Eu até recomendo, porque ele é chato demais, softwares da HP e da Nokia acham que você tem o computador apenas para usar o softwares deles).
Meu telefone já veio com o
Nokia PC Suite em um CD, só coloquei, rodei o
autorun, e escolhi a opção de instalar o
Nokia PC Suite, no meu caso o 6.84
Pronto, instalação concluída, após a instalar terminar, a tela 1 se abrirá, clique em avançar nas telas um e dois (isso se a tela dois aparecer com
Conexão a cabo selecionada. Conecte seu telefone
APENAS nesse momento, na tela 3, vai demorar um pouco, e aparecer a imagem 4, nela clique apenas em
Concluir
Conferindo se o telefone está instalado
Clique com o botão direito em Meu Computador > Propriedades > Aba Hardware > Gerenciador de Dispositivos
Se você ver uma imagem como essa abaixo, na parte de Modems, seu celular é reconhecido como Modem GSM
A imagem deve ser igual a de indentificação do telefone
Instalando o NowSMS para enviar as mensagens
Agora realmente começa o tutorial, é através desse programa, o
NowSMS Gateway, que pode ser encontrado facilmente na internet é que iremos comunicar nossa aplicação com o PHP.
Exemplo de chamada da função:
CODE
$x = SendSMS("127.0.0.1", 8800, "", "", $_POST['txtTELEFONE'], $_POST['txtMENSAGEM']);
echo $x;
Caso prefira, faça o download do arquivo:
CODE
<?PHP
/**
* Página de teste de Envio de SMS
* @author Samuel Aiala Ferreira <samuca@samuca.com>
* @version 1.0
* @package SMS
*/
if ($_POST['acao'] == 'sendsms')
{
$x = SendSMS("127.0.0.1", 8800, "", "", $_POST['txtTELEFONE'], $_POST['txtMENSAGEM']);
echo $x;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Envio de SMS</title>
</head>
<body>
<a href="http://www.samuca.com/sms/">Tutorial de envio de SMS</a>
<form name='frmSend' method='post'>
<input type='hidden' name='acao' value='sendsms'>
<table width="100%" style="border-collapse:collapse;" border="1">
<tr>
<td>Telefone:</td>
<td><input type="text" name="txtTELEFONE" value="+55XX88888888"></td>
</tr>
<tr>
<td>Mensagem:</td>
<td><textarea name="txtMENSAGEM" cols="60" rows="10" id="txtMENSAGEM"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Enviar SMS"></td>
</tr>
</table>
</form>
</body>
</html>
<?
/**
* Função que envia o SMS
* @return string Mensagem de Sucesso de Envio de SMS
* @param string $host Host onde foi instalado seu Now SMS
* @param string $port A Porta que você está usando
* @param string $username Pode deixar em branco
* @param string $password Pode deixar em branco
* @param string $phoneNoRecip Telefone, no formato +55[DDD sem o 0][Telefone, com 8 posições]
* @param string $msgText Mensagem que deseja enviar, limite em 160 caracteres, senão ele manda quantas ensagens necessárias para atingir o limite.
*/
function SendSMS ($host, $port, $username, $password, $phoneNoRecip, $msgText) {
$fp = fsockopen($host, $port, $errno, $errstr);
if (!$fp) {
echo "errno: $errno \n";
echo "errstr: $errstr\n";
return $result;
}
fwrite($fp, "GET /PhoneNumber=" . rawurlencode($phoneNoRecip) . "&Text=" . rawurlencode($msgText) . " HTTP/1.0\n");
echo $aux3;
if ($username != "") {
$auth = $username . ":" . $password;
echo "auth: $auth\n";
$auth = base64_encode($auth);
echo "auth: $auth\n";
fwrite($fp, "Authorization: Basic " . $auth . "\n");
}
fwrite($fp, "\n");
$res = "";
while(!feof($fp)) {
$res .= fread($fp,1);
}
fclose($fp);
return $res;
}
echo $x;
?>
d($fp,1);
}
fclose($fp);
return $res;
}
echo $x;
?>
Ao clicar em Enviar SMS, a página dá reload, e deve exibir a mensagem de que foi enviado com sucesso o SMS