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!