Bom pessoal, o objetivo desse tutorial é ensinar a vocês como enviar SMS atraves de um script PHP usando um modem, ou seu aparelho de celular.
Neste tuto estou usando o programa de gateway OZEKI NG, que pode ser baixado e usado por 30 dias grátis.
Eu andei pesquisando e não encontrei muita coisa sobre o assunto, porém existem várias empresas que oferecem o serviço gateway de SMS e cobram cerca de 0,20 por mensagem enviada.
As operadoras de telefonia movel cobram R$ 0,50 centavos por dia, para você enviar ilimitadas mensagens resumindo você gastaria apenas R$ 15,00 por mês para enviar ilimitados SMS.
Para começar baixe o programa no site: Ozekisms
http://www.ozekisms.com/index.php?owpn=112
http://www.ozekisms.com/index.php?owpn=433&dpath=%2Fattachments%2F113%2Finstall_1327415285_OzekiNG-SMS-Gateway_4.2.5.zip&dname=Ozeki+NG+SMS+Gateway+v4.2.5&dsize=+%289.3+MB%29+
Em seguida instale o programa(não vou entrar em detalhes da instalação) pois é bem simples além de ter uma opção para detectar automaticamente seu dispositivo e a porta(ex. das portas COM1, COM2, COM3, COM4).
Após instalado você poderá acessar o gateway para fazer as configurações.
http://127.0.0.1:9501/
Você pode se certificar em qual porta seu dispositivo esta atraves do gerenciador de dispositivos do windows.
Apos configurado aguarde alguns minutos para o programa reconhecer o dispositivo e enviar as mensagens.
O proximo passo é criar um formulário e o script php que enviára as informações para o gateway.
Crie um formulário em HTML
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 | <html> <body> <h1>My SMS form</h1> <form method=post action='sendsms.php'> <table border=0> <tr> <td>Recipient</td> <td><input type='text' name='recipient'></td> </tr> <tr> <td>Message</td> <td><textarea rows=4 cols=40 name='message'></textarea></td> </tr> <tr> <td> </td> <td><input type=submit name=submit value=Send></td> </tr> </table> </form> <!-- This website uses Linkable Title Html And Php Widget v1.2.5 Wordpress plugin developed by PepLamb (PepLamb.com) --> <!-- START: Syntax Highlighter ComPress --> <script type="text/javascript"> SyntaxHighlighter.autoloader( 'applescript http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushAppleScript.js', 'actionscript3 as3 http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushAS3.js', 'bash shell http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushBash.js', 'coldfusion cf http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushColdFusion.js', 'cpp c http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushCpp.js', 'c# c-sharp csharp http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushCSharp.js', 'css http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushCss.js', 'delphi pascal pas http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushDelphi.js', 'diff patch http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushDiff.js', 'erl erlang http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushErlang.js', 'groovy http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushGroovy.js', 'java http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushJava.js', 'jfx javafx http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushJavaFX.js', 'js jscript javascript http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushJScript.js', 'perl pl http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushPerl.js', 'php http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushPhp.js', 'text plain http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushPlain.js', 'powershell ps http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushPowerShell.js', 'py python http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushPython.js', 'ruby rails ror rb http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushRuby.js', 'sass scss http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushSass.js', 'scala http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushScala.js', 'sql http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushSql.js', 'vb vbnet http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushVb.js', 'xml xhtml xslt html http://blog.fabianobento.com.br/wp-content/plugins/syntax-highlighter-compress/scripts/shBrushXml.js' ); SyntaxHighlighter.defaults['toolbar'] = false; SyntaxHighlighter.defaults['tab-size'] = 4; SyntaxHighlighter.all(); </script> <!-- END: Syntax Highlighter ComPress --> <script type='text/javascript'> /* <![CDATA[ */ var photocrati_ajax = {"url":"http://blog.fabianobento.com.br/photocrati_ajax","wp_site_url":"http://blog.fabianobento.com.br","wp_site_static_url":"http://blog.fabianobento.com.br"}; /* ]]> */ </script> <script type='text/javascript'> /* <![CDATA[ */ var userSettings = {"url":"/","uid":"1","time":"1388671874"};var commonL10n = {"warnDelete":"You are about to permanently delete the selected items.n 'Cancel' to stop, 'OK' to delete."};/* ]]> */ </script> <script type='text/javascript' src='http://blog.fabianobento.com.br/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,hoverIntent,utils,common,admin-bar&ver=3.8'></script> <script type='text/javascript' src='http://blog.fabianobento.com.br/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ajax/static/ajax.js?ver=3.8'></script> <script type='text/javascript' src='http://blog.fabianobento.com.br/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/frame_communication/static/frame_event_publisher.js?ver=3.8'></script> <div id="wpadminbar" class="nojq nojs" role="navigation"> <a class="screen-reader-shortcut" href="#wp-toolbar" tabindex="1">Skip to toolbar</a> <div class="quicklinks" id="wp-toolbar" role="navigation" aria-label="Top navigation toolbar." tabindex="0"> <ul id="wp-admin-bar-root-default" class="ab-top-menu"> <li id="wp-admin-bar-menu-toggle"><a class="ab-item" href="#" title="Menu"><span class="ab-icon"></span></a> </li> <li id="wp-admin-bar-wp-logo" class="menupop"><a class="ab-item" aria-haspopup="true" href="http://blog.fabianobento.com.br/wp-admin/about.php" title="About WordPress"><span class="ab-icon"></span></a><div class="ab-sub-wrapper"><ul id="wp-admin-bar-wp-logo-default" class="ab-submenu"> <li id="wp-admin-bar-about"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/about.php">About WordPress</a> </li></ul><ul id="wp-admin-bar-wp-logo-external" class="ab-sub-secondary ab-submenu"> <li id="wp-admin-bar-wporg"><a class="ab-item" href="http://wordpress.org/">WordPress.org</a> </li> <li id="wp-admin-bar-documentation"><a class="ab-item" href="http://codex.wordpress.org/">Documentation</a> </li> <li id="wp-admin-bar-support-forums"><a class="ab-item" href="http://wordpress.org/support/">Support Forums</a> </li> <li id="wp-admin-bar-feedback"><a class="ab-item" href="http://wordpress.org/support/forum/requests-and-feedback">Feedback</a> </li></ul></div> </li> <li id="wp-admin-bar-site-name" class="menupop"><a class="ab-item" aria-haspopup="true" href="http://blog.fabianobento.com.br/">Fabiano Bento</a><div class="ab-sub-wrapper"><ul id="wp-admin-bar-site-name-default" class="ab-submenu"> <li id="wp-admin-bar-view-site"><a class="ab-item" href="http://blog.fabianobento.com.br/">Visit Site</a> </li></ul></div> </li> <li id="wp-admin-bar-updates"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/update-core.php" title="1 Plugin Update"><span class="ab-icon"></span><span class="ab-label">1</span><span class="screen-reader-text">1 Plugin Update</span></a> </li> <li id="wp-admin-bar-comments"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/edit-comments.php" title="4 comments awaiting moderation"><span class="ab-icon"></span><span id="ab-awaiting-mod" class="ab-label awaiting-mod pending-count count-4">4</span></a> </li> <li id="wp-admin-bar-new-content" class="menupop"><a class="ab-item" aria-haspopup="true" href="http://blog.fabianobento.com.br/wp-admin/post-new.php" title="Add New"><span class="ab-icon"></span><span class="ab-label">New</span></a><div class="ab-sub-wrapper"><ul id="wp-admin-bar-new-content-default" class="ab-submenu"> <li id="wp-admin-bar-new-post"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/post-new.php">Post</a> </li> <li id="wp-admin-bar-new-media"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/media-new.php">Media</a> </li> <li id="wp-admin-bar-new-link"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/link-add.php">Link</a> </li> <li id="wp-admin-bar-new-page"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/post-new.php?post_type=page">Page</a> </li> <li id="wp-admin-bar-new-user"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/user-new.php">User</a> </li></ul></div> </li> <li id="wp-admin-bar-ngg-menu" class="menupop"><a class="ab-item" aria-haspopup="true" href="http://blog.fabianobento.com.br/wp-admin/admin.php?page=nextgen-gallery">Gallery</a><div class="ab-sub-wrapper"><ul id="wp-admin-bar-ngg-menu-default" class="ab-submenu"> <li id="wp-admin-bar-ngg-menu-overview"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/admin.php?page=nextgen-gallery">Overview</a> </li> <li id="wp-admin-bar-ngg-menu-add-gallery"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/admin.php?page=ngg_addgallery">Add Gallery / Images</a> </li> <li id="wp-admin-bar-ngg-menu-manage-gallery"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/admin.php?page=nggallery-manage-gallery">Manage Galleries</a> </li> <li id="wp-admin-bar-ngg-menu-manage-album"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/admin.php?page=nggallery-manage-album">Manage Albums</a> </li> <li id="wp-admin-bar-ngg-menu-tags"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/admin.php?page=nggallery-tags">Manage Tags</a> </li> <li id="wp-admin-bar-ngg-menu-display_settings"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/admin.php?page=ngg_display_settings">Gallery Settings</a> </li> <li id="wp-admin-bar-ngg-menu-other_options"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/admin.php?page=ngg_other_options">Other Options</a> </li></ul></div> </li></ul><ul id="wp-admin-bar-top-secondary" class="ab-top-secondary ab-top-menu"> <li id="wp-admin-bar-my-account" class="menupop with-avatar"><a class="ab-item" aria-haspopup="true" href="http://blog.fabianobento.com.br/wp-admin/profile.php" title="My Account">Howdy, Bento<img alt='' src='http://0.gravatar.com/avatar/cfa44b1884f20520e243ced33e679143?s=26&d=blank&r=G' class='avatar avatar-26 photo' height='26' width='26' /></a><div class="ab-sub-wrapper"><ul id="wp-admin-bar-user-actions" class="ab-submenu"> <li id="wp-admin-bar-user-info"><a class="ab-item" tabindex="-1" href="http://blog.fabianobento.com.br/wp-admin/profile.php"><img alt='' src='http://0.gravatar.com/avatar/cfa44b1884f20520e243ced33e679143?s=64&d=blank&r=G' class='avatar avatar-64 photo' height='64' width='64' /><span class='display-name'>Bento</span><span class='username'>fabiano</span></a> </li> <li id="wp-admin-bar-edit-profile"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-admin/profile.php">Edit My Profile</a> </li> <li id="wp-admin-bar-logout"><a class="ab-item" href="http://blog.fabianobento.com.br/wp-login.php?action=logout&_wpnonce=4fc0b78e9d">Log Out</a> </li></ul></div> </li></ul> </div> <a class="screen-reader-shortcut" href="http://blog.fabianobento.com.br/wp-login.php?action=logout&_wpnonce=4fc0b78e9d">Log Out</a> </div> </body> </html> |
Agora crie o arquivo sendsms.php
Em user e password são os dados que você configurou durante a instalação.
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 | <?php ######################################################## # Login information for the SMS Gateway ######################################################## $ozeki_user = "admin"; $ozeki_password = "abc123"; $ozeki_url = "http://127.0.0.1:9501/api?"; ######################################################## # Functions used to send the SMS message ######################################################## function httpRequest($url){ $pattern = "/http...([0-9a-zA-Z-.]*).([0-9]*).(.*)/"; preg_match($pattern,$url,$args); $in = ""; $fp = fsockopen("$args[1]", $args[2], $errno, $errstr, 30); if (!$fp) { return("$errstr ($errno)"); } else { $out = "GET /$args[3] HTTP/1.1rn"; $out .= "Host: $args[1]:$args[2]rn"; $out .= "User-agent: Ozeki PHP clientrn"; $out .= "Accept: */*rn"; $out .= "Connection: Closernrn"; fwrite($fp, $out); while (!feof($fp)) { $in.=fgets($fp, 128); } } fclose($fp); return($in); } function ozekiSend($phone, $msg, $debug=false){ global $ozeki_user,$ozeki_password,$ozeki_url; $url = 'username='.$ozeki_user; $url.= '&password='.$ozeki_password; $url.= '&action=sendmessage'; $url.= '&messagetype=SMS:TEXT'; $url.= '&recipient='.urlencode($phone); $url.= '&messagedata='.urlencode($msg); $urltouse = $ozeki_url.$url; if ($debug) { echo "Request: <br />$urltouse<br /><br />"; } //Open the URL to send the message $response = httpRequest($urltouse); if ($debug) { echo "Response: <br /><pre>". str_replace(array("<",">"),array("<",">"),$response). " |
“; }
return($response);
}
########################################################
# GET data from sendsms.html
########################################################
$phonenum = $_POST[‘recipient’];
$message = $_POST[‘message’];
$debug = true;
ozekiSend($phonenum,$message,$debug);
?>
Quando você enviar as mensagens elas apareceram na pasta Sent(enviadas).
Nos testes que fiz as primeiras mensagens que enviei levaram cerca de 5 minutos, e as seguintes foram cerca de 30 segundos, quando enviei mensagem para meu proprio numero recebi várias vezes ai tive que desconctar meu celular e plugar novamente para parar, e levaram mais 5 minutos para o programa reconhecer novamente quando conectei.
NO link abaixo tem maiores informações:
http://ozekisms.com/php-sms-api-asp-sms-api/index_p_php_q_ow_page_number_e_327opt.html
Fiz esse teste usando windows 7 32bit e um celular LG GM 600.
Lembre-se de instalar o driver do seu modem ou celular.
Claro que você poderá implementar para gravar em um banco de dados mysql, oracle, … conforme sua necessidade.
O que não agrada muito é o preço.
Em uma cotação que fiz obtive os valores e as licenças variam em quantidade de mensagens por minuto, dispositivo e usuários simultaneos, são 590 Euros a mais básica e 1790 euros uma mais avançada,e ainda tem alguns opcionais que podem ser adquiridos a parte.
Amigo, seria possivel usar um modem 3G usb nesse serviço? Grato.
Tarik, se o aplicativo(OZEKI NG) reconhecer o modem funciona normalmente.
preciso de sua ajuda para enviar sms pelo modem 3g tim.
Pode me ajudar?
Barbara, pode me dizer qual erro esta aparecendo?
Olá alguem conseguiu funcionar o OZEKI NG SMS usando android como modem, os tutoriais no youtube principalmente a parte de colocar o ip e usuario e senha fiquei confuso.
Se o aplicativo(OZEKI NG) reconhecer o modem funciona normalmente.
então man, e sem esse aplicativo deles que só dura 30 dias, tem como eu usar um um código em php ou java que reconheça minhas porta serial e que reconheça o Modem 3g, dai eu posso enviar pelo meu modem 3g sem internet , apenas com localhost, é possivel ? e sem esse programa q só dura 30 dias?
Você necessitará de gateway para o envio de SMS.