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>&nbsp;</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

Você gostou? Comente no fórum!

Mais recentes em PHP

Classe para controle de banco de dados.
Por Pinguim - Classe para facilitar a manipulação de banco de dados...
Mail injection em php
Por Micox - What??!?...
Zend frameworks - o inicio
Por LeandroBarral - Primeiros passos.....
Classe de conexão com mysql
Por Carutcho - Pô esses dias passei aqui no forum de php pra dar uma...
Decimal para hexadecimal
Por dragun - Exemplo de função recursiva...

Ver mais Artigos de PHP.

Ver e retirar outras dúvidas no fórum Webly.

Alguns Direitos Reservados | RSS | O Fórum

Webly Portal e Fóruns - Internet + Humana | Design by ArthurHenrique.com