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!
Como lo prometido es deuda, comparto con ustedes lo presentado en el DevDays 2016
Presentación Azure Openess
Demo Script
#primer paso, crear grupo de recursos
azure group create AInterop "East US"
#crear cuenta de storage
azure storage account create demoperu0003
#plus, como crear un file share SMB 3.0
azure storage account connectionstring show demoperu0003
export AZURE_STORAGE_ACCOUNT=<account_name>
export AZURE_STORAGE_ACCESS_KEY=<key>
export AZURE_STORAGE_CONNECTION_STRING="<connection_string>"
azure storage share create sharedemo
azure storage directory create sharedemo prueba
#como automatizarlo en python
nano demo.py
#dentro de nano escribir
regiones = "East US"
grupo = "AInterop"
aplicacion = "demoperu00009"
from subprocess import call
call('azure storage account create '+aplicacion+' -l "'+regiones+'" -g "'+grupo+'"', shell=True)
#ctrl+x y luego Y
##########################
#containers, conectarse a la vm por ssh
ssh nomvm.cloudapp.net -l eladmin
#buscar repos
docker search debian
#correr un contenedor con debian
docker run -i -t debian /bin/bash
apt-get install zip
zip
exit
zip
#correr un contenedor con XAMPP
docker run -p 41061:22 -p 41062:80 -d -v ~/my_web_pages/my_testing_page1:/www tomsik68/xampp
#conectarse y modificar el index
ssh root@localhost -p 41061
cd /www
nano index.php
docker run -p 41072:22 -p 41078:80 -d -v ~/my_web_pages/my_testing_page1:/www tomsik68/xampp
Presentación de 0 a 100 en Azure ARM
Url usadas:
#Abrir la pagina de templates
https://github.com/Azure/azure-quickstart-templates/
#Navegar a la creacion de 2 vm con LB
https://github.com/Azure/azure-quickstart-templates/tree/master/201-2-vms-internal-load-balancer
Con el nuevo modelo de Azure ARM podemos crear Grupos de Recursos y agrupar recursos de computo, redes y almacenamiento de forma que:
- Se garantiza la granularidad de accesos a los grupos y componentes.
- Se pueden asignar etiquetas a los recursos para facilitar la gestión.
- Y lo más importante, se pueden aprovisionar recursos desde plantillas en JSON.
- Hace unas semanas anunciamos la posibilidad de exportar plantillas desde un Grupo de Recursos a JSON de tal forma que la arquitectura pueda ser reutilizada.

Vamos manos a la obra:
Entramos a Azure y busquemos un grupo de recursos creado previamente y podremos ver que se ha habilitado una nueva opción ¨Export Template¨

Al hacer clic podremos ver que se generó, le damos clic en Download, y nos descargará un archivo Zip, luego podemos ir a http://armviz.io/ y vamos a darle clic en Open from file, a lo cual veremos que se generó automáticamente la arquitectura

Resultado final

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!