July 2008 - Posts
La comprobación de tipos es muy importante en todos los lenguajes. Esto se vuelve aún más relevante en los lenguajes que no son fuertemente tipados, como es el caso de BuddyScript. Aunque dentro de las librerías del lenguaje encontraremos numerosas funciones que nos ayudarán en la tarea de validación de tipos, estás no cubren todas las posibilidades.
De esta forma, no existe ningún medio para verificar si un objeto es una lista. Aunque dentro del SDK podremos encontrar la siguiente línea, la cual da una pista.
“A list is an object where all the keys are successive numbers starting at 0.”
De esta forma sabemos que un objeto no puede tener como propiedades números. Es más, si intentamos hacer la siguiente declaración esta causará un error de compilación.
OBJ=""
OBT.1 = "asda"
De esta forma la siguiente función puede ayudarnos a verificar si un objeto es una lista.
function IsArray(LIST)
LIST |= ""
if (IsObject(LIST))
for value NUM in Keys(LIST)
if (!IsInt(NUM))
return 0
return 1
return 0
Un agente tiene la capacidad de invitar a sus usuarios a cambiar el fondo de su ventana de conversación. Esto enriquece al agente como medio para hacer publicidad. En este caso las imágenes de fondo deben residir en el servidor donde encuentre alojado el bot, además deben de cumplir una serie de características:
- Tipo de archivo: .gif (estático), .jpg
- Dimensiones: 800x600 px
- Tamaño del archivo: 75K
- Animaciones: No
A cada imagen de fondo DEBE de ir asociado su Thumbnail. Esta imagen será utilizada dentro del menú de selección de fondos que se encuentra dentro de la ventana de conversación. En el caso de los agentes de Messenger, estas imágenes deben de tener un nombre en concreto, además de las siguientes características:
- Tipo de archivo: .gif (estático), .jpg (preferido)
- Dimensiones: 32 x 32 px
- Tamaño del archivo: 10K
- Animaciones: No
- Texto Alt: 65 Caracteres incluyendo espacios
Respecto al nombre de los archivos, si el fondo se llama “mifondo.jpg”. El Thumbnail que debe de acompañar al fondo se llamará “mifondo.jpg.png”.
Siguiendo esta guía no tiene porque haber ningún problema a la hora de diseñar los fondos para las ventanas de actividad. Aunque estos son los problemas que se suelen encontrar:
- A menudo se presentan los JPGs comprimidos (GIF o JPG sin comprimir)
- El formato PNG no es aceptado.
- La imagen excede los límites de tamaño de archivo.
- Los logotipos de los patrocinadores no está bien colocado y no se ve correctamente.
- A menudo son tratadas como un gran banner de publicidad
- No siempre la imagen de Thumbnail es proporcionada.
Para cambiar el fondo de la ventana de actividad, el primer paso es hacer referencia al package donde se encuentra el método que nos permite hacer esta operación.
package wlalib_languageneutral:/Utilities/WLMUtilities
Una vez hecho esto, añadimos el código que hace esto posible. Hay que tener en cuenta que la imagen del fondo y el Tumbnail del fondo, deben de estar desplegados junto al agente.
+ cambiar fondo
- Pulse en aceptar para cambiar el fondo
call ABMSNSetBackground("domains:/images/mybackground.jpg")
Finalmente la versión 5.0 ha sido liberada al público en general. Esto permite que cualquier persona pueda, ya por fin, desarrollar Windows Live Agents para la plataforma de Windows Live Messenger.
Esta nueva versión viene acompañada de muchas novedades dentro de la plataforma como: el PHI (Partner Hosting Infrastructure), un nuevo entorno de desarrollo integrado con Visual Studio, herramientas de migración de versiones y muchas más cosas...
¿Por dónde empezar a desarrollar?
El primer paso que hay que dar, es descargarse el SDK y el IDE para el Visual Studio, que pueden obtenerse aquí. Una vez instalado, es necesario tener una licencia. Esta licencia permitirá lanzar el agente a la red de MSN. De esta manera, es posible probarlo desde un cliente Windows Live Messenger.
Para obtener una licencia hay que, en primera instancia, iniciar sesión dentro de la red de Windows Live. Para ello, ir a Tools -> Windows Live Agents Tools -> Code Management -> Sing-in to Windows Live. Para solicitar la licencia hay que ir a Tools -> Windows Live Agents Tools -> Request License Certificate.
Dentro de la ventana de salida del Visual Studio deberá de aparecer el siguiente mensaje:
Requesting authentication ticket...success.
Calling License Certificate Request tool...
Windows Live Agents License Certificate Request Tool.
Requesting License.
Found license with serial: WLA-
Generating Certificate Request.
Requesting Certificate.
Installing Certificate.
Done.
Este mensaje confirmará que el proceso se ha realizado correctamente.
Los usuarios de XP deberán tener instalado en sus equipos la herramienta certreq.exe. Esta herramienta se encuentra dentro del paquete de herramientas para Windows Server 2003, que se puede descargar de aquí.
Para crear un nuevo agente. Hay que ir al Visual Studio. El nuevo template, que se agrega al instalar el SDK, permitirá crear un agente con una conversación básica utilizando un wizard. De esta forma, en la pantalla que se muestra a continuación se dá nombre al proyecto.

Al pulsar Ok, se mostrará el siguiente menú. En este menú se podrá seleccionar el idioma o idiomas que hablará el agente; si se desea que tenga un chit chat (una conversación básica) predefinida y si se quiere que almacene información del usuario como: su nombre, edad, sexo, etc…

Una vez hecho esto, ya sólo queda compilar ( F5 ) y conversar con el agente.

Recursos de interés:
¿Qué puede salir de la suma de Wakoopa, Visifire y Retaggr?, pues nada bueno la verdad. La idea es crear una gráfica usando Visifire. Esta gráfica tiene que mostrar la información del software que más he usado en el último día, semana y mes. Esta información la proporciona el servicio de Wakoopa. Además, esta gráfica debe verse en mi tarjeta Web 2.0 de Retaggr.
¿Qué es qué?
Wakoopa es un servicio muy parecido a Last-fm, con la misma filosofía, pero en vez de música lo que mide es el software que utilizado. Este servicio se encarga de hacer un tracking del software que está siendo utilizando y medir cuanto tiempo se ha estado utilizando. Este servicio además permite consultar el top 10 de software utilizado, ver que software se ha utilizado durante el último mes y agregar contactos para ver que utilizan ellos. También una cosa curiosa de la que dispone, es que se pueden crear Teams y ver que software usa la gente que forma parte de él.
Este servicio dispone de una API para acceder a su información. Esto permite consumir los datos que ha generado un usuario para aplicarlos en otros mashups y poder desarrollar algún gadget. Su API expone los siguientes servicios:
- Your most used software
- Your most recently used software
- Summary of your usage for the last day/week/month
- Newly used software
- Latest versions of your software
- Comments on your profile
- Reviews you've written
- Your contacts on Wakoopa
- Teams you are a member of
Retaggr es otro servicio con el que crear una tarjeta de presentación Web. 2.0, donde se pueden recoger todos los servicios que un usuario utiliza. Se pueden agregar los profiles de: Facebook, Twitter, Wakoopa, Lasf-fm, LinkedIn, etc… En la tarjeta, también se pueden incrustar los gadget que estos servicios ofrecen. De esta manera, se pueden tener disponibles desde ella. Además, se pueden utilizar gadget desarrollados por terceros mediante el uso de un iframe.
Visifire es un control para generar gráficas. Esta hecho con Silverlight 2.0 beta 2 y evidentemente por el momento se encuentra en fase beta. Para usarlo sólo hay que añadir una referencia a un javascript dentro de la página y subir un archivo .xab que ellos mismo proporcionan. Además, para diseñar las graficas se puede utilizar su diseñador. Más información.
¿Cómo integrar todo?
De la Api de Wakoopa vamos a utilizar el servicio que devuelve un resumen de las aplicaciones usadas. Devuelve una lista con las 10 aplicaciones que más han sido usadas. La url del servicio es:
http://api.wakoopa.com/<username>/software_summary.json?period=<period>
- <username>: El nombre de usuario o Nick dentro de Wakoopa.
- <period>: Puede tomar los valores: day, week o month para devolver un resumen de los datos de un día, de una semana o de un mes respectivamente.
Esta url devuelve un archivo json con una colección de la siguiente entidad:
{
"complete_thumb_url": "http://static.wakoopa.com/images/software/53/thumb/picture.png",
"name": "Windows Internet Explorer",
"updated_at": "2008/06/05 08:03:18 +0000",
"last_active_at": "2009/06/03 17:22:05 +0000",
"url": "http://www.windows.com/",
"category": {
"name": "Browsers",
"id": 1,
"description": "Check what's happening on the web",
"complete_url": "http://wakoopa.com/categories/browsers"
},
"id": 53,
"description": "Windows Internet Explorer (formerly Microsoft Internet Explorer).",
"complete_url": "http://wakoopa.com/software/windows-internet-explorer",
"developer": {
"name": "Microsoft Corporation",
"id": 13908,
"complete_url": "http://wakoopa.com/developers/microsoft-corporation"
},
"num_users": 12551,
"complete_icon_url": "http://static.wakoopa.com/images/software/53/picture.png",
"created_at": "2007/04/19 11:36:22 +0000",
"active_seconds": 11371
}
Después con el diseñador de gráficas de Visifire generamos el template de la gráfica que queremos usar, en esta caso una de quesitos.
var chartXmlString = ''
+'<vc:Chart xmlns:vc="clr-namespace:Visifire.Charts;assembly=Visifire.Charts" '
+' Width="328" Height="174" BorderThickness="0" Theme="Theme1" '
+' View3D="True" AnimationType="Type1" ColorSet="Visifire1" UniqueColors="True">'
+'<vc:Image Enabled="False"/>'
+'<vc:Legend Enabled="True" FontSize="10" FontFamily="Arial" FontStyle='Normal'/>'
+'<vc:ToolTip Color='white' RadiusX='2' RadiusY='2'/>'
+'<vc:AxisX Title='Companies'>'
+'<vc:AxisLabels Enabled='False'/>'
+'<vc:MajorGrids Enabled='False'/>'
+'<vc:MajorTicks Enabled='False'/>'
+'</vc:AxisX>'
+'<vc:AxisY Enabled='False'>'
+'<vc:AxisLabels Enabled='False'/>'
+'<vc:MajorGrids Enabled='False'/>'
+'<vc:MajorTicks Enabled='False'/>'
+'</vc:AxisY>'
+'<vc:DataSeries Name = 'Series1' RenderAs='Pie'>'
+'<vc:DataPoint AxisLabel='{0}' YValue='{1}'/>'
+'</vc:DataSeries>'
+'</vc:Chart>';
Pues ya sólo hay que leer el json y generar la grafica, que eso ya no tiene misterio.
El Resultado.
Utilizar el gadget dentro de una web, blog o Retaggr es muy sencillo, sólo es necesario un iframe. La url donde se encuentra hospedado el gadget es http://demos.kartones.net/008/default.htm. Como parámetros dentro de la querystring acepta:
- User: con el nombre de usuario de Wakoopa.
- Foot: que se debe establecer a 0 para esconder el pie de la página. El tamaño del gadget es de 328x188 px.
El código para embeberlo sería:
<iframe id="Iframe1" height="188" width="328" frameborder="0" scrolling="no" src="http://demos.kartones.net/008/default.htm?user=Pedroafa&foot=0"></iframe>
Así que dentro de la configuración de la tarjeta Web 2.0 en Retagrr, añadimos un Custom Widget y el resultado es el siguiente:
Aquí podéis encontrar una Live Demo de la gráfica y mi tarjeta personal de Retaggr.