{"id":1826,"date":"2016-11-13T23:20:46","date_gmt":"2016-11-14T05:20:46","guid":{"rendered":"https:\/\/www.lastdragon.net\/?p=1826"},"modified":"2016-11-14T08:52:35","modified_gmt":"2016-11-14T14:52:35","slug":"titulo-pendiente","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=1826","title":{"rendered":"SMS Infraestructura V3"},"content":{"rendered":"<p>SMS INFRAESTRUCTURA como su nombre indica, crea una infraestructura para env\u00edo de mensajes de texto SMS , est\u00e1 pensando para construirla de manera econ\u00f3mica con terminales Android razonablemente baratas, mientras m\u00e1s terminales de Android tenga en su pool m\u00e1s r\u00e1pido podr\u00e1n  despacharse cientos o miles de mensajes. El uso m\u00e1s com\u00fan para este tipo de aplicaciones es env\u00edo de mensajes de falla de servidores. En programaci\u00f3n puede ser usado en el c\u00f3digo try catch para excepciones importantes como falla en la conexi\u00f3n de una base de datos, lectura de disco, error de red, ETC. En grupos sociales se puede usar como env\u00edo masivo de mensajes SMS por ejemplo el gobierno avisando de una alerta climatol\u00f3gica a sus ciudadanos. <\/p>\n<p><a href=\"https:\/\/www.lastdragon.net\/?p=695\">SMS INFRAESTRUCUTURA<\/a> ( <a href=\"https:\/\/www.lastdragon.net\/?p=695\">Ver articulo<\/a> )<\/p>\n<p>En el 2012 hab\u00eda escrito un App llamada SMS INFRAESTRUCTURA, no quede muy satisfecho ya que esta versi\u00f3n pronto dejo claro que amarra al programador a usar exclusivamente la base de datos MySQL, el APK del app al incluir drivers de conexi\u00f3n para la base de datos se vuelve a\u00fan m\u00e1s pesado por lo que quiere m\u00e1s CPU del celular, m\u00e1s RAM para ejecutarse y m\u00e1s espacio para almacenar el APK. Sin contar que la conexi\u00f3n a la DB no va cifrada.<\/p>\n<p><strong>SMS INFRAESTRUCTURA 2<\/strong><\/p>\n<p>Para solventar este problema la versi\u00f3n 2 hace uso de webservice SOAP, Esto consigui\u00f3 liberar el uso exclusivo de MySQL como DB pero involucra que cada lenguaje en el que se quiera trabajar deber\u00e1 escribir el webservice apropiado lo cual se complica un poco si se trata de SOAP. Por esta raz\u00f3n nunca se public\u00f3 esta versi\u00f3n en la Google Play Store<\/p>\n<p><strong>SMS INFRAESTRUCTURA 3<\/strong><\/p>\n<p>Para solventar los problemas que involucran los webservice con SOAP escrib\u00ed la nueva app para usar un sencillo API REST WebService que b\u00e1sicamente es recibir un bloque en JSON con GET y lo obtiene consultando una \u00fanica URL, este tipo de webservice es f\u00e1cilmente soportado por cualquier lenguaje de programaci\u00f3n. En algunos lenguajes como PHP construir el bloque JSON es cosa de 2 l\u00edneas de c\u00f3digo, las dem\u00e1s l\u00edneas de c\u00f3digo son para la consulta en la DB que podr\u00eda ser cualquiera soportado por PHP,Python,Ruby,ETC en el caso de escribir el webservice con C# o Java este podr\u00eda consultar DB como Oracle o SQL Server o incluso NoSQL sin mayor problema pues al final lo que vale para esta versi\u00f3n es el JSON <\/p>\n<p><strong>JSON para controlar el APP<\/strong><\/p>\n<p>En cada consulta que hace el APP al url espera recibir un JSON y es con este que sabe si debe enviar un SMS o no hacer nada cuando no hay SMS que enviar.<\/p>\n<p><strong>Bloque JSON para no hacer nada.<\/strong><\/p>\n<p><code>{\"num\":\"NO\",\"payload\":\"MENSAJE\"}<\/code><\/p>\n<p>Cuando \u201cnum\u201d vale NO y debe ser <strong>NO<\/strong> con may\u00fasculas, el APP descarta este bloque, aunque PAYLOAD tenga un valor de texto para enviar no hay n\u00famero a donde enviarlo, la aplicaci\u00f3n se mantiene quieta hasta la pr\u00f3xima consulta GET para obtener un nuevo bloque JSON. Como la aplicaci\u00f3n tiene que estar consultando por nuevos mensajes para enviar se debe controlar con num valor NO cuando no tenga mensajes nuevos o en cola por enviar.<\/p>\n<p><strong>Bloque JSON para enviar un mensaje a un numero de celular<\/strong><\/p>\n<p><code>{\"num\":\"5544332211\",\"payload\":\"AQUI VA EL MENSAJE DE TEXTO\"}<\/code><\/p>\n<p><strong>Ejemplo en c\u00f3digo PHP para construir el bloque JSON<\/strong><\/p>\n<p><code>&lt;?php<\/p>\n<p>\/\/ Codigo para darle valor a num y payload<\/p>\n<p>header('Content-Type', 'application\/json');<br \/>\nheader('Content-Type: text\/html; charset=UTF-8');<\/p>\n<p>$resultado = array('num' =&gt; \"NO\", 'payload' =&gt; \"MENSAJE\");<br \/>\necho (json_encode($resultado));<\/p>\n<p>?&gt;<br \/><\/code><\/p>\n<p><strong>Descargar SMS INFRAESTRUCTURA V3 desde su sitio oficial en Google Play<\/strong> <\/p>\n<p><a href=\"https:\/\/play.google.com\/store\/apps\/details?id=smsinfrav3.lastdragon.net.smsinfrav3&#038;hl=es\">https:\/\/play.google.com\/store\/apps\/details?id=smsinfrav3.lastdragon.net.smsinfrav3&#038;hl=es<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>SMS INFRAESTRUCTURA como su nombre indica, crea una infraestructura para env\u00edo de mensajes de texto SMS , est\u00e1 pensando para construirla de manera econ\u00f3mica con terminales Android razonablemente baratas, mientras m\u00e1s terminales de Android tenga en su pool m\u00e1s r\u00e1pido podr\u00e1n despacharse cientos o miles de mensajes. El uso m\u00e1s com\u00fan para este tipo de&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1829,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-1826","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-redes-y-telecoms"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/1826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1826"}],"version-history":[{"count":3,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/1826\/revisions"}],"predecessor-version":[{"id":1830,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/1826\/revisions\/1830"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/media\/1829"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1826"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1826"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}