sincronización crm on demand con skype -...

42
Sincronización CRM on Demand con Skype TITULACIÓN: Ingeniería Técnica en Informática de Sistemas. AUTOR: Jordi Rodríguez Montilla DIRECTOR: Pere Millán Marco FECHA: Septiembre 2012

Upload: truongkhanh

Post on 01-Feb-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Sincronización CRM on Demand con Skype

TITULACIÓN: Ingeniería Técnica en Informática de Sistemas.

AUTOR: Jordi Rodríguez Montilla

DIRECTOR: Pere Millán Marco

FECHA: Septiembre 2012

Page 2: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 2

ÍNDICE

1 – DESCRIPCIÓN DE LA EMPRESA,.…………………………………………………3

2 – UBICACIÓN DENTRO DE LA EMPRESA..………………………………………...4

3 – DESCRPCIÓN DE LA FAENA REALIZADA……………………………………….5

3.1 – OBJETIVOS DEL PROYECTO..……………………………………………5

3.2 – ESPECIFICACIONES DEL PROYECTO………………………………….6

Especificaciones del hardware y el sistema operativo.

Entorno de programación utilizado.

Librería Skype.

Consumos de servicios Crm On Demand.

Llamada Skype desde Crm On Demand.

Parámetros de configuración.

Generación ejecutable.

3.3 – DISEÑO..……………………………………………………………………….15

Localización y configuración.

Funcionamiento de la aplicación.

Llamadas perdidas.

Llamadas rechazadas.

Llamadas erróneas.

Llamadas aceptadas.

3.4 - DESARROLLO………………………………………………………………...22

3.5 – EVALUACIÓN..……………………………………………………………….32

3.6- RECURSOS UTILIZADOS……………………………………………………34

3.7 – MANUALES..………………………………………………………………….35

Funcionamiento.

Instalación de la aplicación.

4 – APORTACIONES A MIS CONOCIMIENTOS..………………………………………37

5 - APORTACIONES DE LOS ESTUDIOS REALIZADOS AL PROYECTO..........…...38

6 – CONCLUSIONES………………………………………………………………………..39

Page 3: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 3

1 - Descripción de la empresa.

Trabajo en Qualita Solutions and Consulting, cuya actividad principal es la de ofrecer

soluciones para mejorar la gestión y el estudio de su negocio. Las soluciones con las que trabajamos

son de Oracle.

Para mejorar la gestión del negocio utilizamos las siguientes aplicaciones:

1- Oracle JD Edwards, que es un planificador de recursos empresariales. Contiene diferentes

módulos, como puede ser finanzas, recursos humanos, producción, distribución, entre otros.

2- Oracle CRM On Demand es la aplicación para captar clientes y realizar su seguimiento. Su

gran baza es que está instalado en los servidores de Oracle y se paga por el consumo que

realizamos sobre él.

3- Oracle Obiee. Es la herramienta de Business Intelligence de Oracle en la que se realizarán

todos los análisis de mercado.

En Qualita llevamos a cabo tanto la instalación de las aplicaciones, como su parametrización,

módulos personalizados e incluso aplicaciones de soporte.

Page 4: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 4

2 - UBICACIÓN DENTRO DE LA EMPRESA.

Dentro de la empresa, desarrollo las tareas de consultor técnico. Mis tareas principales son

analizar y desarrollar aplicaciones. Estas aplicaciones pueden consistir en una simple carga de datos

hasta una aplicación de Windows mobile para realizar el packing de una empresa. También realizo

instalaciones de Servidores y aplicaciones, cargas de datos a la aplicación Business Intelligence

mediante ETL o PL/SQL.

La empresa se compone por los socios, que tienen un rol de toma de decisiones y venta del

producto; finanzas, que se encarga de cobrar las facturas; el departamento de márketing, que realiza

la estrategia para que todo brille; consultores funcionales especializados en diferentes módulos de la

aplicación y los consultores técnicos que realizan el desarrollo de las aplicaciones y su puesta en

marcha.

El seguimiento del proyecto lo ha realizado Marc Solá, jefe de consultoría. Él se ha

encargado de la parte de funcionalidad de la aplicación y yo he llevado a cabo todo el desarrollo.

Dirección

Consultor-ía

Finanzas Márketing

Page 5: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 5

3 – DESCRIPCIÓN DEL TRABAJO REALIZADO.

3.1 - OBJETIVOS DEL PROYECTO.

El objetivo del proyecto es realizar una comunicación entre un aplicativo VOIP que tiene la

utilidad de poder realizar llamadas sobre ip y la aplicación de relación con el cliente CRM On

Demand de Oracle. Para realizar el proyecto tenía que escoger un servicio de VOIP que no

requiriese una instalación de hardware. Entre Google Talk, Voip Buster y Skype, elegí Skype, ya

que es uno de los sistemas de VOIP más utilizados, con buenos precios y tenía una librería para

poder realizar su integración.

La aplicación Crm On Demand de Oracle es una herramienta cuya principal utilidad es la de

tener una relación con los clientes. Una forma de dar una mayor respuesta en nuestro negocio es

poder tener un contacto directo con ellos. La base del Crm On Demand de Oracle no tiene un

sistema de integración entre el cliente y un sistema de VOIP. Por lo tanto, en Qualita apostamos por

realizar una aplicación de comunicación.

La aplicación supondrá un beneficio para el comercial ya que tendrá automatizado todo el

proceso de llamadas y para tener un mayor control sobre él, ya que tendremos controladas las

posibles pérdidas de llamadas.

Page 6: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 6

3.2 - ESPECIFICACIONES DEL PROYECTO.

Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación Crm

On Demand de Oracle, que se iniciará automáticamente al iniciar nuestra sesión.

Nuestra aplicación estará todo el rato escuchando las acciones de Skype. Nosotros hemos

controlado las llamadas perdidas, rechazadas, fallidas y aceptadas.

Realizarán las siguientes acciones:

1- Llamada recibida/enviada perdida: Cada vez que se realice o se reciba una llamada

perdida, ésta se grabará en el Crm On Demand como una actividad finalizada con el

asunto “llamada perdida” y obtendremos un mensaje con lo ocurrido.

2- Llamada recibida/enviada rechazada: Si colgamos a un cliente o éste nos cuelga a

nosotros se grabará como una actividad finalizada con el asunto “llamada rechazada” y

obtendremos un mensaje con lo ocurrido.

3- Llamada enviada fallida. Si se produce algún problema al intentar realizar la llamada o

al recibirla, ésta se grabará como una actividad finalizada con el asunto “llamada fallida”

y obtendremos un mensaje con lo ocurrido.

4- Llamada recibida/enviada aceptada. Si aceptamos o nos aceptan una llamada, nuestra

aplicación la detectará y se abrirá un formulario con el nombre “cliente” para una mejor

atención, y un campo de texto dónde introduciremos el motivo de la llamada. Una vez

realizamos el registro de la llamada, ésta la podemos guardar como una actividad

finalizada en el contacto o en la oportunidad

Una vez explicado el funcionamiento de la aplicación, cabe destacar que hemos creado un

formulario dentro de nuestra aplicación en .NET para poder modificar los parámetros de conexión

en el consumo de servicios. Éstos se componen de servidor, usuario y contraseña. Estos parámetros

de configuración se guardarán en un fichero xml. Para conservar nuestra privacidad hemos

realizado una encriptación de nuestra contraseña.

ESPECIFICACIONES DEL HARDWARE Y EL SISTEMA OPERATIVO.

Para realizar el proyecto he utilizado la herramienta de desarrollo Microsoft Visual Studio

2010. Los sistemas operativos que soporta son los siguientes:

Windows XP (x86) con Service Pack 3, todas las ediciones excepto Starter Edition.

Windows Vista (x86 y x64) con Service Pack 2, todas las ediciones excepto Starter Edition.

Windows 7 (x86 y x64).

Windows Server 2003 (x86 y x64) con Service Pack 2.

Windows Server 2003 R2 (x86 y x64) todas las ediciones.

Windows Server 2008 (x86 y x64) con Service Pack 2, todas las ediciones.

Windows Server 2008 R2 (x64), todas las ediciones.

Las arquitecturas soportadas:

32 bits (x86)

64 bits (x64)

Page 7: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 7

Y el hardware soportado:

Equipo con un procesador a 1,6 GHz o más rápido.

1024 MB de RAM (1,5 GB si se ejecuta en una máquina virtual).

3 GB de espacio disponible en el disco duro.

Unidad de disco duro de 5400 rpm.

Tarjeta de vídeo compatible con DirectX 9 con una resolución de pantalla de 1024 x 768 o

superior.

ENTORNOS DE PROGRAMACIÓN DISPONIBLES.

Los lenguajes de programación que teníamos disponibles eran Php , C# y Visual Basic.

Realizarlo con Php no era posible a causa de que el Php es un lenguaje que se ejecuta en el servidor

y no en nuestro ordenador. Por lo tanto, no podríamos realizar la escucha de nuestro Skype.

Entonces, el entorno de programación escogido fue .NET con el lenguaje C#, que es un lenguaje

orientado a objetos.

LIBRERÍA SKYPE.

La librería Skype4com está realizada para poder desarrollar aplicaciones de comunicación

con Skype.

Para realizar nuestra aplicación hemos instalado en nuestro ordenador la herramienta de

desarrollo Microsoft Visual Studio 2010. Nos permitirá realizar una aplicación de escritorio para los

sistemas operativos Windows.

Para obtener la librería Skype, nos tendremos que dar de alta como desarrollador de Skype.

Una vez dado de alta, tendremos derecho a descargarnos la librería Skype. Ahora procederemos a

incluirla en nuestro proyecto añadiéndola como una referencia.

Page 8: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 8

ACTIVAR EL EVENTO DE ESCUCHA DE SKYPE.

Para poder realizar la escucha permanente de Skype en nuestra aplicación, tendremos que

activar un evento Skype de escucha al iniciarse la aplicación, de la siguiente manera:

cSkype = new SkypeClass(); ((_ISkypeEvents_Event)cSkype).CallStatus += Skype_CallStatus; cSkype.Attach(8, false);

Cada vez que se detecte una acción en el Skype se detectará en la siguiente función:

private static void Skype_CallStatus(SKYPE4COMLib.Call aCall, TCallStatus aStatus) {

}

Para saber en todo momento lo que está sucediendo en nuestras escuchas, lo realizaremos

con la variable de entrada del tipo CallStatus. Cada vez que entre en nuestra función de escuchas,

ésta nos dirá lo que está sucediendo, nosotros sólo capturaremos las llamadas fallidas, rechazadas,

perdidas y aceptadas.

switch (aStatus) {

case TCallStatus.clsInProgress: case TCallStatus.clsMissed: case TCallStatus.clsFailed: case TCallStatus.clsRefused:

}

Para identificar si la llamada es enviada o recibida, lo detectaremos con TCallStatus.clsRouting que

nos indicará que la llamada es enviada.

CONSUMOS DE SERVICIOS CRM ON DEMAND.

Obtener la estructura de datos para realizar la conexión.

Para obtener un servicio en Crm On Demand necesitaremos conectarnos al Crm On Demand

como administrador. Vamos a administración de servicios web y escogeremos el objeto que

queremos trabajar para descargarlo.

Page 9: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 9

Una vez descargado, procederemos a introducirlo en nuestra aplicación .net añadiéndolo como una

Web Reference.

De esta manera obtendremos la estructura para poder interactuar con el objeto Contact de

nuestro Crm On Demand.

Page 10: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 10

Una vez obtenida la estructura para poder acceder al objeto contacto, lo que realizaremos

será una conexión al Crm On Demand.

Realizar la autentificación al Crm On Demand.

Para poder realizar la conexión nos tendremos que autentificar indicando Servidor, usuario y

contraseña. Al autentificarnos nos dará un id de sesión, que utilizaremos cada vez que queramos

realizar una consulta al servicio. El id obtenido sólo estará operativo durante 20 minutos por

motivos de seguridad.

LLAMADAS SKYPE DESDE CRM ON DEMAND.

Para poder realizar la llamada del Crm On Demand al Skype he creado dos campos de tipo

enlace web, que redireccionarán a una página web con una función JavaScript, que llamará a

nuestro contacto, y uno de tipo texto breve, que contendrá la dirección del Skype al que queremos

llamar.

Page 11: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 11

Para poder agregar campos dentro del Crm, tendremos que llevar a cabo los siguientes pasos:

1- Iremos a administrador, personalización de aplicaciones, configuración de registros del

objeto contacto, configuración del campo contacto y agregaremos un nuevo campo.

2- Al agregar los campos, tendremos que escoger un nombre para mostrar y el tipo de campo,

tal y como se muestra en la imagen siguiente.

3- Una vez creados los campos, tendremos que insertarlos en el formulario del objeto contacto.

Para ello, es necesario ir a diseño de la página contacto, crear un nuevo diseño e insertar los

campos en su sitio correspondiente, como se muestra en la siguiente imagen.

Page 12: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 12

4- Una vez diseñada, para poder visualizarla, tendremos que asignarle un rol. Para ello, iremos

a administración de roles y la pondremos en el rol de las personas que utilicen la aplicación.

Una vez insertados los campos, realizaremos la redirección en los campos tipo enlace web.

Para ello, tendremos que ir a editarlos y pasar por parámetros la dirección de Skype o el teléfono y

el id, ya que una vez llamado a Skype volveremos al formulario de contactos. Un ejemplo de cómo

personalizar un enlace web:

Una vez creado el enlace web, crearemos nuestra función para realizar la llamada Skype. La

función recibirá los parámetros nombre Skype o número de teléfono y el id para volver a nuestro

formulario de contacto. Para realizar las llamadas a skype, se realizan de la siguiente manera:

· Para el teléfono:

window.location.href = "callto://+" + call;

· Y para el nombre Skype:

window.location.href = "skype:" + skype + "?call";

Page 13: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 13

Para poder volver al formulario de contactos, tenemos una dirección url donde sólo le tene-

mos que indicar el id del contacto. Un ejemplo es el siguiente:

top.location.href="https://secure-

vmsomxl-

ma.crmondemand.com/OnDemand/user/ContactDetail?OMTGT=ContactDetailForm&OMTHD=C

ontactDetailNav&OCTYPE=&ContactDetailForm.Id=" + id;

GENERACIÓN EJECUTABLE.

Para obtener el ejecutable que nos permitirá instalar nuestra aplicación de call center en los

ordenadores, tenemos que generar un ejecutable. Para ello, crearemos un nuevo proyecto de tipo

Setup Project:

Una vez creado, tendremos un menú a la izquierda donde podremos configurar nuestras propiedades,

como el autor, la empresa que ha realizado el proyecto e incluso si lo queremos para plataformas de

32 o 64 bits.

Page 14: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 14

Una vez configurados nuestros parámetros, procederemos a introducir nuestro proyecto en la

carpeta de configuración. Escogeremos el Primary output, que es nuestro proyecto por defecto.

Una vez insertado el proyecto, procederemos a introducir la librería de Skype4COM.lib, el

xml de configuración y el icono de nuestra aplicación. Nos quedará de la siguiente manera:

Éstos serían los parámetros mínimos para generar nuestro ejecutable. También podemos

conseguir que se cree un menú de programa e incluso un acceso directo al escritorio.

Page 15: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 15

Una vez realizada toda la configuración, procederemos a ejecutar nuestro proyecto de tipo

setup. Éste nos generará el ejecutable de instalación.

Page 16: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 16

3.3 - DISEÑO.

Nuestra aplicación se iniciará al encenderse el ordenador. La tendremos localizada en la

barra de herramientas con un icono verde que tiene dibujado un teléfono verde.

Si nos posicionamos sobre él y apretamos al botón derecho, se mostrará un menú con la

opción de configurar. Si apretamos sobre ella, se nos abrirá un formulario donde podremos

configurar el servidor, nombre de usuario y contraseña.

Una vez configurado nuestro usuario, estaremos conectados a Skype con el Crm On

Demand.

FUNCIONAMIENTO DE LA APLICACIÓN.

A continuación explicaré caso por caso todo el funcionamiento de las llamadas recibidas y

enviadas que realiza nuestra aplicación para comunicarse con Skype.

Page 17: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 17

LLAMADA RECIBIDA/ENVIADA ERRÓNEA.

Si al enviar o recibir una llamada se produce algún error, se grabará como una actividad

dentro del contacto, con el asunto y descripción de llamada errónea.

LLAMADA ENVIADA RECHAZADA O PERDIDA.

Si realizamos una llamada a un contacto desde Skype y éste nos rechaza o no nos contesta la

llamada, se mostrará un mensaje de llamada rechazada y se grabará dentro del contacto como una

actividad del tipo llamada, con el asunto “llamada enviada rechazada”.

Page 18: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 18

LLAMADA RECIBIDA RECHAZADA.

Este apartado es importante para saber el seguimiento que tiene el usuario con nuestros

contactos. Si recibimos una llamada de un contacto dentro de nuestro Crm On Demand y lo

rechazamos, se grabará dentro del contacto como una actividad con el asunto “llamada rechazada”.

Page 19: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 19

LLAMADA RECIBIDA ACEPTADA.

Al recibir una llamada de un contacto dado de alta en el Crm On Demand, se abrirá un

formulario con el nombre de la persona a la que pertenece y la compañía en la que opera. Mientras

atiendo su llamada, puedo poner el motivo de la llamada. Una vez finalizada la conversación,

guardaré todos los datos y éstos se guardarán como una Actividad finalizada del tipo llamada,

dentro del contacto o en la oportunidad del contacto, el asunto y la descripción que hemos escrito, la

hora de inicio y de fin.

Page 20: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 20

LLAMADA ENVIADA ACEPTADA.

Al realizar una llamada a un contacto de nuestro Crm On Demand y que éste la acepte,

automáticamente tendremos abierto un formulario con el nombre de la persona a la que pertenece y

la compañía en la que trabaja. Una vez atendida la llamada, pondremos el motivo de nuestra

llamada y la guardaremos en nuestro Crm On Demand. Éstos se guardarán como una actividad del

tipo llamada, dentro del contacto llamado, o en una de las oportunidades.

Page 21: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 21

LLAMADA RECIBIDA PERDIDA.

Otro punto para observar la eficiencia del trabajador en las respuestas con los contactos: si al

recibir una llamada no la aceptamos, ésta se grabará en el contacto de nuestro Crm On Demand,

como una actividad del tipo llamada, con el asunto “llamada recibida perdida”.

Page 22: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 22

Page 23: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 23

3.4 - DESARROLLO

Para desarrollar nuestro proyecto, he intentado realizar una estructuración en cuanto

a estructura de datos, acceso a los objetos (ya sean procedentes de un servicio web o de un xml),

encriptación y formularios. Para la parte de objetos en un formulario, como puede ser un textBox o

la definición de las variables, también he utilizado una nomenclatura.

La estructura de la aplicación es la siguiente

A continuación pasaré a explicar la estructuración del proyecto.

ESTRUCTURA DE DATOS (Ed)

Dentro de la definición de estructura de datos sólo he definido una, la estructura de datos de

constantes, que contendrá el nombre del servidor, el usuario y la contraseña. Sólo he realizado una

estructura de datos, ya que al crear la referencia web ya tengo definida toda la estructura del

contacto.

FORMULARIOS

Tenemos definidos tres formularios: el formulario principal, el de configuración y el de

llamada aceptada.

Page 24: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 24

Formulario principal

Al ser una aplicación en .NET del tipo forms, el formulario principal será donde cargaremos

toda la aplicación. Al iniciar la aplicación, se iniciará el programa en la barra de herramientas, con

el icono y el botón de configuración. A continuación, pasaremos a leer el fichero de configuración

que contendrá las variables de servidor, usuario y contraseña. Para finalizar, iniciaremos el evento

de escucha de Skype.

private void fCallCenter_Load(object sender, EventArgs e) { try { ContextMenu.MenuItems.Add("Configurar", new EventHand-ler(this.bConfigurar_Click)); ContextMenu.MenuItems[0].DefaultItem = true; nApp.Icon = new Icon("callll.ico"); nApp.ContextMenu = this.ContextMenu; nApp.Text = "Configurar"; nApp.Visible = true; constantes = Xml.CargarConfiguracion(); cSkype = new SkypeClass(); ((_ISkypeEvents_Event)cSkype).CallStatus += Skype_CallStatus; cSkype.Attach(8, false); } catch { } }

Ahora pasaremos a explicar la escucha del evento Skype. Cada vez que se detecte un evento de

Skype, entraremos en la función Skype_CallStatus. En esta función lo que realizaremos es la

escucha de Skype. Nosotros detectaremos los casos de si es llamada enviada, aceptada, perdida,

errónea y rechazada. Dependiendo del tipo de llamada, inicializaremos nuestros objetos y

enviaremos a dar de alta en el Crm On Demand como una actividad en los casos de llamada fallida,

errónea o rechazada y en el caso de llamada aceptada abriremos el formulario correspondiente con

el objeto inicializado.

private static void Skype_CallStatus(SKYPE4COMLib.Call aCall, TCallStatus aStatus) { try { Contact.ContactData contact; Contact.ActivityData activity = new Contact.ActivityData(); string sSkype = aCall.PartnerHandle; string sSubj = ""; bool btlf = false; Regex regexNumeros = new Regex("[0-9]"); if (regexNumeros.IsMatch(sSkype.ToString())) btlf = true; switch (aStatus) { case TCallStatus.clsInProgress: fDescription fDesc = new fDescription(); if (bEnviada == false) sSubj = "Llamada Recibida Aceptada."; else

Page 25: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 25

sSubj = "Llamada Enviada Aceptada."; fDesc.LoadDescription(sSkype, sSubj, btlf); fDesc.Show(); bEnviada = false; break; case TCallStatus.clsMissed: if (btlf == false) contact = Crm.GetUser(sSkype, ""); else contact = Crm.GetUser("", sSkype); activity.OwnerId = contact.OwnedById; activity.Activity = "Cita"; activity.Status = "Completado"; activity.Type = "Llamada"; if (bEnviada == false) sSubj = "Llamada Recibida Perdida."; else sSubj = "Llamada Enviada Perdida."; activity.Subject = sSubj; activity.Description = sSubj; Crm.SetCall(activity, contact); bEnviada = false; nApp.ShowBalloonTip(500, "Llamada Perdida.", "Llamada Perdida.", ToolTipIcon.Info); break; case TCallStatus.clsFailed: if (btlf == false) contact = Crm.GetUser(sSkype, ""); else contact = Crm.GetUser("", sSkype); activity.OwnerId = contact.OwnedById; activity.Activity = "Cita"; activity.Status = "Completado"; activity.Type = "Llamada"; if (bEnviada == false) sSubj = "Llamada Recibida Fallida."; else sSubj = "Llamada Enviada Fallida."; activity.Subject = sSubj; activity.Description = sSubj; Crm.SetCall(activity, contact); bEnviada = false; nApp.ShowBalloonTip(500, "Llamada Fallida.", "Llamada Fallida.", ToolTipIcon.Info); break; case TCallStatus.clsRefused: if (btlf == false) contact = Crm.GetUser(sSkype, ""); else contact = Crm.GetUser("", sSkype); activity.OwnerId = contact.OwnedById; activity.Activity = "Cita"; activity.Status = "Completado"; activity.Type = "Llamada"; if (bEnviada == false) sSubj = "Llamada Recibida Rechazada."; else sSubj = "Llamada Enviada Rechazada."; activity.Subject = sSubj; activity.Description = sSubj; Crm.SetCall(activity, contact); bEnviada = false;

Page 26: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 26

nApp.ShowBalloonTip(500, "Llamada Rechazada.", "Llamada Rechazada.", ToolTipIcon.Info); break; case TCallStatus.clsRouting: bEnviada = true; break; default: break; } } catch { } }

Formulario de configuración

El formulario de configuración es donde podremos modificar los siguientes parámetros del

Crm On Demand: nombre del servidor, usuario y contraseña del usuario. Al formulario podremos

acceder situándonos en la barra de herramientas, buscando el icono de nuestra aplicación, pulsando

botón derecho y accediendo a configuración.

Una vez accedamos, se nos abrirá un formulario donde se cargarán los parámetros de

servidor, usuario y contraseña que contiene el formulario Xml y saldremos del formulario.

public fConfiguration() { InitializeComponent(); try {

Page 27: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 27

tServidor.Text = !string.IsNullOrEmpty(fCallCenter.constantes.Servidor) ? fCallCenter.constantes.Servidor : ""; tUsuario.Text = !string.IsNullOrEmpty(fCallCenter.constantes.Usuario) ? fCallCenter.constantes.Usuario : ""; tContransenya.Text = !string.IsNullOrEmpty(fCallCenter.constantes.Pwd) ? fCallCenter.constantes.Pwd : ""; } catch { } }

Si realizamos alguna modificación al formulario y pulsamos “guardar” se modificarán los

parámetros de configuración en el fichero Xml. Para realizar la modificación, iremos a la capa ADO

(acceso de datos) y llamaremos a la función GuardarConfiguración.

private void bAceptar_Click(object sender, EventArgs e) { try { Xml.GuardarConfiguracion(tServidor.Text, tUsuario.Text, tContransenya.Text); this.Close(); } catch { } }

Al pulsar el botón “cancelar” saldremos del formulario sin guardar los cambios.

Formulario de llamada aceptada

Al realizar una llamada o recibirla de un contacto que tenemos en nuestro Crm On Demand,

si la aceptan o la aceptamos, se nos abrirá el formulario para guardar la consulta. En el formulario

nos aparecerá el nombre del contacto que llama o llamamos, la compañía a la que pertenece, un

campo donde podremos poner el motivo de la llamada y finalmente el botón “guardar”, que

realizará el alta de la actividad en el Crm On Demand.

Al apretar el botón “guardar” realizaremos el alta del Crm On Demand, que irá a la capa

ADO (acceso a datos) para realizar el alta de la activada.

Page 28: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 28

private void bColgar_Click(object sender, EventArgs e) { Contact.ActivityData activity = new Contact.ActivityData(); if (contact != null) { activity.OwnerId = contact.OwnedById; activity.Activity = "Cita"; activity.Status = "Completado"; activity.Type = "Llamada"; activity.Subject = sSubj; activity.Description = this.rDescription.Text; Crm.SetCall(activity, contact); } this.Close(); }

ACCESO A OBJETOS DE DATOS (ADO)

En el apartado de ADO es donde accederemos a los datos Crm On Demand y al fichero xml

de configuración, tanto para consultar, modificar o insertar. Primero pasaremos a explicar las

funciones que contiene el acceso al Crm On Demand.

Acceso Crm On Demand

En el acceso al Crm On Demand tenemos dos funciones. La SetCall es donde realizaremos

el alta en el Crm On Demand de la actividad en el contacto que corresponda. public static void SetCall(Contact.ActivityData iActivity, Contact.ContactData iContact) { Contact.Contact lConnection = new Contact.Contact(); Contact.ContactInsert_Input query_input = new Contact.ContactInsert_Input(); Contact.ContactInsert_Output query_output = new Contact.ContactInsert_Output(); Contact.ActivityData[] lActivity = new Contact.ActivityData[1]; lActivity[0] = iActivity; Contact.ListOfActivityData objListaActivity = new Contact.ListOfActivityData(); objListaActivity.Activity = lActivity; Contact.ContactData[] lContact = new Contact.ContactData[1]; iContact.ListOfActivity = objListaActivity; lContact[0] = iContact; Contact.ListOfContactData objListaContact = new Contact.ListOfContactData(); objListaContact.Contact = lContact; query_input.ListOfContact = objListaContact; Session mSession = IniciarSesion(); lConnection.Url = mSession.GetURL(); lConnection.CookieContainer = mSession.GetCookieContainer(); query_output = lConnection.ContactInsert(query_input); mSession.Destroy(); }

La otra función que tenemos es la de GetUser, que a partir del nombre o el teléfono

buscaremos el contacto con el que estamos interactuando en el Skype.

Page 29: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 29

public static Contact.ContactData GetUser(String sNomSkype, String sTlfSkype) { if (!string.IsNullOrEmpty(sNomSkype) || !string.IsNullOrEmpty(sTlfSkype)) { Contact.Contact lConnection = new Contact.Contact(); Contact.ContactQueryPage_Input query_input = new Con-tact.ContactQueryPage_Input(); Contact.ContactQueryPage_Output query_output = new Con-tact.ContactQueryPage_Output(); Contact.ContactQuery consulta = new Contact.ContactQuery(); consulta.Id = new Contact.queryType(); consulta.Id.Value = ""; consulta.ContactFirstName = new Contact.queryType(); consulta.ContactFirstName.Value = ""; consulta.ContactLastName = new Contact.queryType(); consulta.ContactLastName.Value = ""; consulta.AccountName = new Contact.queryType(); consulta.AccountName.Value = ""; consulta.ContactFullName = new Contact.queryType(); consulta.ContactFullName.Value = ""; if (sNomSkype != "") { consulta.stSkype = new Contact.queryType(); consulta.stSkype.Value = "='" + sNomSkype + "'"; } else if(sTlfSkype != "") { consulta.CellularPhone = new Contact.queryType(); consulta.CellularPhone.Value = "='" + sTlfSkype + "'"; } consulta.OwnedById = new Contact.queryType(); consulta.OwnedById.Value = ""; query_input.ListOfContact = new Contact.ListOfContactQuery(); query_input.ListOfContact.Contact = consulta; query_input.ListOfContact.startrownum = "0"; Session mSession = IniciarSesion(); lConnection.Url = mSession.GetURL(); lConnection.CookieContainer = mSession.GetCookieContainer(); query_output = lConnection.ContactQueryPage(query_input); mSession.Destroy(); if (query_output.ListOfContact.Contact != null) return query_output.ListOfContact.Contact[0]; else return null; } else return null; }

Acceso Xml

En el fichero Xml tendremos los siguientes datos: nombre de servidor, usuario y la

contraseña encriptada. Para realizar el acceso a los datos tendremos dos funciones.

CargarConfiguración es donde realizaremos la lectura del fichero y la posterior inicialización de la

clase constantes.

Page 30: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 30

public static Constantes CargarConfiguracion() { fCallCenter.xDoc.Load("Configuracion.xml"); fCallCenter.configuraciones = fCallCen-ter.xDoc.GetElementsByTagName("configuraciones"); fCallCenter.configuracion = ((XmlEle-ment)fCallCenter.configuraciones[0]).GetElementsByTagName("configuracion"); Constantes config = new Constantes(); foreach (XmlElement nodo in fCallCenter.configuracion) { config.Servidor = @nodo.GetAttribute("Server"); config.Usuario = @nodo.GetAttribute("Usuari"); config.Pwd = Crypt.Decrypt(@nodo.GetAttribute("Pwd")); } return config; }

La clase GuardarConfiguración, que es la función que se llama desde el formulario de

configuración y realizaremos la modificación en el fichero Xml de los parámetros: nombre del

servidor, usuario y contraseña.

public static void GuardarConfiguracion(string sServidor, string sUsuario, string sContra-senya) { foreach (XmlElement nodo in fCallCenter.configuracion) { nodo.SetAttribute("Server", !string.IsNullOrEmpty(sServidor) ? sServidor : ""); fCallCenter.constantes.Servidor = !string.IsNullOrEmpty(sServidor) ? sServi-dor : ""; nodo.SetAttribute("Usuari", !string.IsNullOrEmpty(sUsuario) ? sUsuario : ""); fCallCenter.constantes.Usuario = !string.IsNullOrEmpty(sUsuario) ? sUsuario : ""; nodo.SetAttribute("Pwd", !string.IsNullOrEmpty(sContrasenya) ? Crypt.Encrypt(sContrasenya) : ""); fCallCenter.constantes.Pwd = !string.IsNullOrEmpty(sContrasenya) ? sContra-senya : ""; } fCallCenter.xDoc.Save("Configuracion.xml"); }

SESION CRM ON DEMAND

Para poder conectarnos al Crm On Demand necesitamos obtener un id de sesión. Cabe

destacar que, por razones de seguridad, el id de sesión sólo será operativo 20 minutos. Para obtener

el id de sesión tenemos la clase Session. Para poder realizar la conexión, crearemos una instancia de

la clase Session y especificaremos los campos de servidor, usuario y contraseña de nuestro usuario

del Crm On Demand.

Session mSession = new Session();

mSession.server = @fCallCenter.constantes.Servidor; mSession.username = @fCallCenter.constantes.Usuario; mSession.password = @fCallCenter.constantes.Pwd; mSession.Establish();

Page 31: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 31

ENCRIPTACIÓN

Al realizar la configuración de los parámetros de acceso al Crm On Demand accedemos a

los datos a través de un fichero Xml. Este fichero contiene la contraseña de nuestro usuario de Crm

On Demand. Para que no esté visible, he procedido a realizar una encriptación de la contraseña.

Para poder realizar la encriptación, dispongo de la función Cript(), que pasaremos por pará-

metro la contraseña sin encriptar y la devolverá encriptada. Ésta función la utilizaremos cuando

realicemos la escritura de la contraseña en el Xml.

Para desencriptar tenemos la función Decrypt(), que le pasaremos por parámetro la contra-

seña encriptada y nos la devolverá desencriptada. Esta función la utilizaremos cuando tengamos que

iniciar sesión en el Crm On Demand.

PÁGINA HTML CON JAVASCRIPT

Para poder realizar una llamada desde mi Crm On Demand a Skype, tuve que buscar una

solución que me permitiese realizar la llamada desde la página de contactos, con las limitaciones del

Crm On Demand a la hora de realizar su personalización. Opté por poner un campo del tipo enlace

web, que realizase una llamada a una página web con una función javascript y realizase la llamada a

Skype.

Para realizar la llamada a Skype con un número de teléfono realizamos la siguiente función:

window.location.href = "skype:" + skype + "?call";

Y para una llamada del tipo contacto de Skype, ésta otra:

window.location.href = "callto://+" + call;

Los parámetros de la página web son enviados por la dirección web. Una vez realizada la

llamada, se comprobará si es una llamada del tipo teléfono o nombre de Skype y, dependiendo del

tipo de llamada, se realizará la llamada a Skype.

<script language="JavaScript"> function SendParam() { try { var parameters = location.search.substring(3).split("&"); var temp = parameters[0].split("="); temp = parameters[0].split("="); id = unescape(temp[1]); temp = parameters[1].split("="); call = unescape(temp[1]); temp = parameters[2].split("="); skype = unescape(temp[1]); if (call != "") CallTlfSkype(id, call); else if (skype != "") CallSkype(id, skype); else Error(id); } catch (err) { } }

Page 32: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 32

function CallTlfSkype(id,call) { window.location.href = "callto://+" + call; top.location.href = "https://secure-vmsomxlma.crmondemand.com/OnDemand/user/ContactDetail?OMTGT=ContactDetailForm&OMTHD=ContactDetailNav&OCTYPE=&ContactDetailForm.Id=" + id; } function Error(id) { top.location.href = "https://secure-vmsomxlma.crmondemand.com/OnDemand/user/ContactDetail?OMTGT=ContactDetailForm&OMTHD=ContactDetailNav&OCTYPE=&ContactDetailForm.Id=" + id; } function CallSkype(id,skype) { window.location.href = "skype:" + skype + "?call"; top.location.href = "https://secure-vmsomxlma.crmondemand.com/OnDemand/user/ContactDetail?OMTGT=ContactDetailForm&OMTHD=ContactDetailNav&OCTYPE=&ContactDetailForm.Id=" + id; } SendParam(); </script>

Page 33: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 33

3.5 - EVALUACIÓN

El proyecto se ha realizado en diferentes fases, explicadas a continuación:

1- Comunicación Crm On Demand con Skype.

2- Más funcionalidad.

3- Parámetros de configuración.

1- Comunicación Crm On Demand con Skype

El Crm On Demand es una aplicación que se encuentra instalada en los servidores de Oracle.

Para averiguar si podíamos conectar el Crm On Demand con Skype, realizamos una primera versión

muy simple, que realizase una llamada desde el Crm On Demand a Skype y efectuara una alta de

una actividad en el Crm On Demand. Al no tener la opción de poder añadir un botón al Crm On

Demand que ejecute una función javascript, tuvimos que buscar otra solución para realizar una

llamada. La solución fue añadir un enlace web que llamase a una web con una función javascript,

diese de alta una actividad en el Crm On Demand y volver a la página del Crm On Demand. Una

vez realizado con éxito este apartado, fuimos a crear la aplicación de verdad.

2- Más funcionalidad

Para añadir más funcionalidad, he creado una aplicación de escritorio tipo cliente con la

librería Skype4com para realizar la escucha.

Para añadir la librería tuve bastantes problemas, a causa de que es una librería que contiene

advertencias y la tuve que recompilar para poder añadirla a mi proyecto. Una vez añadida, creé el

evento de escucha para Skype y observé los parámetros que devolvía para poder identificar lo que

estaba sucediendo. Una vez identificados los 5 casos bidireccionales que quería controlar:

1- Llamada aceptada

2- Llamada rechaza

3- Llamada perdida

4- Llamada errónea

5- Quien realiza la llamada,

fuimos a realizar la comunicación con el Crm On Demand. La primera prueba fue aceptar una

llamada, ir a consultar la persona a quien realizamos la llamada o nos realiza la llamada y abrir un

formulario para explicar la causa de la llamada. Si no encontramos a la persona dentro del

formulario, nos grabará la actividad como un error. Para realizar la prueba, arrancamos la aplicación,

nos conectamos al Crm On Demand y efectuamos la llamada. Una vez aceptada, comprobamos que

se abrió el formulario para detallar la descripción. Una vez finalizada la llamada, pondremos el

motivo de la llamada y guardaremos. Para comprobar que todo se ha realizado correctamente,

accedemos a las actividades finalizadas del contacto y observamos que el resultado ha sido

satisfactorio.

En el siguiente test, realizaremos una llamada desde el cliente y la dejaremos sonar. Pasado

un buen rato, tendremos guardada una actividad de llamada perdida, guardada por el contacto que

ha realizado la llamada.

Page 34: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 34

Ahora pasaremos a rechazar las llamadas, tanto las del cliente como las nuestras hacia el

cliente. Una vez realizadas las pruebas, tenemos las actividades de rechazo guardadas

satisfactoriamente.

Para finalizar, realizaremos una llamada con el Skype del cliente apagado. Podemos

observar que la actividad guardada es del tipo errónea.

Page 35: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 35

3.6 – RECURSOS UTILIZADOS

Para poder desarrollar una aplicación de .NET la gente de Microsoft nos facilita un enlace

donde podemos consultar toda la documentación necesaria:

http://msdn.microsoft.com/es-es/library/vstudio/dd831853%28v=vs.100%29

Para realizar la conexión al Crm On Demand consumiendo servicios web, encontré la

información necesaria en la página oficial de Oracle:

www.oracle.es

Para descargarme la librería de Skype y saber como funcionaba, tuve que darme de alta

como desarrollador en:

www.developer.skype.com

Page 36: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 36

3.7 - MANUALES

En primer lugar explicaremos cómo realizamos la instalación de la aplicación en nuestro

ordenador y, posteriormente, cómo nos desenvolveremos por nuestra aplicación.

INSTALACIÓN DE LA APLICACIÓN.

Una vez generado el ejecutable, podremos instalarlo en todos los ordenadores que cumplan

los requisitos mínimos. Si el ordenador no tiene instalado el framework correspondiente a nuestra

versión, nos pedirá si lo queremos ejecutar. Por defecto se instalará en Archivos de Programa en la

carpeta Qualita, que se creará si no lo estaba previamente.

FUNCIONAMIENTO DE LA APLICACIÓN

La aplicación la tenemos situada en la barra de herramientas, con la apariencia de un círculo

verde con un teléfono blanco.

Para poder configurar nuestra aplicación de comunicación entre Skype y Crm On Demand,

tendremos que ponernos encima del icono y apretar el botón secundario del ratón.

En el formulario de configuración podremos observar los tres parámetros a configurar: el

servidor del Crm On Demand, el usuario y la contraseña. Si modificamos y no guardamos, los

cambios no se realizarán. Para que tengan validez, tenemos que guardar.

Page 37: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 37

Una vez hemos realizado la configuración de nuestro Crm On Demand, ya podemos

empezar a utilizar nuestra aplicación. Para ello, es necesario acceder al formulario de contacto,

poner el nombre del Skype al que queremos llamar en el campo “Skype” y apretar “call” para

efectuar la llamada.

Para poder visualizar las actividades referentes al Crm On Demand, tendremos que ir a

contactos. Dentro de contactos, al apartado de actividades finalizadas, que es donde quedan

grabadas.

Page 38: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 38

4 – APORTACIONES A MIS CONOCIMIENTOS

Las aportaciones a mis conocimientos las explicaré a continuación:

1- Consumo de servicios web

2- Parametrización Crm On Demand

3- Librería Skype

4- .NET

1-Consumo de servicios web

Para poder conectar con el Crm On Demand sólo teníamos una manera, y era realizando el

consumo de servicios web. Los servicios web se crearon para poder realizar una serialización y

poder obtener una comunicación con diferentes entornos remotos.

2-Parametrización Crm On Demand

Para poder llamar a Skype tuve que realizar una parametrización del objeto contacto. Para

ello, tuve que abrirme paso con la herramienta de parametrización propia del Crm On Demand. Una

vez conseguido, tuve que crear un rol para poder visualizar mi parametrización. Éstos son muy

importantes ya que, dependiendo del rol que tengamos, podemos ver una página de contactos u otra.

3-Librería Skype

Para tener una comunicación, tenía la librería Skype4com, una librería realizada por la gente

de Skype. Esta librería permite realizar una escucha de todas las acciones de Skype y detectar en

todo momento lo que está sucediendo.

4-.NET

La única manera de poder comunicar con Skype realizando una aplicación Cliente era

con .NET. Tenía la opción de escoger entre Visual Basic o C#. Evidentemente, mi elección fue C#

que, a diferencia de Visual Basic, es un lenguaje orientado a objetos.

Page 39: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 39

5 – APORTACIONES DE LOS ESTUDIOS REALIZADOS AL PROYECTO

He tenido diferentes tipos de aportaciones dentro de la carrera al proyecto, tanto a nivel de

conocimientos como a nivel de valerse por sí mismo. Ahora procederemos a explicar los diferentes

puntos.

1- Adaptación a un lenguaje de programación.

2- Metódico

3- Uso de librerías.

4- Encriptación.

1-Adaptación a un lenguaje de programación

En la universidad tenemos la asignatura de programación, en la cual nos explican los

conceptos básicos de la programación para poder valernos por nosotros mismos. En el resto de

asignaturas, en las que hemos utilizado un lenguaje de programación diferente, nos hemos tenido

que valer por nosotros mismos. Por lo tanto, la adaptación al lenguaje C# no fue muy complicada.

2-Metódico

Uno de los valores que nos enseñan en la universidad es a ser lo más ordenado y eficiente

posible.

3-Uso de Librerías

Para poder realizar la comunicación con Skype, he utilizado la librería Skype4com. Es una

librería que no sé cómo la han realizado, pero sí que tengo claro lo que quiero obtener de ella, una

práctica muy utilizada en diferentes asignaturas.

4-Encriptación

En la universidad había utilizado más de una herramienta para poder encriptar una

contraseña y poderla recuperar. El concepto ha sido el mismo.

Page 40: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 40

6 - CONCLUSIONES.

La realización del proyecto se ha compuesto de diferentes fases que enumeraré y explicaré a

continuación.

1- Elegir un sistema de Voip que no requiera instalación.

2- Mejorar la aplicación con más funciones de actividad.

3- Parámetros de configuración.

4- Modelo de diseño.

1-Elegir un sistema de Voip que no requiera instalación

En la empresa se quería interactuar entre una aplicación de Voip y el Crm On Demand. El

sistema de Voip tenía que cumplir el requerimiento de no tener que realizar una instalación de

hardware. La aplicación elegida fue Skype, ya que es una de las aplicaciones Voip más utilizadas:

puedes obtener un número de teléfono para que te llamen y tiene las tarifas bastante reducidas.

Una vez elegida la aplicación, me propuse crear una primera demostración. Para ello tenía

que intentar comunicar el Skype con el Crm On Demand. El Crm On Demand es poco flexible en

cuanto a parametrización. Mi primera idea fue poner un botón en la página contactos para realizar la

llamada a Skype, pero no pude llevarlo a cabo ya que no existe esta opción. Entonces encontré la

opción de poder poner un enlace web y hacer la llamada web.

Al realizar la llamada web llamaba a una página ASP pasando los parámetros del usuario.

Éste lo llamaba por Skype y daba de alta en el Crm On Demand, que efectuaba una llamada.

Al realizar un primer test con éxito, se optó por hacer una implementación más extensa.

2- Mejorar la aplicación con más funciones de actividad.

Una vez conseguida la comunicación entre Skype y el Crm On Demand buscamos la manera

de conseguir más funcionalidad en nuestra aplicación. Para ello, teníamos la librería Skype4com,

que nos permitía saber en todo momento lo que realizaba nuestro Skype. Ahora sí que teníamos una

manera de conseguir una buena comunicación entre Skype y el Crm On Demand.

Se escogió crear una aplicación de escritorio, debido a que nuestra aplicación se tenía que

ejecutar en cliente para escuchar las acciones de Skype.

Una vez efectuado un testeo de la librería, escogí las siguientes opciones, tanto para

llamadas enviadas como recibidas.

1- Llamada aceptada: en ella podría saber en todo momento la persona que me llama o realizó

la llamada y poner el motivo de la llamada.

2- Llamada rechazada: indicaremos si hemos colgado o han colgado.

3- Llamada perdida: detectaremos si no hemos contestado a una llamada.

4- Llamada fallida: si se produce algún error, queda grabado.

La verdad es que los puntos de llamada rechazada y perdida son buenos, ya que ayudan a

evaluar el compromiso de la persona que atiende las llamadas.

Page 41: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 41

Una vez llegados a este punto, sólo veo un inconveniente, y se encuentra en el acceso del

Crm On Demand para consultar o insertar una tarea, ya que los accesos a servicios web son muy

seguros pero lentos.

3-Parámetros de configuración

Ahora que nuestra aplicación tiene una muy buena conexión entre el Crm On Demand y

Skype, está lista para instalarse en los call Centers de la empresa. Sólo hay un inconveniente, cada

persona tiene su usuario y contraseña para el Crm On Demand. Para ello, creamos un formulario de

configuración que escribiría en un fichero Xml el usuario, la contraseña y el servidor. Una vez

realizado este paso, teníamos un problema de confidencialidad con la contraseña, y es cuando

optamos por encriptar la contraseña.

4-Modelo de diseño

Para evitar repeticiones de código, y si hay un problema, detectar rápido dónde se encuentra

el error.

Ésta ha sido una buena práctica. Un ejemplo claro es el de insertar una actividad. Nosotros

tenemos diferentes tipos de activad: llamada aceptada, errónea, rechazada y perdida. Pero realmente

sólo realizamos una inserción a una actividad desde la capa de acceso a datos. Al optimizar

podemos ir más rápidos, ser más limpios y detectar antes un error y, lo que es más importante, si

viene otra persona, que pueda corregir el error con facilidad.

Page 42: Sincronización CRM on Demand con Skype - deim.urv.catdeim.urv.cat/~pfc/docs/pfc1253/d1347222923.pdf · Hemos desarrollado una aplicación permanente de escucha entre Skype y la aplicación

Jordi Rodríguez Montilla PFC: Sincronización CRM On Demand Con Skype

Página 42