MSCRM 4.0: Añadir icono de presencia OCS en una entidad personalizada

9 07 2011

Os transcribo a continuación un articulo publicado por nuestro colega Jordi Montaña en su blog. El articulo describe como podemos incluir un icono de presencia en OCS en cualquier entidad personalizada. Recordad que por defecto esta característica tan solo esta disponible en systemuser y contactos por lo que, esta utilidad nos permite ampliar esta utilidad a otras entidades en las que tengamos un email asociado. el articulo original lo podéis encontrar en http://jordi-montana.blogspot.com/2011/07/mscrm-40-customizar-control-de.html.

MSCRM 4 permite de manera soportada la integración con Office Communicator 2007 R2. Ahora bien esta integración estándar sólo está contemplada para entidades systemuser y contacts. Si queréis ver los requisitos para integrar con OCS los podéis encontrar aquí. (No olvidéis incluir el sitio de CRM en los sitios de confianza de IE para que funcione).

Después encontrar diversos artículos como el anterior link y de hacer ingeniería inversa de las dll’s de CRM, efectivamente está hardcoded en CRM el hecho de que sólo se pueda (de manera estándar) integrar con estas dos entitades.

Ahora bien…. eso no significa que no se pueda integrar con otras entidades… :)

Internamente, CRM usa una .dll que viene con la instalación de Office, y que carga como un ActiveObject desde javascript para mostrar el estado (imagen de estado) de OCS. Esta .dll se llama “Name.NameCtrl.1”. Podéis encontrar una definición sobre sus métodos y propieades aquí.

Este objeto recibe como parámetro una dirección de email ligada a un contacto de OCS, y os devuelve el estado de dicho contacto. Con lo cual, Name.NameCtrl.1 os sirve para añadir control de presencia a cualquier entidad de CRM, de hecho, a cualquier elemento que tenga asociado un email. (Evidentemente esto se ejecuta en lado cliente, por ello es necesario instalar OCS).

En concreto, el código Javascript necesario para obtener el estado asociado a un email es el siguiente:

//dirección de correo asociada a cuenta de OCS
var emailAddress = 'test';

//crear el objeto de presencia
var presenceObject = new ActiveXObject("Name.NameCtrl.1");

//la llamada al estado se realiza de manera asíncrona, así que es necesario indicarle
// un callback que recogerá el estado, en nuestro caso la función //se llama OnOcsStateChanged.
presenceObject.OnStatusChange = OnOcsStateChanged;

//llamada que lanzará el callback anterior
presenceObject.GetStatus(emailAddress, emailAddress);

//función que recoge el estado y asigna una imagen (el color asociado al estado) a un tag</pre>
<img alt="" />
<pre> de html
function OnOcsStateChanged(name, status, id) {
var ocsImg = document.getElementById("ocsImg");
ocsImg.setAttribute("src", getPresenceUri(status));
}

//función extraída de MSCRM que es la que usa para pintar el estado para el caso de systemuser's y contacts
//y que nosotros reutilizamos para el caso genérico
getPresenceUri = function (status) {
var showoffline = 1;
var img = "unknown.gif";
switch (state) {
case 0:
img = "imnon.png";
break;
case 11:
img = "imnonoof.png";
break;
case 1:
img = "imnoff.png";
break;
case 12:
img = "imnoffoof.png";
break;
case 2:
img = "imnaway.png";
break;
case 13:
img = "imnawayoof.png";
break;
case 3:
img = "imnbusy.png";
break;
case 14:
img = "imnbusyoof.png";
break;
case 4:
img = "imnaway.png";
break;
case 5:
img = "imnbusy.png";
break;
case 6:
img = "imnaway.png";
break;
case 7:
img = "imnbusy.png";
break;
case 8:
img = "imnaway.png";
break;
case 9:
img = "imndnd.png";
break;
case 15:
img = "imndndoof.png";
break;
case 10:
img = "imnbusy.png";
break;
case 16:
img = "imnidle.png";
break;
case 17:
img = "imnidleoof.png";
break;
case 18:
img = "imnblocked.png";
break;
case 19:
img = "imnidlebusy.png";
break;
case 20:
img = "imnidlebusyoof.png";
break;
}

return "/_imgs/presence/" + img;
}

Muchas gracias Jordi!!!

Anuncios

Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: