Ir para conteúdo
Fórum Script Brasil
  • 0

Mensagens Para Celular


Diogo_RS

Pergunta

Gostaria de compartilhar com as pessoas que freqüentam este fórum, o trabalho que venho tentando desenvolver. As páginas de operadoras de telecomunicações permitem que o internauta envie mensagens SMS para celular. Existe uma página de um cara que juntou códigos através de PHP e permitiu que as pessoas enviem SMS através de sua página. Veja você mesmo em http://www.biasoli.com ... Resultado: o cara tem mais de 3000 acessos por dia!

Minha proposta é reunir conhecimento para que possamos desenvolver este código em PHP. Já falei com este "Biasoli", mas o cara não abre a boca pra falar sobre isso! A única coisa que consegui descobri é que ele usa Soquetes, assim o envio torna-se possível. Já tentei fazer um "POST" na página do Biasoli para enviar as mensagens, mas até isso ele conseguiu bloquear.. aparece uma mensagem "Você está tentando enviar mensagens de fora do Biasoli.com e isso não é permetido".

Aqui no ScriptBrasil existem códigos que usam sistema de e-mail para enviar as mensagens, mas são poucos os celulares que possuem o serviço de e-mail ativado.

Se vocês baixarem o "Scoop 2004", script para mIRC, em http://www.scoop.com.br, irão encontrar nos aliases um código para enviar SMS, mas não é em PHP. Pelo menos serve de ponta pé inicial para nosso trabalho. Teríamos que tentar converter...

Já encontrei em outros lugares alguns codigos "iniciais" como este:

----------------------------------------------------------------

NbParams 4

%prefixo : Prefixo ou codigo de area (51,53,54,55)

%telefone : fone do destinatario

%de : Remetente

%Message Size=150 Convert : Texto a enviar Ex: "Ola Joao"

SetCookie 1 www.clarodigital.com.br-/-ASPSESSIONIDGGQQQJRO=GGBNIBMCHHFEOAHJJOIJNPAG

PostURL http://www.claroonline.com.br/submitsms.asp

PostData sender=\%de%&pre1=\%prefixo%&min=\%telefone%&msg=\%Message%

Referer http://www.claroonline.com.br/submitsms.asp

----------------------------------------------------------------

Bom, quem estiver interessado, ajude neste fórum! Temos muito que pesquisar e trabalhar!

Saudações, Diogo.

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

hehehe

e ae cara, beleza?

Vou te dizer uma coisa.. o biasoli é muito gente boa.. eu falava no icq com ele todos os dias..

ele até me explicou como montou tudo aquilo lá..

você nem imagina a mão de obra!

Eu até ia montar um esquema parecido com aquele dele, mas em asp. aí, navegando na net, achei um programa, o smsbr, que permite o envio de mensagems sms pra celular. Depois disso.. desisti da idéia..

Mas o interessante, é que no programa, tem um arquivo.. operadoras. e nesse arquivo, ele mostra TODOS os dados de TODAS as operadoras!

Mostra a URL usada para enviar a mensagem, a URL que ele usa para buscar a imagem de confirmação, o endereço de post, e tudo mais!

facil, né?

Mas eu parei com a idéia, porque, para funcionar 100%, teriam varias variaveis envolvidas.. hehe

Uma delas, é a codificação dos celulares. Teria que fazer uma função proibindo alguns caracteres, permitindo no maximo 250 caracteres, e muitas outras coisas.. bem complexo mesmo.

Isso lhe ajuda?

NOME=VIVO-RS

DDD=51,53,54,55

MAIN_URL=http://www.vivo-rs.com.br/consoles/04b.asp

POST_URL=http://www.vivo-rs.com.br/aviso/aviso_envia.asp

POST_REFERER=MAIN_URL

POST_BODY=ddd=<ddd>&NumeroMovel=<ddd><fone>&remetente=<sender>&msg=<mesg>&emoticons=&caracteres=<char_rest>&temp=&check=<img_code>&SuportaCookies=true

#VAL_STR=<span class="fonteconsole">&nbsp;

#VAL_STR=

IMG_URL=http://www.vivo-rs.com.br/consoles/04b_img.asp

CHECK_STR=em breve estaremos enviando sua mensagem

MESG_SIZE=

[2]

NOME=VIVO-SP

DDD=11,12,13,14,15,16,17,18,19

MAIN_URL=http://www.torpedoinfo.com.br

POST_URL=http://www.torpedoinfo.com.br/submit.asp

POST_REFERER=MAIN_URL

POST_BODY=INAPPLICATION=1&msg_total=<mesg>&totalChars=<char_used>&Check=yes&pre1=<ddd>&min=<fone>&msg=<mesg>&ENDOFTHETEXTISHERE=1&sender=<sender_fone>&callback=<sender>&totalCounter=<char_rest>&x=47&y=8

VAL_STR=

IMG_URL=

CHECK_STR=mensagem foi encaminhada

MESG_SIZE=

eu tenho essas informações de todas as operadoras possíveis..

Mas nunca tive aquela vontade de criar algo.

Boa sorte aí..

Ah.. o BIASOLI não faz nenhum milagre, ele apenas conseguiu essas informações que eu tenho, e juntou com um form..

facil, né?

t+

Link para o comentário
Compartilhar em outros sites

  • 0

o programinha aqui, funciona para todas as operadoras sim..

aqui pra vivo-rs funciona legal..

mas na hora do envio, ele diz: confirmação não encontrada, mas a mensagem vai do mesmo jeito!

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Galera !!!

acho que este sistema não está funcionando perfeitamente ! Pelo menos do meu celular Vivo- SP não funciona ! Ele manda a msg mas não chega !

Caso alguém saber o por que me da uma toque !!

ATT:kadu

Link para o comentário
Compartilhar em outros sites

  • 0

qual sistema que não esta funcionando.. ?

num sei.. mas pra vivo-rs, ele envia normal..

Link para o comentário
Compartilhar em outros sites

  • 0

vocês tão tentando enviar de onde? com qual programa?

qual sistema não funciona?

quer que eu faça um teste? me manda uma pm dizendo o celular, com o ddd, que eu tento enviar..

t+

Link para o comentário
Compartilhar em outros sites

  • 0

dark0

Verdade cara! O Biasoli é muito gente boa... eu ainda falo com ele... no início da página (em 2002) ele contava e dava umas dicas sobre como fez...

Mas tipow... já que ele te explicou, podia contar pra nós ae né! biggrin.gif

Na boa, to disposto a enfrentar toda a mão de obra! A idéia é muito bacana!

Eu já havia baixado esse programa SMSBR e vi aqueles arquivos com os detalhes das operadoras... foi de lá que eu volei aquele código da claro digital no início do fórum... é massa... tenho certeza que vão ser muito úteis no trabalho!

Falows!!!

Link para o comentário
Compartilhar em outros sites

  • 0

hum..

olha.. eu acho que isso aí vai ser extremamente complexo!

hehe

Mas eu tinha um projeto, de configurar o ICQ do linux, para que.. quando recebesse qualquer mensagem, auto-enviasse para o celular. meus amigos tavam à frente disso. mas depois eu saí do grupo deles.. e não sei que fim levou.

Mas olha só..

você vai ter que montar um form basico, fazer as verificações de cada celular.. (limitação de caracteres. maximo de caractares, quais caracteres são validos, etc), acho que pra achar isso, você vai ter que ir nas paginas das operadoras e procurar nos fontes.. (ou na do biasoli mesmo)

depois, que fizer a validação.. você vai ter que conseguir pegar a imagem que a operadora coloca lá.. e enviar a confirmação., junto com a mensagem e numero.

Link para o comentário
Compartilhar em outros sites

  • 0

é isso aí

é isso que o biasoli faz.

a duvida era:

como descobrir o post das operadoras?

coisa que no smsbr tá de mão beijada..

mas você tem que ver o esquema de caracteres

t+

Link para o comentário
Compartilhar em outros sites

  • 0

Mas tenho certeza que para Celular VIVO-SP vai ser muito dificil alguém descobrir ! caso alguém consiga descobrir posta ai !!

PS:Sobre a mensagem que me mandou no meu Celular ainda não chegou !em nenhum dos dois Celulares !!

ATT:KADU

Link para o comentário
Compartilhar em outros sites

  • 0

Ai pessoal uma class em PHP para enviar SMS!!!

<?

/*

* Exemplo de uso:

*   include("class.sms.php");

*   $sms = new SMS();

*   // Envia uma mensagem p/um celular da Amazônia 

*   $sms->envia("amazonia", "96", "99714321", "Fulano", "Teste do PHP-SMS", $resposta);

*   echo "$resposta<br>\n";

*/

class SMS {

  // Vetor com as mensagens de erro padrão que serão exibidas.   

  var $vresposta;

  var $HTTPHead;

  var $HTTPBody;

 

  /**

   * SMS::SMS()

   *   Construtor da Classe.

   */

  function SMS() {

    // Inicializa o vetor com as mensagens de erro padrão

    $this->vresposta['manutencao'] = "Não foi possível enviar a mensagem pois o sistema encontra-se em manutenção.";

    $this->vresposta['naoassinante'] = "Não foi possível enviar a mensagem pois o destinatário não está habilitado para receber mensagens da Internet.";

    $this->vresposta['desconhecido'] = "Não foi possível enviar a mensagem.";

    $this->vresposta['repetido'] = "Erro: Mensagem já enviada anteriormente.";

    $this->vresposta['sucesso'] = "Mensagem enviada com sucesso!";

  } 

  /**

   * SMS::envia()

   *   Método que envia mensagem. Conforme a operadora, chama o método apropriado.

   *   Retorna verdadeiro caso envie a mensagem com sucesso, ou falso, caso contrário.

   * @param $operadora Código da operadora, 1 para Amazonia Celular e 2 para NBT

   * @param $ddd Código de área para o DDD, sem o zero no início.

   * @param $fone Número do Celular de destino

   * @param $nome Nome do remetente

   * @param $msg Mensagem a ser enviada

   * @param $reposta Mensagem de retorno da função

   * @return Booleano que indica se a mensagem pôde ou não ser enviada.

   */

  function envia($operadora, $ddd, $fone, $nome, $msg, &$resposta) {

    if (!eregi('^[0-9]{2}$', $ddd)) {

      $resposta = "Número DDD inválido!";

      return false;

    }

    if (!eregi('^[0-9]{8}$', $fone)) {

      $resposta = "Número de telefone inválido!";

      return false;

    }

    if (trim($msg) == '') {

      $resposta = "Mensagem vazia!";

      return false;

    }   

    if ($operadora == "amazonia" || $operadora == "telemig") {

      return $this->_enviaAmazoniaTelemig($ddd, $fone, $nome, $msg, $resposta, $operadora);

    } elseif ($operadora == "nbt" || $operadora == "tco") {

      return $this->_enviaNBTTCO($ddd, $fone, $nome, $msg, $resposta);

    } elseif ($operadora == "oi") {

      return $this->_enviaOi($ddd, $fone, $nome, $msg, $resposta);

    } elseif ($operadora == "tess") {

      return $this->_enviaTess($ddd, $fone, $nome, $msg, $resposta);         

    } else {

      $resposta = "Erro: Operadora desconhecida.";

      return false;

    }

  }

  function _enviaAmazoniaTelemig($ddd, $fone, $nome, $msg, &$mensagem, $operadora) {

    if ($operadora == "amazonia") $cod_op = 2;

    elseif ($operadora == "telemig") $cod_op = 1;

    // Monta o vetor com os mesmos elementos do formulário de

    // envio de mensagens da página da Amazônia/Telemig Celular.   

    $postData = array("operadora" => $cod_op, // 1 = Telemig, 2 = Amazonia

                      "servico" => "3", // Valor fixo p/a Amazonia

                      "totalChars" => 0,

                      "msg_total" => "",

                      "Tel_Orig" => "",

                      "DDD" => $ddd,

                      "Tel_Dest" => $fone,

                      "Nome_Orig" => $nome,

                      "Mensagem" => $msg,

                      "Image" => "Submit" // Valor fixo p/a Amazonia

                     );

    // Chama o método que faz a requisição HTTP de POST, e obtem a resposta do servidor.

    // A resposta desse método é um vetor de duas posições, onde a primeira é o cabeçalho

    // HTTP e a segunda é o corpo da página

    $this->_http("http://wa16.waura.com.br/cgi-bin/waura.exe", "POST", "", $postData);   

   

    // Elimina as tags e os retornos de linha do texto da página HTML

    $resposta = str_replace("\r\n", "", strip_tags(trim($this->HTTPBody)));

    // Verifica se existe a string de confirmção de envio da mensagem no texto da página de resposta

    if (!eregi("sua mensagem foi encaminhada", $resposta)) {

      // Verifica qual foi a mensagem de erro da página

      if (eregi('manutenção', $resposta)) {

        $mensagem = $this->vresposta['manutencao'];

        return false;

      } elseif (eregi('não é um assinante', $resposta)) {

        $mensagem = $this->vresposta['naoassinante'];

        return false;

      } else {

        $mensagem = $this->vresposta['desconhecido'];

        return false;

      }

    } else {

      $resposta = $this->vresposta['sucesso'];

      return true;

    }

  }

 

  function _enviaOi($ddd, $fone, $nome, $msg, &$mensagem) {

    $postData = array(//"sms" => "ok",   

                      "urlfrom" => "/portal2/site/planos_e_servicos/oi_torpedo.jsp",

                      "ddd" => $ddd,

                      "numero" => $fone,

                      "texto" => $msg

                     );

    $this->_http("http://www.oi.com.br/portal2/site/oipessoal/send_sms.jsp", "POST", "", $postData);

    $resposta = str_replace("\r\n", "", strip_tags(trim($this->HTTPBody)));   

    // Verifica se existe a string de confirmção de envio da mensagem no texto da página de resposta

    if (!eregi("sua mensagem foi enviada com sucesso", $resposta)) {

      $mensagem = $this->vresposta['desconhecido'];

      return false;   

    } else {

      $mensagem = $this->vresposta['sucesso'];

      return true;

    }

  } 

  function _enviaNBTTCO($ddd, $fone, $nome, $msg, &$mensagem) {

    $postData = array("co_ddd" => $ddd,

                      "nu_celular" => $fone,

                      "ds_mensagem1" => $msg,

                      "nu_caracteres" => 50,

                      "no_origem" => $nome,

                      "nu_origem" => "",

                      "ds_email_confirma" => "",

                      "co_ddd_confirma" => "",

                      "nu_celular_confirma" => "",

                      "autorizacao" => "",

                      "Submit2" => "Enviar &raquo;"

                     );

    // Para a NBT é preciso fazer duas requisições, a primeira é somente para poder obter o

    // cookie com o identificador da sessão.

    $this->_http("http://www.tco.net.br/ecelular/homeecelular.asp");

    //$this->_gravaArq($this->HTTPBody, "conteudo.txt");

    //$this->_p($this->HTTPHead);

    $vcookie = $this->_pegaCookie($this->HTTPHead);

    //$this->_v($vcookie);

    $this->_http("http://www.tco.net.br/ecelular/homeecelular.asp", "POST", "Referer: http://www.tco.net.br/ecelular/homeecelula...r\nCookie: {$vcookie[1]}={$vcookie[2]}\r\n", $postData);

    $resposta = str_replace("\r\n", "", strip_tags(trim($this->HTTPBody)));

    if (!eregi("mensagem processada", $resposta)) {

      if (eregi('manutenção', $resposta)) {

        $mensagem = $this->vresposta['manutencao];

        return false;

      } elseif (eregi('não está cadastrado', $resposta)) {

        $mensagem = $this->vresposta['naoassinante'];

        return false;

      } elseif (eregi('mensagem já enviada', $resposta)) {

        $mensagem = $this->vresposta['repetido'];

        return false;

      } else {

        $mensagem = $this->vresposta['desconhecido'];

        return false;

      }

    } else {

      $mensagem = $this->vresposta['sucesso'];

      return true;

    }

  }

 

  function _enviaTess($ddd, $fone, $nome, $msg, &$mensagem) {

    $postData = array("DDD" => $ddd,

                      "Celular" => $fone,

                      "Mensagem" => $msg,

                      "SeuNome" => $nome,

                      "SeuDDD" => "",

                      "SeuTelefone" => "",

                      "submit" => "Enviar"

                     );   

    $this->_http("http://www.e-tess.com.br/smsweb/smsSubmitTess.asp", "POST", "Referer: http://www.tess.com.br/clientes/home/\r\n", $postData);

    $resposta = str_replace("\r\n", "", strip_tags(trim($this->HTTPBody)));

    if (!eregi("enviada com sucesso", $resposta)) {

      $mensagem = $this->vresposta['desconhecido];

      return false;

    } else {

      $mensagem = $this->vresposta['sucesso'];

      return true;

    } 

  }

 

  /**

   * SMS::_http()

   *   Método que implementa uma requisição HTTP. 

   *   Para mais detalhes, visite o site do autor

   *   da função, em http://www.spencernetwork.org/memo/tips-3.php 

   * 

   * @param $url Endereço da página que está sendo requisitada.

   * @param $method Método HTTP da requisição (GET, POST, etc)

   * @param $headers Headers adicionais da requisição (opcional)

   * @param $post Vetor com as variáveis, e seus valores, que serão

   *              submetidas, caso o método seja POST.

   * @return Retorna um vetor com duas posições com a resposta da

   *         requisição, onde a primeira posição é o Header HTTP

   *         e a segunda é o texto da página requisitada.

   */

  function _http($url, $method="GET", $headers="", $post=array("")) {

    // Separa as partes da URL

    $URL = parse_url($url);

    if (isset($URL['query])) {

      $URL['query'] = "?".$URL['query'];

    } else {

      $URL['query'] = "";

    }

    // Verifica se foi informado a porta. Se não, atribui a porta padrão HTTP (80)

    if (!isset($URL['port'])) $URL['port'] = 80;

    // Começa a montar a string com a requisição HTTP

    $request  = $method." ".$URL['path'].$URL['query']." HTTP/1.0\r\n";

    $request .= "Host: ".$URL['host']."\r\n";

    $request .= "User-Agent: PHP/".phpversion()."\r\n";

    if (isset($URL['user']) && isset($URL['pass'])) {

      $request .= "Authorization: Basic " . base64_encode($URL['user'] . ":" . $URL['pass']) . "\r\n";

    }

    $request .= $headers;

    // Se o método da requisição for POST, acrescenta à requisição os elementos do

    // vetor ($postdata) com os as variáveis e seus valores, passado como parâmetro para o método.

    if (strtoupper($method) == "POST") {

      while (list($name, $value) = each($post)) {

        $POST[] = $name . "= . urlencode($value);

      }

      $postdata = implode("&", $POST);

      $request .= "Content-Type: application/x-www-form-urlencoded\r\n";

      $request .= "Content-Length: " . strlen($postdata) . "\r\n";

      $request .= "\r\n";

      $request .= $postdata;

    } else {

      $request .= "\r\n";

    }

    // Abre uma conexão com o host especificado

    $fp = fsockopen($URL['host], $URL['port']);

    if (!$fp) {

      die("Não foi possível estabelecer uma conexão com o servidor.\n");

    }   

   

    //$this->_p($request);

    // Submete a requisição

    fputs($fp, $request);

    $response = "";

    while (!feof($fp)) {

      $response .= fgets($fp, 4096);

    }

    fclose($fp);

    $DATA = split("\r\n\r\n", $response, 2);

    $this->HTTPHead = $DATA[0];

    $this->HTTPBody = $DATA[1];   

    return $DATA;

  }

  function _pegaCookie($head) {

    $head = str_replace("\r\n", "", $head);

    eregi('Set-Cookie: ([a-z]+)=([a-z]+);', $head, $vcookie);

    return $vcookie;

  }

  function _v($v) {

    echo "<pre>";

    print_r($v);

    echo "</pre>";

  }

  function _p($s) {

    echo "<pre>$s</pre>";

  } 

 

  function _gravaArq($texto, $caminhoArq) {

    if (!is_file($caminhoArq)) {

      return false;

    }

    $parq = fopen($caminhoArq, 'a+'); 

    fwrite($parq, "$texto\r\n");

    fclose($parq);

  }

 

}

?>

Original

Link para o comentário
Compartilhar em outros sites

  • 0

Boa Gladisson!!!

Minha nova proposta é a seguinte...

Se através do site Biasoli.com podemos enviar mensagens para boa parte das operadoras disponíveis, a única coisa que podíamos fazer era "dar um Post" na página do Biasoli através de um formulário, certo??? Errado! Através desta idéia irá aparecer uma mensagem "Você está tentando enviar mensagens de fora do Biasoli.com e isto não é permitido". Acredito que este "Sistema de Segurança" use cookies... sendo assim, podemos usar o código que nosso amigo Glaidisson mandou... nele é mostrada uma maneira de "quebrar" um cookie de uma operadora. Teríamos que pegar este código como modelo para mandar através do Biasoli... é claro, se ele usar cookies... smile.gif

De momento... era isso!

Abraços à todos!

Diogo

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...