Featured Posts

Silverlight 5 Ya DisponibleSilverlight 5 Ya Disponible El día de hoy 09 de Diciembre 2011 ha sido liberada la nueva versión de Silverlight 5.  Esta versión final es la 5.0.61118. ¿Qué es Silverlight? Silverlight es...

Readmore

Silverlight Tour–Actualizado a Silverlight 5 RTWSilverlight Tour–Actualizado a Silverlight 5... Tengo el gusto de anunciarles que el Curso que Da La Vuelta al Mundo, el famoso Silverlight Tour, ha sido actualizado a la versión final de Silverlight 5. El Silverlight...

Readmore

Nueva carrera en Microsoft Virtual Academy: Windows Phone 7.1 (Mango)Nueva carrera en Microsoft Virtual Academy: Windows... Tengo el gusto de darles a conocer la disponibilidad de una nueva carrera en el Microsoft Virtual Academy (MVA): La carrera de Windows Phone 7.1 Mango. Esta es la descripción...

Readmore

Nueva carrera en Microsoft Virtual Academy: Silverlight 4Nueva carrera en Microsoft Virtual Academy: Silverlight... ¿Eres estudiante de Microsoft Virtual Academy (MVA)? Tengo el gusto de anunciarles oficialmente el lanzamiento de la nueva carrera de Silverlight 4 para esta plataforma educativa. La...

Readmore

Curso gratuito de Introducción a Silverlight 4 – 2da. ParteCurso gratuito de Introducción a Silverlight... Tengo el gusto de informarles que ya está disponible la segunda parte del Curso gratuito de Introducción a Silverlight 4 en Español, el cual ahora consta de un total...

Readmore

Rodrigo Díaz Concha Rss

Búsquedas con el API de Bing y Silverlight

Posted on : 04-06-2009 | By : Rodrigo | In : Bing, Silverlight, Silverlight 3, Tips

1

 

Introducción

Hace algún tiempo hice un artículo de cómo podemos utilizar el API de Live Search en nuestras aplicaciones de Silverlight.  Este es únicamente una actualización a ese artículo pero ahora utilizando el API de Bing.

Ahora que Bing ha sido liberado al público en general uno de los puntos muy importantes a destacar es la actualización que Microsoft ha hecho del API de búsqueda que podemos incorporar en nuestras aplicaciones.  Aunque la experiencia en el desarrollo con esta nueva API es bastante similar a lo que teníamos con anterioridad en Live Search, es destacable el hecho de que ahora podemos hacer búsquedas en Encarta Instant Answers (Respuestas Instantáneas de Encarta), lo cual nos permite no solamente buscar una cadena en páginas Web, sino también en esta importante y enorme enciclopedia en línea.  Esto lo logramos usando InstantAnswers como parte de la propiedad SourceType[] cuando creamos un Request.

Otro punto novedoso del API es el SourceType de tipo RelatedSearch el cual nos permite hacer búsquedas relacionadas con la búsqueda actual.  Para ver todas las novedades del API de Bing lo puedes hacer en esta página.

InstantAnswers de Encarta con Silverlight

Paso 1

Lo primero que tenemos que hacer al igual que en la versión del API de Live Search es registrarnos en el portal de desarrolladores para obtener un AppID.  El AppID es la puerta que nos permite hacer búsquedas en el motor ya que está ligado a nuestra cuenta de MSN.  Para obtener tu AppID lo puedes hacer aquí.

Paso 2

Ahora que ya tienes tu AppID disponible el siguiente paso será decidir la manera de como nos vamos a comunicar al servicio de búsqueda: a través de JSON, XML o SOAP.  En el caso de este artículo haré la demostración con SOAP debido a que Visual Studio .NET nos ayuda a crear la clase proxy ya que el servicio es autodescriptible, es decir, expone un WSDL que podemos usar para identificar su funcionamiento.

Paso 3

El paso siguiente es crear una nueva aplicación de Silverlight por medio de la plantilla de Visual Studio .NET.  Posteriormente agregamos la referencia al servicio localizado en: http://api.search.live.net/search.wsdl?AppID=TUAPPID (es el mismo Url que el API de Live Search).

Para hacer una búsqueda en Encarta Instant Answers tenemos que especificar el tipo de SourceType en la propiedad Sources cuando creamos el Request.  El siguiente fragmento código muestra un ejemplo de la construcción del Request:

SearchRequest CreateRequest(string query)

{

    SearchRequest request = new SearchRequest();

    request.AppId = "TUAPPID";

    request.Market = "es-MX";

    request.Query = query;

    request.Sources = new SourceType[] { SourceType.InstantAnswer };

 

    return request;

}

Noten cómo en este ejemplo estoy estableciendo la propiedad Market a “es-MX”.  Al especificar esto estoy indicando el idioma y país para la búsqueda.  Si no hacemos esto la búsqueda automáticamente tratará de detectar mi localización geográfica e idioma adecuado basándose en mi dirección de IP y otros parámetros.

Asimismo esto es importante mencionar ya que algunas preguntas abiertas no podrán ser contestadas en esta demostración ya que en su mayoría responde únicamente a preguntas en idioma Inglés.

Finalmente un punto muy importante al obtener las respuestas de Encarta Instant Answers es el hecho de que la propiedad InstantAnswerSpecificData es de tipo string pero está expresada como un documento XML, así que la interpretación de dicha cadena es necesaria.  A continuación se muestra un código de ejemplo de cómo podemos interpretar dicha propiedad para sacar la información necesaria:

void ProcessResponse(InstantAnswerResponse response)

{

    popup.IsOpen = false;

    if (response != null)

    {

        var qry = from r in response.Results

                  where r.InstantAnswerSpecificData != null

                  && r.ContentType.Equals("Encarta.Facts")

                  select new Result() { Title = r.Title, 

                      Url = r.Url, 

                      Data = GetSpecificData(r.InstantAnswerSpecificData),

                      Attribution = r.Attribution,

                      ClickThroughUrl = r.ClickThroughUrl

                  };

 

        Results.DataContext = qry.ToList();

    }

    

}

 

string GetSpecificData(string specificData)

{

    XDocument document = XDocument.Parse(specificData);

    

    string result = document.Descendants(

        XName.Get(

        "{http://schemas.microsoft.com/LiveSearch/2008/04/XML/encarta}Value")).First().Value;

    return result;

}

Bing con Silverlight

Para ver la aplicación en acción lo puedes hacer en esta página (el plugin de Silverlight 3 es requerido):

http://silverlight.services.live.com/invoke/76819/Silverlight%20-%20Bing%20Instant%20Answers/iframe.html

Comments (1)

Hola Rodrigo, dos cosas:

1. El link para ver la aplicación en acción no está funcionando.

2. Puedes incluir un zip con el código fuente? Vi tu presentación en Margarita y estuvo excelente.

Gracias

Saludos Venezolano

Write a comment

Spam Protection by WP-SpamFree