Salesforce V 3.0.0
- 1 Integración SALESFORCE - NEOTEL
- 2 Alcance Neotel
- 3 Funcionamiento General
- 4 Funcionamiento Interno del Conector
- 5 Gestionando con SalesForce
- 5.1 Login
- 5.2 Pantalla de SalesForce -GENERAL-
- 5.3 Conector
- 5.3.1 Look
- 5.4 Funcionalidades
- 5.4.1 REALIZAR / FINALIZAR UN LLAMADO
- 5.4.2 DISCADO MANUAL
- 5.4.3 DTMF
- 5.4.4 AGENDAMIENTO
- 5.4.5 CONFIGURACIÓN
- 5.4.6 INFORMACIÓN
- 5.4.7 TRANSFERENCIAS
- 5.4.7.1 A teléfonos externos:
- 5.4.7.2 A un usuario:
- 5.4.7.3 A una cola:
- 5.4.7.4 A otra campaña:
- 5.4.8 Opciones de transferencias:
- 5.4.8.1 Transferencia directa:
- 5.4.8.2 Transferencia atendida:
- 5.4.8.3 Fin de transferencia:
- 5.5 Funciones de telefonía
- 5.5.1 Monitoreo de usuarios
- 5.5.2 Conferencia telefónica
- 5.5.2.1 Invitar participantes:
- 5.5.2.2 Teléfono externo:
- 5.5.2.3 Usuarios de la plataforma:
- 5.5.3 Estados de descanso
- 5.5.4 Ingreso/Egreso Campaña Saliente
- 6 Funcionamiento de la Integración
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.
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.
Al presionar sobre el botón AGENDAR, se produce el siguiente cambio en la pantalla del conector:
Clickeando sobre el icono CALENDARIO, se despliega el mismo pudiendo seleccionar fecha y hora de la agenda:
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.
INFORMACIÓN
Clickeando sobre el icono de INFORMACIÓN, se abre la ventana con información relacionada a la llamada y al contacto:
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
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.
Al seleccionar un numero de transferencia:
o ingresar un numero:
A un usuario:
Al seleccionar un usuario:
A una cola:
Al seleccionar una cola:
A otra campaña:
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.
Funciones de telefonía
Monitoreo de usuarios
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.
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:
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).
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.
EJ: Seleccionando el estado de sistema 1 - Descanso.
Ingreso/Egreso Campaña Saliente
Mediante el CONECTOR el operador tendrá la posibilidad de LOGUEARSE A UNA CAMPAÑA específica para realizar llamados.
EJ: Seleccionando la campaña 97 - SALESFORCE
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:
Luego, setear el valor correspondiente:
Y, posteriormente, ejecutar la transacción en base de datos:
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:
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).
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>
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:
Entrar a la gestión de usuarios y luego a “agregar usuario”.
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
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.
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:
ANEXO
CLASES DE APEX
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