IM Control & Presence API : Il Messenger all’interno delle nostre pagine web


 


Tra i servizi offerti dalla piattaforma Windows Live è stato da poco rilasciato un nuovo controllo che permette di inserire in una pagina Web le funzionalità del Messenger (IM Control) e un nuovo set di Presence API per l’accesso via servizio HTTP .


 Per quanto riguarda l’IM Control ecco di seguito come si presenta il controllo inserito in una pagina vuota di esempio.


 


image


 


 


Inserire il controllo permette di aggiungere ad un sito le funzionalità di presenza e instant messaging verso uno specifico contatto. Interessante ad esempio per siti dove vogliamo arricchire le pagine del profili all’interno di una community dando la possibilità di entrare in contatto con il proprietario del profilo . Può essere usato per inserire il contatto che corrisponde a un Boat Messenger ho altre interessanti applicazioni.


Il controllo viene inserito come un IFRAME nella pagina ospite che punta ad una specifica pagina di Windows Live , passando i parametri necessari a stabilire il contatto e l’aspetto grafico del controllo. L’utilizzo  non comporta nessun tipo di particolare prerequisito nel client che accede alla pagina Web. Il controllo può essere usato anche in modo anonimo e  anche se il client non ha il Messenger installato localmente in quanto usa essenzialmente HTML e JS e rende possibile conoscere lo stato di presenza in internet del conttto messenger su cui è configurato e permette anche di spedirgli dei messaggi.


 


Per provare il controllo come prima cosa occorre autorizzare attraverso la pagina di settings del Messenger la visualizzazione dello stato di presenza da parte del contatto anche dalle pagine web in cui inseriremo il controllo. Dopo essersi autenticati con il Live Id associato al contatto che si vuole abilitare si visualizza la seguente pagina di autorizzazione:


image


 


 


Dopo aver abilitato l’accesso ai website allo stato del nostro contatto, si  prosegue con il link “create HTML” e si arriva nella pagina che consente la generazione dell’IFRAME  con i riferimenti al nostro Id Messenger e ci consente di scegliere l’aspetto grafico e funzionale del controllo:


image


 


Selezionato il tipo e l’aspetto grafico desiderato possiamo copiare il IFRAME generato che contiene il riferimento all’ID del contatto per poterlo inserire nella nostra pagina HTML ottenendo cosi l’inserimento del controllo.


Dall’ IM control è possibile direttamente inviare e riceve messaggi verso lo specifico contatto. PROVARE PER CREDERE…..


 


Come accennato in precedenza le informazioni sulla presenza in rete del nostro contatto oltre che tramite il controllo sono anche accessibili attraverso un web service denominato Presence API utilizzabile via HTTP .


Le Presence API consentono inoltre di effettuare l’invito all’utente per ottenere l’autorizzazione all’utilizzo da parte dei website della presence e l’id necessario ad accedere in via programmatica  o per inserire dinamicamente il controllo nella pagina.


Per effettuare all’utente l’invito ad autorizzare l’accesso e fornire l’id si utilizza un URL con la seguente sintassi:

http://settings.messenger.live.com/applications/websignup.aspx?returnurl=[URL]&privacyurl=[URL]

in returnurl va inserito l’URL a cui il servizio Presence effettuerà la redirect fornendoci in risposta se l’utente ha autorizzato o meno l’utilizzo della sua presence e l’ identificativo che ci permette di andare ad interrogare le Presence API stessa per ottenere le informazioni sulla presenza del nostro contatto via JS o di inserire un IFRAME per il controllo utilizzando l’id ottenuto. Con privacyurl possiamo indicare l’url di una nostra pagina per inserire informazioni\ disclaimer  relative alla privacy dl nostro sito rispetto all’utilizzo delle informazioni di Presence.


Di seguito un esempio del formato dell’ID che si ottiene in caso di autorizzazione:


12BACD345678@apps.messenger.live.com


 


Per provare la pagina di invito all’autorizzazione per l’utilizzo delle Presence API ho preparato un piccolo esempio composto da una pagina dalla quale parte l’invito e una pagina che riceve le informazioni di risposta e dopo averle estratte le scrive nella sessione e genera direttamente un IFRAME per mostrare un IM control collegato all’utente invitato.


La prima pagina mostra il link per l’invito:


image


 


Al click sul link accedo alla pagina di autenticazione di Live Id . Nel caso in cui il nostro contatto sia già autenticato con Windows Live Id, l’autenticazione non viene richiesta nuovamente e si passa direttamente alla pagina di autorizzazione :


image


 


Autenticazione con Live Id e successivo accesso alla pagina di autorizzazione:


image


 


Successivo redirect con passaggio dell’autorizzazione e dell’id del contatto e comparsa del controllo nella pagina:


image


 


 


Di seguito il codice C# della pagina che estrae le info di autorizzazione e l’id delcontatto inserendo dinamicamente l’IFRAME per l’IM Control:


 


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class PresenceInvitation : System.Web.UI.Page
{
    string result = “”;
   string userId = “”;

    protected void Page_Load(object sender, EventArgs e)
    {
      if (!IsPostBack)
      {
         // Go through and extract the returned QueryString values.
         System.Collections.Specialized.NameValueCollection returnParams = Request.QueryString;

         for (int i = 0; i < returnParams.AllKeys.Length; i++)
         {
            String nextKey = returnParams.AllKeys[i];
            if (nextKey == “result”)
               result = returnParams[i];
            else if (nextKey == “id”)
               userId = returnParams[i];
         }
         // If the result is success, save values to session.
         if ((result == “Accepted”) && (userId != null))
         {
            // Save result data to the session.
            Session[“Result”] = result;
            Session[“Id”] = userId;
            // Display the result data.
            lblReturn.Text = “Result: ” + result + “, User ID: ” + userId;

            Response.Write(“<iframe src=’http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=” + userId + “&mkt=en-US&useTheme=true&foreColor=333333&backColor=FDC098&linkColor=333333&borderColor=FB8233&buttonForeColor=333333&buttonBackColor=FFC9A5&buttonBorderColor=FB8233&buttonDisabledColor=FFC9A5&headerForeColor=333333&headerBackColor=FC9E60&menuForeColor=333333&menuBackColor=FFFFFF&chatForeColor=333333&chatBackColor=FFFFFF&chatDisabledColor=F6F6F6&chatErrorColor=760502&chatLabelColor=6E6C6C’ width=’300′ height=’300′ style=’border: solid 1px black; width: 300px; height: 300px;’ frameborder=’0′></iframe>”);
         }
         // If the result does not succeed, display an error.
         else if (result != “Accepted”)
         {
            if (result == “Declined”)
               lblReturn.Text = “[” + result + “]” + ” User permissions were declined.”;
            else if (result == “NoPrivacyUrl”)
               lblReturn.Text = “[” + result + “]” + ” No privacy URL was supplied.”;
         }
      }
   }

    }

 


Ovviamente l’id del contatto può essere memorizzato nel database del nostro sito Web in associazione al profilo dell’utente e riutilizzato senza richiedere ogni volta l’autorizzazione e prevedendo le opzioni per consentire la revoca all’utente.


 Ulteriori informazioni su IM control a http://dev.live.com/messenger/  per le Presence API http://msdn2.microsoft.com/en-us/library/bb936691.aspx.

Comments (4)

  1. Windows Live oltre a fornire un’ampia gamma di servizi agli utenti finali è oramai anche una vera e propria

  2. Cioè? Riprendo il post di Giuseppe Guerrasio sull’argomento e lo applico al mio blog. Windows Live mette

  3. Cioè? Riprendo il post di Giuseppe Guerrasio sull&#39;argomento e lo applico al mio blog. Windows Live