/
Salesforce V 3.0.0

Salesforce V 3.0.0

Integración SALESFORCE - NEOTEL

El presente documento tiene como finalidad acercar al cliente el diseño, alcance y funcionamiento de la integración desarrollada por Neotel.

Alcance Neotel

Desde el lado de Neotel proporcionamos, proyecto mediante, el conector para la integración con SalesForce, instalando el mismo en el servidor de aplicaciones donde el cliente posee la solución de Neotel, colaboramos con la configuración del puerto 443 (necesario para el cifrado HTTPS) y le brindamos al cliente el detalle de la configuración necesaria tanto en SalesForce como en Neotel para el correcto funcionamiento de la integración.

Las configuraciones necesarias del lado de SalesForce para que la integración sea efectiva quedarán a cargo del cliente sin excepción y Neotel no dará soporte sobre las mismas.

En ningún caso Neotel se responsabiliza por cualquier multa o daño que el cliente pudiera sufrir por la indebida gestión y control de la herramienta.

 

Funcionamiento General

En el siguiente diagrama se pueden observar las relaciones entre todas las partes involucradas en la integración:

 

Consideraciones importantes para tener en cuenta:

 

El usuario debe tener acceso a Internet para conectarse a SalesForce.

Para el uso de telefonía, basta con tener acceso a la red donde están los servidores de Neotel.

El servidor de aplicación de Neotel debe contar con certificado HTTPS y tener acceso a Internet para poder comunicarse con SalesForce.

SalesForce dispone de un listado de IPs que deben estar habilitadas para conexión. Para conocerlas, siga el siguiente enlace: https://help.salesforce.com/articleView?id=000321501&type=1&mode=1 .

 

Funcionamiento Interno del Conector

 

Gestionando con SalesForce

Login

 

Al clickear sobre él, se desplegará mostrando la siguiente pantalla de login:

El usuario deberá loguearse también con un usuario de Neotel a la plataforma de telefonía.

Para loguearse se requieren 3 datos: DISPOSITIVO, USUARIO y PASSWORD. Estos serán los mismos con los que se configurará el softphone para comunicaciones (X-Lite en la imagen de ejemplo).

De esta manera, ya tendremos entrelazado el usuario de telefonía con el de CRM.

Pantalla de SalesForce -GENERAL-


Conector

Look


Funcionalidades

REALIZAR / FINALIZAR UN LLAMADO

 

El CONECTOR integrado en SalesForce da la posibilidad de REALIZAR UN LLAMADO a un número especifico y de FINALIZAR el mismo en caso de ser necesario.

Si el usuario esta en una transferencia atendida podrá cortarla y seguir con el llamado sin esperar el corte desde el otro lado de la línea.


DISCADO MANUAL

También se pueden realizar llamados manuales discando el número al cual se desea llamar directamente desde el CONECTOR.

 

 

Clickeando sobre el icono KEYBOARD, se habilita el input para ingresar el número a llamar.

 

 

Los llamados manuales dejan registro en el campo Description del objeto Task de SalesForce siempre y cuando este se encuentre habilitado para ser utilizado.

Ver apartado CENTRO DE LLAMADAS.

Para realizar un llamado el usuario debe estar logueado a una campaña saliente.


DTMF

Mientras el llamado este en curso, se habilita el envío de DTMF, ingresando los dígitos en el input, 0 a n dígitos y luego clickeando el botón DTMF, los mismos serán enviados uno por uno. La candidad de veces que sea necesario o deseado durante el llamado.


AGENDAMIENTO

Adicionalmente, el CONECTOR permite la posibilidad de AGENDAR un llamado para que sea discado por Neotel más adelante.

Crear agenda

Al presionar sobre el botón AGENDAR, se produce el siguiente cambio en la pantalla del conector:

Configurar agenda

Clickeando sobre el icono CALENDARIO, se despliega el mismo pudiendo seleccionar fecha y hora de la agenda:

Fecha y hora de agenda
Confirmar agenda

 

Al agendar un contacto, el mismo se categoriza como 10008 RESOLUCIONES DE SISTEMA - Scheduled User y es liberado de pantalla.


CONFIGURACIÓN

Clickeando sobre el icono de CONFIGURACIÓN, se abre la ventana de las posibles configuraciones para el usuario:

 

Se puede configurar ANCHO Y ALTO del conector, la opción de MINIMIZARLO AUTOMÁTICAMENTE cuando al caer un llamado/dato desde Neotel no se encuentra ninguna coincidencia y se abre la ventana de nuevo registro, o bien si se encontraron múltiples coincidencias y se abre la ventana de búsqueda.

Configuración de opciones

 


INFORMACIÓN

Clickeando sobre el icono de INFORMACIÓN, se abre la ventana con información relacionada a la llamada y al contacto:

Informacion del llamado en curso

 

Dato

Descripción

Dato

Descripción

Indentificador de última llamada

Este dato solo estará presente mientras este el llamado en curso. Un vez finalizado el mismo, pasará a valor 0 (cero), por mas que el contacto siga en pantalla. Esto es así porque el mismo contacto podría tener mas de 1 llamado por gestión.

Indentificador de contacto

Id del contacto en la base de datos del CRM de Neotel

Identificador de base de datos

Id de la base de datos del CRM de Neotel a la cual pertenece el contacto.

Identificador de CRM

Id del CRM de Neotel al que pertenece el contacto.

Clave de búsqueda

Clave por la cual se ha realizado la búsqueda dentro de Salesfroce.


TRANSFERENCIAS

Para realizar una transferencia telefónica el llamado debe estar en curso.

Transferir llamado

A teléfonos externos:

Por cada llamado que caiga al conector, se listaran los teléfonos de TRANSFERENCIA configurados en la campaña de telefonía ( Callcenter → Campañas → Telefonía) además de dar la opción de realizar un input manual.

Transferencias a usuarios externos

Al seleccionar un numero de transferencia:

o ingresar un numero:

A un usuario:

Transferencias a usuarios internos

Al seleccionar un usuario:

A una cola:

Transferencias a colas

Al seleccionar una cola:

A otra campaña:

Transferencia a campañas

Al seleccionar una campaña:

Opciones de transferencias:

Transferencia directa:

El operador transfiere el llamado directamente al otro extremo y termina la comunicación.

 

Transferencia atendida:

El operador transfiere el llamado, pero la comunicación no se corta, sino que debe ser atendida por el otro extremo.

Fin de transferencia:

En una transferencia atendida, el operador tiene la opcion de cortar la comunicación y volver al llamado original.

 

En el caso de campañas solo se puede realizar transferencia directa.


Funciones de telefonía

Funciones disponibles

Monitoreo de usuarios

Usuarios de la plataforma

Lista los usuarios disponibles en la plataforma para realizar un monitoreo (escucha) o asistencia de usuarios.

Seleccionar el usuarios y luego el tipo de monitoreo

Escuchar: Se podrá escuchar las conversaciones del usuario en cuestión, sin interferir en la conversación.

Asistir: Se podrá escuchar y asistir al operador durante la conversación, sin que el cliente escuche.

Fin: Sale del monitoreo.

 

Conferencia telefónica

El sistema permite realizar conferencias telefónicas con numero externos y usuarios internos de la plataforma.

Se debe iniciar la conferencia antes de invitar a los participantes.

 

Iniciar: Una vez iniciada la conferencia se podrá invitar a los participantes.

 

Finalizar: Se podrá finalizar la conferencia en cualquier momento deseado.

 

Invitar participantes:

Teléfono externo:

Conferencia con usuarios externos

Ingresar número de teléfono con quien desea comenzar una conferencia, se podrán sumar cuantos telefonos se desee, de uno por vez.

Usuarios de la plataforma:

Seleccionar el usuario y luego invitarlo a la conferencia, mediante el boton de la esquina inferior derecha (Invitar).

Se podrán sumar cuantos usuarios desee, de a uno por vez.


Estados de descanso

Esta pantalla lista todos los estado disponibles en el sistema para habilitarse o inhabilitarse a recibir llamados, incluidos los custom, y al clickear sobre uno de ellos, el usuario automáticamente pasará a ese estado.

Estados de usuario

 

EJ: Seleccionando el estado de sistema 1 - Descanso.

También podrá acceder a esta opción desde la esquina superior izquierda, clickeando sobre “Estado

 

Ingreso/Egreso Campaña Saliente

Mediante el CONECTOR el operador tendrá la posibilidad de LOGUEARSE A UNA CAMPAÑA específica para realizar llamados.

Ingreso/Egreso a campañas salientes

 

EJ: Seleccionando la campaña 97 - SALESFORCE

 

Podrá acceder a esta opción desde el margen superior clickeando sobre “Campaña Saliente


Funcionamiento de la Integración

 

Generar un CRM que permita API y que tenga, además de al menos un teléfono, un dato clave. El dato clave del CRM de Neotel debe ser el identificador del contacto en SalesForce.

 

Generar una campaña que utilice el CRM previamente creado.

 

Realizar la carga de bases de datos con teléfonos a llamar y el identificador único de cada contacto.

 

El usuario se loguea en SalesForce, luego en el conector y a la campaña (dentro del conector). De esta manera queda habilitado para realizar y recibir llamados.

 

En el caso de discador predictivo este realiza el llamado, conecta con el destino y lo pasa al usuario. Cuando el usuario atiende mediante el softphone, el conector realiza la búsqueda dentro de Salesforce y muestra el contacto en pantalla. Para el resto de los discadores, realiza el llamado lo pasa al usuario antes de conectar con destino, y realiza la búsqueda en Salesforce para que el usuario tenga el dato en pantalla al momento de conectar.

 

Luego de terminar el llamado y la gestión necesaria en el gestor de SalesForce, el usuario debe indicar, mediante el botón  (Play) en el conector, que está nuevamente disponible para realizar un llamado. Este paso no es necesario cuando la gestión fue categorizada como agenda.


Configuración para llamadas entrantes

Al ingresar el llamado, debe ejecutarse en base de datos el SP CONTACTO_INSERT_SALESFORCE. Este, busca el dato en el CRM, y si no lo encuentra, inserta uno nuevo, luego pasa el llamado a la cola.

Para el ejemplo, un llamado entrante sin toma de datos, se debe crear la variable IDDATABASE que será la base de datos donde se insertará el contacto, en caso de no ser encontrando:

Creación de variables

Luego, setear el valor correspondiente:

Configuración de variables

Y, posteriormente, ejecutar la transacción en base de datos:

Ejecucion en DB

PARÁMETROS:

@DATA: Valor de búsqueda. La búsqueda se realiza por el campo clave de tipo Clave_1.

@ANI: Número de teléfono del contacto, si el campo clave de búsqueda es el teléfono (Campo clave tipo TELEFONO), de igual manera se debe crear el campo CLAVE_1 para realizar la integración.

@IDDATABASE: Base donde se insertará el contacto si no existe.

VARIABLE RETORNO:

CLAVESF es un string compuesto por idContacto y Data en formato idContacto-Data.

Se utiliza para poder contar con el idContacto de Neotel en Salesforce.

 

CASO DE PRUEBA:

Teniendo un árbol configurado con Clave_1 siendo el ANI (como en el ejemplo), puede darse que el cliente llame desde un número privado. De ser así, no tendríamos información que identifique al mismo en SalesForce, entonces no podríamos generar una agenda en Neotel y tampoco categorizar el contacto.

Con este campo CLAVESF, nos aseguramos de al menos tener el idContacto de Neotel para completar las tareas mencionadas.

Si al campo DATA le enviamos “” (vacío), este es completado con el idContacto generado al insertar este nuevo dato. En este caso la devolución sería: “idContacto-”, lo que ocasiona que el conector, no realice una búsqueda, sino que respete la configuración del centro de llamados en SalesForce (Nuevo registro / Búsqueda / Nada).

No genera inconvenientes si cada vez que llama se crea un dato nuevo, ya que la idea de la integración es que desde Neotel no se gestione nada del CRM, pero es imperativo contar con un registro para poder categorizar y agendar por sobre todo, aunque esa información solo quede disponible de manera fehaciente en Salesforce.

 

Lo siguiente es configurar la cola de llamadas:

Cola de llamadas

Los valores de CRM y BASE deben ser los mismos configurados en los pasos anteriores.

CAMPO DE BÚSQUEDA: Seleccionar el campo configurado como campo Clave_1

CLAVE: Valor por el cual se hará la búsqueda del dato en SalesForce. Para poder contar en SalesForce con el idContacto generado en Neotel, ingresar la variable de retorno de la ejecución en DB (CLAVESF).

En la configuración del CENTRO DE LLAMADAS en Salesforce es obligatoria la configuración

“myCustomCrmKeyField c-crmKey|myCustomCrmIdField c-crmId | myCustomContactIdField c -contactId”,

tanto para externalData como para defaultNewRowData, si se utilizaran llamados entrantes.

CRM ID, CRM KEY(Clave_1) y CONTACT ID son fundamentales y obligatorios para que la integración funcione correctamente, tanto entrante como saliente.


Configuración dentro de SalesForce

En este apartado encontrará cómo configurar el Callcenter (Centro de llamadas) en SalesForce para la lograr la integración con Neotel y qué parámetros elegir para la configuración del softphone.

Centro de Llamadas

 

Una vez en la pantalla de configuración de SalesForce ingresar en el campo de búsqueda CENTRO DE LLAMADAS (o CALLCENTER según la configuración de idioma) y en el menú CONFIGURACIÓN DE FUNCIONES > SERVICIO > CENTRO DE LLAMADAS, seleccionar la opción CENTROS DE LLAMADAS tal como se puede apreciar en la imagen

 

 

 

 

 

 

Se mostrará la siguiente pantalla de bienvenida:

El XML arriba mencionado, tiene la siguiente estructura:

<callCenter>   <section sortOrder="0" name="reqGeneralInfo" label="General Information">     <item sortOrder="0" name="reqInternalName" label="InternalName">NeotelCTI</item>     <item sortOrder="1" name="reqDisplayName" label="Display Name">Neotel CTI</item>     <item sortOrder="2" name="reqAdapterUrl" label="CTI Adapter URL">https://demo.neotel.us/Callcenter/OpenCTI/SFOpenCTI.html</item>     <item sortOrder="3" name="reqUseApi" label="Use CTI API">true</item>     <item sortOrder="4" name="reqSoftphoneHeight" label="Softphone Height">420</item>     <item sortOrder="5" name="reqSoftphoneWidth" label="Softphone Width">620</item>     <item sortOrder="6" name="reqSalesforceCompatibilityMode" label="Salesforce Compatibility Mode">Lightning</item>   </section>   <section sortOrder="1" name="neotelConfigOptions" label="Opciones">     <item sortOrder="0" name="searchTypePriority" label="Prioridad de búsqueda"></item>     <item sortOrder="1" name="externalData" label="Datos de neotel importables a Sf">neoContactId__c-contactId|neoBaseId__c-contactBaseId|neoCrmId__c-crmId</item>     <item sortOrder="2" name="defaultNewRowData" label="Datos default para nuevos Registros">neoContactId__c-contactId|neoBaseId__c-contactBaseId|neoCrmId__c-crmId|Phone-phoneNumber|</item>     <item sortOrder="3" name="allowCategorization" label="Permite categorización de contactos. (true/false)">true</item>     <item sortOrder="4" name="allowClickToDialSearch" label="Permite seleccionar un dato de SF, tomarlo en pantalla y gestionarlo. (ClickToDial)">true</item>     <item sortOrder="5" name="useTaskDescriptionField" label="Utiliza el campo descripción para guardar la información de la gestion.">true</item>     <item sortOrder="6" name="allowContactRelease" label="Permite liberar un contacto sin ser categorizado.">true</item>     <item sortOrder="7" name="automaticContactRelease" label="Liberar contacto automaticamente al terminar llamado. (Segundos)">-1</item>     <item sortOrder="8" name="saveActivityLog" label="Guardar automáticamente registro de llamada (Task).">true</item>     <item sortOrder="9" name="allowTextMessage" label="Permite enviar un mensaje al cliente por medio de SMS o Whatsapp.">false</item>     <item sortOrder="10" name="campaignEntityName" label="Permite asociar un id de campaña a un objeto de Salesforce.">false</item>   </section> </callCenter>
XML Ejemplo

 

<item sortOrder="0" name="searchTypePriority" label="Prioridad de búsqueda"></item>

Puede contener los valores Contact|Account|Lead|Opportunity|Company con los cuales se va a definir el orden de prioridad de búsqueda en caso de que se encuentre más de un resultado en la base de SalesForce.

Por ejemplo: si busco por Teléfono y hay un Contact y un Account con ese número asociado, mostrara la pantalla de contacto y no la de account.

Adicionalmente, si no se setea ninguna opción, es decir, se deja el valor “vacío”, si matchea mas de un registro (independientemente del tipo), mostrará la pantalla de búsqueda, o no hará nada, segúun este definido en el formato de soft phone.

<item sortOrder="1" name="externalData" label="Datos de neotel importables a Sf">neoContactId__c-contactId|neoBaseId__c-contactBaseId|neoCrmId__c-crmId</item>

Aquí se definen qué datos provenientes de Neotel serán actualizados en el registro de SalesForce. Ese dato se actualiza cada vez que cae la ficha para ese Contact|Account|Lead|Opportunity|Company.

Por ejemplo: Si buscamos que quede informado en la entidad de Salesforce (Contact/Lead/Opportunity/etc.) el dato Id Campaña Neotel para saber de qué campaña se lo contacto por última vez, se debe crear previamente el dato en el gestor de objetos de SalesForce y en el XML informar en externalData con qué dato de Neotel será reemplazado.

DATOS DE NEOTEL DISPONIBLES:

Nombre

Descripción

Nombre

Descripción

callCampaing

ID Campaña Neotel

callDialer

tipo de discador utilizado

callId

IdLlamada en Neotel

callQueue

IdCola Neotel

callReason

Motivo Traída (Agenda/No Procesado/etc.)

phoneNumber

Número telefónico de la llamada.

contactBaseId

Id DataBase del contacto en Neotel

campaignCrmId

ID CRM de la campaña saliente

campaignBaseId

ID DataBase de la campaña saliente

userOutCampaign

ID Campaña saliente a la que está logueado el usuario

crmId

ID CRM del contacto de la llamada en curso

contactId

ID Contacto Neotel

crmKey

Valor del campo clave de búsqueda del contacto

SearchBy

Nombre del campo por el cual se realizó la búsqueda en Salesforce

SearchData

Valor de SearchBy

Por ejemplo: en caso de llamados entrantes, se puede configurar que el cliente ingrese su DNI. Este dato viajará desde Neotel hacia el NeoOpenCTI como crmKey = 31987456 y con ese valor se buscará en SalesForce un registro coincidente.

En SearchBy y searchData informa si el registro coincidente se encontró por esa clave DNI o por otra, como ser TELEFONO.

<item sortOrder="2" name="defaultNewRowData" label="Datos default para nuevos Registros">neoContactId__c-contactId|neoBaseId__c-contactBaseId|neoCrmId__c-crmId|Phone-phoneNumber|</item>

Si al momento de caer un llamado/contacto desde Neotel, no se encuentra ninguna coincidencia en Salesforce y está configurado para que se cree un nuevo registro al darse esta condición, se asignan aquí los valores default que se llenarán automáticamente en la ficha.

Se utiliza la misma combinación de parámetros que en externalData.

Todas las entidades utilizadas con la integración (Account/Lead/Contact/Opportunity/etc.) deben tener creado el campo neoSyncId (neoSyncId c) que referencia a un id único, este debe ser Número (18, 0) (IdExterno) (Exclusivo).

El motivo es que al no encontrar coincidencia y abrir la pantalla de creación de un registro, se debe luego sincronizar el dato en el softphone con el nuevo registro creado en SalesForce, y se hace mediante un Id único (neoSyncId), para evitar errores.

Para lograr este funcionamiento se deben generar las clases de APEX detalladas en el ANEXO

<item sortOrder="3" name="allowCategorization" label="Permite categorización de contactos. (true/false)">true</item>

Permite categorizar los contactos desde el softphone, en base a las categorías y subcategorías creadas en el CRM.

Si su valor es FALSE, no modifica el funcionamiento.

Si su valor es TRUE, al clickear sobre el botón LIBERAR, se mostrará una nueva pantalla (que se muestra a continuación) donde seleccionar Categoría y Subcategoría, o simplemente liberar para soltar el contacto y pasar a la próxima gestión.

Tipificación de llamados

El resultado de la gestión se verá reflejado en la Actividad registrada en SalesForce (Llamada) en el campo RESULTADO DE LA LLAMADA1, al caer el contacto.

 

Debe habilitarse el campo CallDisposition en el layout de la entidad tareas (Task).

<item sortOrder="4" name="allowClickToDialSearch" label="Permite seleccionar un dato de SF, tomarlo en pantalla y gestionarlo. (ClickToDial)">true</item>

El clickToDial, en caso de que no tenga un dato tomado en el Conector, es básicamente una búsqueda de contacto, por lo tanto para hacerlo funcionar, en SalesForce el registro debe contar con los datos IdCrm y crmData (campo tipo Clave_1) de manera obligatoria, ya que con estos datos, buscara en Neotel para agendar y/o categorizar.

En el XLM allowClickToDialSearch es el campo que habilita o deshabilita la función "Búsqueda".

<item sortOrder="5" name="useTaskDescriptionField" label="Utiliza el campo descripción para guardar la información de la gestion.">true</item>

Como su label lo indica, useTaskDescriptionField utiliza el campo DESCRIPCION de SalesForce para guardar información de las gestiones realizadas a cada contacto.

Se le debe prestar especial atención dado que, en caso de esta opción estar activa, al momento de grabar la gestión pisará todo lo que se encuentre en DESCRIPCION, por ejemplo, notas que haya realizado el asesor.

<item sortOrder="6" name="allowContactRelease" label="Permite liberar un contacto sin ser categorizado.">true</item>

El allowContactRelease funciona igual que la opción “Liberar" de Neotel. (Saca el contacto de pantalla sin una tipificación especifica).

Se debe tener en cuenta que si el contacto fue traído al conector mediante clickToDial (es decir, no vino desde la central telefónica), se lo puede liberar, aunque esté esta opción en FALSE.

<item sortOrder="7" name="automaticContactRelease" label="Liberar contacto automaticamente al terminar llamado. (Segundos)">-1</item>

Habilita al conector a liberar el contacto automaticamente luego de x segundos, o pasar a pantalla de categorización según las opciones seteadas en esos items. (allowContactRelease /allowCategorizacion).

  • Para liberar el contacto automáticamente al cortar la comunicación la opción allowContactRelease debe ser true.

  • Para categorizar el contacto automáticamente al cortar la comunicación la opción allowCategorizacion debe ser true.

Valores inferiores a 0 es igual que setear false.

<item sortOrder="8" name="saveActivityLog" label="Guardar automáticamente registro de llamada (Task).">true</item>

Guardar automáticamente registro de llamada (Task)
Esta opción setea si los registros de llamada se guardan automáticamente en la entidad task / activity.
Por default es true.

<item sortOrder="9" name="allowTextMessage" label="Permite enviar un mensaje al cliente por medio de SMS o Whatsapp.">false</item>

Permite al usuario enviar un mensaje escrito al cliente por medio de SMS o Whatsapp.
Admite plantillas precargadas, que deben configurarse en el CRM correspondiente.
Ejecuta la misma tarea, para listar las plantillas y para el envío del mensaje.
Envía 5 parámetros. (ExecuteTask05)

parámetro

Descripción

parámetro

Descripción

type

Tipo de operación: get/send. Get: Obtener plantillas. Send: Enviar mensaje.

user

Identificador de usuario que realiza el request.

campaign

Identificador de la campaña del llamado.

number

Numero destino en caso de envío de mensaje

text

mensaje a enviar

Por default es false, para habilitar se debe ingresar el id de tarea que se debe ejecutar.

La tarea debe retornar los datos en el siguiente formato json:

Obtener plantillas predefinidas (type=get):

{ "error": false, "message": [{ "id": 1, "description": "Titulo de la plantilla 1", "value": "Texto del mensaje 1" }, { "id": 2, "description": "Titulo de la plantilla 2", "value": "Texto del mensaje 2" }] }

Enviar mensaje (type=send):

Ejecución satisfactoria:

{ "error": false, "message": "Texto del mensaje enviado" } // El mensaje se mostrará en pantalla al usuario para que pueda validar.

Ejecución con error:

{ "error": true, "message": "Descripcion del error" } // El mensaje se mostrara al usuario en el conector.

 

Se recomienda utilizar la Entidades de CRM para crear las plantillas predefinidas y poder obtenerlas mediante consultas de base de datos en la tarea.

 

<item sortOrder="10" name="campaignEntityName" label="Permite asociar un id de campaña a un objeto de Salesforce.">false</item>

Se puede asociar un IdCampaña de Neotel a un tipo de objeto en Salesforce para que, al no matchear ningún contacto durante la búsqueda en el sistema, la pantalla de nuevo registro que se abre sea la de un objeto definido en la entidad configurada.

Ejemplo:
Campaña “97-Salesforce Empresa”. Objeto: “Empresa-Lead__c”
Campaña “98-Salesforce Persona”. Objeto: “Candidato-Lead”

De esta manera al caer un dato nuevo de la campaña 97, el sistema abrirá la pantalla de nuevo registro del tipo customizado “Empresa-Lead__c”, y si es de la campaña 98 abrirá un nuevo “Candidato-Lead”.

Para habilitar esta opción, se debe configurar en el campo campaignEntityName con el id tarea, y searchTypePriority vacío.
En formato de softphone en Salesforce debe configurarse en la opción "No hay registros coincidentes: No abrir ninguna pantalla"

Se debe crear una tarea, para listar las relaciones, que reciba un parámetro para poder limitar por permiso las campañas que retorna.

Esto último debería configurarse en el sp, según criterio del cliente.

parámetro

descripción

parámetro

descripción

user

Identificador de usuario.

La tarea debe retornar los datos en el siguiente formato json:

Ejecución satisfactoria:

{ "error": false, "message": [{ "id": 97, "description": "Salesforce Empresa", "entityName": "Lead" }{ "id": 98, "description": "Salesforce Persona", "entityName": "Lead__c" },] }

Ejecución con error:

{ "error": true, "message": "Descripcion del error" }

Se recomienda utilizar la Entidades de CRM para crear las asociaciones predefinidas y poder obtenerlas mediante consultas de base de datos en la tarea.

El valor por defecto, en caso que no se configure esta opción, es false.

 

Al importar el archivo, aparecerá la siguiente pantalla donde presionaremos el botón GESTIONAR USUARIOS DE CENTRO DE LLAMADA para proceder a asignar los permisos necesarios a aquellos usuarios que vayan a usar el softphone:

Salesforce - Centro de llamadas

Entrar a la gestión de usuarios y luego a “agregar usuario”.

Filtro y selección de usuarios

Filtrar y seleccionar los usuarios que se desea agregar al centro de llamadas. Con esto los usuarios seleccionados verán la barra inferior y el soft phone en la sección ventas.

Formato de Softphone

¿Qué acción tomar al momento que cae un llamado?

Si no hay registros coincidentes, las opciones que SalesForce ofrece son las que se visualizan en la imagen:

 

 

Sin embargo, desde Neotel se recomienda escoger entre:

  • No abrir ninguna pantalla → no realiza acción alguna

  • Abrir en nueva “OPCION”    → abre la pantalla de creación de registro del tipo seleccionado.

  • Los valores default se configuran en el XML en el ítem defaultNewRowData

El conector no tendrá en cuenta si habilita la opcion “Abrir en página de Visualforce” o “Abrir en flujo”.

 

En la imagen se ve que en caso de que no haya registros coincidentes, se abrirá la pantalla de creación de contacto.

Al abrirse la pantalla de creación de registro (Account/Lead/etc.), se llenarán por default los datos configurados, y se cerrará el softphone para poner foco en el alta del registro

 

 

 

 

Una vez que el registro haya sido guardado y el usuario abra la pantalla del softphone, el mismo tendrá una advertencia que indica lo siguiente:

Al cerrar la ventana, se sincronizará, de haberlo, el nuevo registro en el softphone, caso contrario deberá liberarlo para continuar trabajando

 

Si el usuario por error cerrara la ventana antes de crear el nuevo registro, podrá sincronizarlo desde el softphone haciendo click sobre el icono de sincronizar que se encuentra al lado del Nombre:

 

 

 

En caso de que se encuentre un único registro coincidente, las opciones ofrecidas son:

 

De las cuales, para cumplir con la integración, solo se debe elegir entre:

  • No abrir ninguna pantalla → no realiza acción alguna

  • Página de detalle de apertura → abre la pantalla de detalle del tipo seleccionado

En la imagen se ve que en caso de que haya un registro coincidente, se abrirá la pantalla de detalle de apertura.

 

El conector no tendrá en cuenta si habilita la opcion “Abrir en página de Visualforce” o “Abrir en flujo”.

 

En cambio, si encuentra registros múltiples del mismo tipo, la integración, da la posibilidad de abrir pantalla de búsqueda o hacer nada, según lo definido en SalesForce:

 

El conector no tendrá en cuenta si habilita la opcion “Abrir en página de Visualforce” o “Abrir en flujo”.


ANEXO

CLASES DE APEX

 

IMPORTANTE

Los usuarios DEBEN TENER ACCESO a la clase de Apex (configuración en SalesForce).

En Salesforce, entrar en Profiles/Perfiles » Enabled ApexClass Access » agregar la clase NeotelDataRetrieval.

Se deben respetar los nombres de las clases, funciones y datos tal cual lo expresado a continuación:

 

global class NeotelDataRetrieval{ webService static String getLeadById(String Id) { List<String> fields = new List<String>(Lead.SObjectType.getDescribe().fields.getMap().keySet()); List<Lead> leads= new List<Lead>(); for (Lead lead: Database.query('Select ' + String.join(fields, ',') + ' from Lead where Id= :Id' )){ leads.add(lead); } String JSONString = JSON.serialize(leads); return JSONString; } webService static String getContactById(String Id) { List<String> fields = new List<String>(Contact.SObjectType.getDescribe().fields.getMap().keySet()); List<Contact> contacts= new List<Contact>(); for (Contact contact: Database.query('Select ' + String.join(fields, ',') + ' from Contact where Id= :Id' )){ contacts.add(contact); } String JSONString = JSON.serialize(contacts); return JSONString; } webService static String getAccountById(String Id) { List<String> fields = new List<String>(Account.SObjectType.getDescribe().fields.getMap().keySet()); List<Account> accounts = new List<Account>(); for (Account account: Database.query('Select ' + String.join(fields, ',') + ' from Account where Id= :Id' )){ accounts .add(account); } String JSONString = JSON.serialize(accounts); return JSONString; } webService static String getOpportunityById(String Id) { List<String> fields = new List<String>(Opportunity.SObjectType.getDescribe().fields.getMap().keySet()); List<Opportunity> opportunities = new List<Opportunity>(); for (Opportunity opportunity: Database.query('Select ' + String.join(fields, ',') + ' from Opportunity where Id= :Id' )){ opportunities .add(opportunity); } String JSONString = JSON.serialize(opportunities ); return JSONString; } }

Métodos de NeoApi

Listado de todos los métodos del Webservice Neotel que se utilizan desde el CTI:

  • Login

  • Logout

  • Login_Campaign

  • Logout_Campaign

  • Pause

  • Unpause

  • Dial

  • Hangup

  • Position

  • UpdateContact

  • CRM_Unavailable

  • CRM_Available

  • CRM_ShowingContact

  • JoinConference

  • InviteParticipant

  • KickAll

  • ExecuteTask01

  • ExecuteTask02

  • ExecuteTask03

  • ExecuteTask05

Related content