Construyendo una solución de envío de SMS y llamadas en Azure

Hola Muertos vivientes, hoy les traigo un how-to para todos los spammers en potencia, cómo enviar SMS y llamadas a celulares de todo el mundo usando Azure y voz generada por texto. Para ello tenemos que ir a http://Twilio.com y crearnos una cuenta, ahi solicitaremos:

  • Un número de telefonico.
  • Un api key de cuenta.

El primer paso es crear una clase Twimlo.aspx.cs que genere el texto en SSML:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Notificaciones
{
    public partial class Twimlo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.ContentType = "text/xml";
            Response.Write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Response><Say voice=\"man\" language=\"es\" loop=\"2\">"+Request["mensaje"]+"</Say></Response>");
            Response.End();
        }
    }
}

Y en el Default.aspx yo he creado 4 controles, 2 cajas de texto, un checkbox y un botón, tal como se muestra en la imagen:

Luego en mi proyecto de Visual Studio he agregado desde NuGet el paquete de Twilio:

Install-Package Twilio

Ahora, vamos al code behind de Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Twilio;

namespace Notificaciones
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e){}

        protected void Button1_Click(object sender, EventArgs e)
        {
 
            string accountSID = "ID de cuenta";
            string authToken = "token de cuenta";

            TwilioRestClient client;
            client = new TwilioRestClient(accountSID, authToken);
            if (CheckBox1.Checked)
            {
                String Url = "http://{nombredeSitio}.azurewebsites.net/Twimlo.aspx?mensaje=" + TextBox2.Text.Replace(" ", "%20");
                CallOptions options = new CallOptions();
                options.From = "{numero generado}";
                options.To = TextBox1.Text;
                options.Url = Url;
                var call = client.InitiateOutboundCall(options);
            }

            else
            {
                    client.SendMessage(
                        "{numero generado}", // From number, must be an SMS-enabled Twilio number
                        "{numero destino}",     // To number, if using Sandbox see note above
                        TextBox1.Text);                // message content
            }
        }
    }
}

Ahora solo queda publicar a un Azure WebApp y listo!

Crear un Container en Docker con XAMPP

Hola Muertos vivientes, hoy les eseñaré como crear contenedores en Docker con XAMPP y luego publicar un sitio web en el. Comencemos, para este how-to necesitamos:

  • Una cuenta de Azure
  • Putty, Terminal o Bash

Como primer paso vamos a ir a Azure y crear Docker Ubuntu, simplemente ingresamos a https://portal.azure.com y los loqueamos, una vez ahi, vamos a dar clic en el botón marketplace

En el marketplace vamos a buscar Docker on Ubuntu Server y le damos clic

Seguimos el wizard y configuramos que el método de autenticación es Password y no SSH Key.

Ahora nos vamos al Terminal y escribimos:

ssh nomvm.cloudapp.net -l eladmin

Eso nos conectará vía SSH al servidor de Docker, ahora crearemos el contenedor:

docker run -p 41061:22 -p 41062:80 -d -v ~/my_web_pages/my_testing_page1:/www tomsik68/xampp

En donde el puerto 41061 apunta al puerto 22 para SSH y el puerto 41062 apunta al puerto 80 para HTTP, para validar que el contenedor se haya creado correctamente, podemos usar el siguiente comando:

docker ps

Y veremos que nuestro contenedor se lista. Ahora que ya tenemos el contenedor funcionando, vamos a conectarnos vía SSH al contenedor para comenzar a crear código:

ssh root@localhost -p 41061
cd /www
nano index.php

En el nano escribiremos un clásico Hola Mundo:

<?php

echo 'Hola Mundo ', $_GET['nombre'];

?>

Ahora vamos al portal de Azure nuevamente y creamos una regla de entrada en el Network Security Group de la maquina virtual:

Con eso deberíamos poder ingresar a nuestro sitio Web sin problemas!