Integración Web

Integración Web

Webhooks

Let's Talk provee un mecanismo genérico de integración con servicios de terceros en tiempo real basado en webhooks para el intercambio de datos y en triggers automáticos y manuales para activar los webhooks. El mecanismo permite enviar datos de conversaciones y clientes a cualquier endpoint web o web service SOAP, usando un payload json o XML. De esta manera es posible mantener, por ejemplo, en un CRM un registro de todas las conversaciones en cuanto éstas son creadas, cerradas, transferidas y evaluadas. También es posible derivar una conversación de Let's Talk en un caso de un servicio de Ticketera o gatillar un SMS, todo dependiendo de la existencia del servicio apropiado.

Triggers

Para gatillar un webhook debe accionarse un trigger, es decir, un evento especial que detona el envío de la data configurada para dicho evento. Los triggers pueden ser automáticos, que son activados por modificaciones en el estado de las conversaciones o bien de manera manual por parte de un agente presionando un botón personalizado que se agrega a la interfaz de agente (por ejemplo: "Crear Ticket"). A continuación se listan los triggers de sistema:

  1. Creación de conversación.
  2. Cierre de conversación.
  3. Evaluación de conversación.
  4. Incorporación de miembros a la conversación.

Los triggers manuales pueden ser gatillados en cualquier momento desde la vista de detalle de una conversación en la interfaz web de agente. Los triggers pueden ser múltiples para una misma conversación, es decir, puede haber triggersvarios automáticos y varios manuales.

Contenido (payload)

El contenido disponible para el envío vía webhooks es todo el que se puede ver en la vista de detalle de una conversación en la interfaz web de agente, tales como:

  • Mensajes.
  • Nombre de cliente.
  • Fecha de creación.
  • Fecha de cierre.
  • Tiempo de respuesta promedio.
  • Tags

Las fechas van en horario UTC. Las llaves del payload son personalizables, no así el valor, es decir, la llave que contenga la fecha de creación puede llamarse creation_timeinstante_de_creacion o ti, pero el valor será 2017-09-26 14:56:24 UTC y no 2017/09/26 02:56:24 pm.

Ejemplo XML:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<soapenv:Body>
		<tem:grabarChat>
			<tem:id_habilidad>1</tem:id_habilidad>
			<tem:id_chat>113160</tem:id_chat>
			<tem:chat>
				Client | Fulano de Tal | 2017/09/26 14:56 | Hola, buenos días 
				Client | Fulano de Tal | 2017/09/26 14:57 | Quiero reportar una incidencia en el portal empresas que administra el cliente 
				Agent | Mengano | 2017/09/26 14:58 | Hiola, buenos dias
				Agent | Mengano | 2017/09/26 14:59 | necesitamos un print de pantalla del error y los datos del cliente
				Client | Fulano de Tal | 2017/09/26 14:59 | ya que se presentan casos en donde no se visualiza el trafico completo de los usuarios
				Client | Fulano de Tal | 2017/09/26 14:59 | lo envio al mail de documentación?
				Agent | Mengano | 2017/09/26 15:01 | si por favor a mail@mail.com
				Client | Fulano de Tal | 2017/09/26 15:14 | acabo de enviar mail
				Client | Fulano de Tal | 2017/09/26 15:14 | Asunto: Error en data manager.
				Agent | Mengano | 2017/09/26 15:20 | ok. deme un momento
				Agent | Mengano | 2017/09/26 15:37 | Estimado, favor confirmar, es desde el portal empresa SGO?
				Agent | Mengano | 2017/09/26 15:43 | estimado confirmo ticket por la incidencia XDS87564
				Client | Fulano de Tal | 2017/09/26 16:02 | muchas gracias
			</tem:chat>
			<tem:estado>Closed</tem:estado>
			<tem:fecha_creacion>2017-09-26 14:56:24 UTC</tem:fecha_creacion>
			<tem:fecha_termino/>
			<tem:asunto>Hola, buenos días</tem:asunto>
			<tem:tags/>
			<tem:duracion>11208</tem:duracion>
			<tem:mensajes>20</tem:mensajes>
			<tem:tiempo_primera_respuesta>2</tem:tiempo_primera_respuesta>
			<tem:promedio_tiempo_respuesta>204.33333333333334</tem:promedio_tiempo_respuesta>
			<tem:correo_usuario>mail@mail.com</tem:correo_usuario>
			<tem:nombre_usuario>Fulano de Tal</tem:nombre_usuario>
			<tem:agentes/>
			<tem:transferencia/>
			<tem:localizacion/>
			<tem:pagina>http://servicios.web.co/chat_33911/</tem:pagina>
			<tem:plataforma>widget</tem:plataforma>
			<tem:widget>widget-1</tem:widget>
			<tem:ip/>
			<tem:navegador/>
			<tem:version_navegador/>
			<tem:sistema_operativo/>
			<tem:v_sistema_operativo/>
			<tem:tipo_dispositivo/>
			<tem:epa/>
		</tem:grabarChat>
	</soapenv:Body>
</soapenv:Envelope>

Ejemplo en JSON de otra conversación:

{
    "conversation": {
        "id": 4170632,
        "closed_at": "2021-09-13 19:14:04",
        "created_at": "2021-09-13 15:03:58",
        "organization_id": 270,
        "tags": [
            "Test Let's Talk"
        ],
        "project_list": [
            "whatsapp"
        ],
        "client": {
            "email": null,
            "id": 9150806,
            "name": "whatsapp:+56955555555",
            "type": "client",
            "is_bot": false,
            "organization_id": 270,
            "client_key_values": [
                {
                    "id": 16010003,
                    "key": "whatsapp_name",
                    "value": "p"
                }
            ]
        },
        "issue": "Conversation 4170632",
        "messages": [
            {
                "content": "from_whatsapp_number: +56955555555\nplatform: whatsapp\nto_whatsapp_number: +56937199999\n",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:03:58",
                "id": 95354272,
                "internal": true,
                "type": "SYSTEM",
                "organization_id": 270,
                "person": {
                    "avatar": "https://s3.amazonaws.com/prod.letsta.lk/users/avatars/1d1d57e1e74e633432de318448d0be279038725a/original.png?1630684455",
                    "email": "bot-user-organization-ACME@letsta.lk",
                    "id": 7190,
                    "name": "organization-ACME",
                    "type": "user",
                    "is_bot": true,
                    "organization_id": 270
                }
            },
            {
                "content": "has_joined",
                "content_type": "text/translatable",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:03:59",
                "id": 95354273,
                "internal": true,
                "type": "SYSTEM",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "Gracias por comunicarse con organization-ACME, su conversación está siendo derivada a un ejecutivo para una mejor atención",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:04:00",
                "id": 95354277,
                "internal": false,
                "type": "SYSTEM",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": null,
                    "id": 9150806,
                    "name": "whatsapp:+56955555555",
                    "type": "client",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "buen dia",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:04:06",
                "id": 95354301,
                "internal": false,
                "type": "NORMAL",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": null,
                    "id": 9150806,
                    "name": "whatsapp:+56955555555",
                    "type": "client",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "hola",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:04:15",
                "id": 95354339,
                "internal": false,
                "type": "NORMAL",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "cómo te puedo ayudar hoy?",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:04:27",
                "id": 95354386,
                "internal": false,
                "type": "NORMAL",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "quiero un análisis de mi caso",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:04:50",
                "id": 95354435,
                "internal": false,
                "type": "NORMAL",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": null,
                    "id": 9150806,
                    "name": "whatsapp:+56955555555",
                    "type": "client",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "el otro día...",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:05:02",
                "id": 95354472,
                "internal": false,
                "type": "NORMAL",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": null,
                    "id": 9150806,
                    "name": "whatsapp:+56955555555",
                    "type": "client",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "perfecto. te entiendo",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:05:18",
                "id": 95354512,
                "internal": false,
                "type": "NORMAL",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "saludos",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:05:28",
                "id": 95354526,
                "internal": false,
                "type": "NORMAL",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "closed",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:05:38",
                "id": 95354565,
                "internal": false,
                "type": "SYSTEM",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "opened",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:11:27",
                "id": 95355626,
                "internal": false,
                "type": "SYSTEM",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "closed",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 15:11:33",
                "id": 95355643,
                "internal": false,
                "type": "SYSTEM",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "opened",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 18:56:18",
                "id": 95390543,
                "internal": false,
                "type": "SYSTEM",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "closed",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 18:56:26",
                "id": 95390561,
                "internal": false,
                "type": "SYSTEM",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "opened",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 19:13:59",
                "id": 95393175,
                "internal": false,
                "type": "SYSTEM",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            },
            {
                "content": "closed",
                "content_type": "text/plain",
                "conversation_id": 4170632,
                "created_at": "2021-09-13 19:14:04",
                "id": 95393196,
                "internal": false,
                "type": "SYSTEM",
                "organization_id": 270,
                "person": {
                    "avatar": "https://api.letsta.lk/assets/default-avatar.gif",
                    "email": "supervisor+organization-ACME@letsta.lk",
                    "id": 7189,
                    "name": "Supervisor",
                    "type": "user",
                    "is_bot": false,
                    "organization_id": 270
                }
            }
        ]
    }
}

Modal de datos adicionales

Existen casos de uso en que el webhook requiere de datos adicionales que no pueden ser obtenidos desde la conversación pero que pueden ser muy valiosos para el sistema a integrar, por ejemplo un resumen de la conversación por parte del agente indicando los próximos pasos al ingresar a la ticketera, para estos casos el sistema puede levantar un modal al momento de presionar el botón del trigger y en dicho modal se solicitarán los datos faltantes para completar el payload definido en el webhook gatillado.

Callbacks

Cada vez que se gatilla un webhook es posible invocar una función que evalúe el contenido de la respuesta y realizar alguna acción con la misma, por ejemplo, si se envía una conversación al sistema de tickets propio de la empresa y la respuesta al webhook contiene el id del caso es posible obtener dicho id y escribirlo en la conversación automáticamente como mensaje interno o externo.

Configuración

Este tipo de integraciones requiere un conocimiento avanzado de la plataforma de origen y de destino y muchas veces puede requerir desarrollos personalizados (especialmente los callbacks) por lo que siempre es necesario contactar al equipo de soporte para la definición y activación de la integración.


    • Related Articles

    • Aplicación Web - Agentes

      - El agente cuenta con dos mecanismos para responderle al cliente:  - Desde el computador, una aplicación web habilitada para esto. - Respuesta mediante correo electrónico. Conozcamos sobre la aplicación web:      (haga clic sobre las siguientes ...
    • Instalaciones del widget web

      El widget web permite adaptarse a diversos ambientes, integrándose así a los contextos de nuestros clientes. Gracias a este comportamiento, se puede ofrecer dos esquemas de instalación: Esquemas de instalación Uno, controlando el despliegue por ...
    • Componentes de la aplicación web - Agentes

      Componente Web El componente general de la aplicación web está compuesto por cuatro secciones principales: Vista General del Componente Menú Inicial Identificada como Sección #1:  se encuentran los enlaces al área de: conversaciones, clientes, ...
    • Configuraciones del widget web

      El widget de ingreso a un chat tiene asociadas diferentes propiedades que definen su comportamiento. A continuación se describe como acceder a la configuración del widget dentro de la plataforma: Inicialmente se deberá iniciar sesión como ...
    • Habilitar google analytics en widget web

      Cada ID de seguimiento estará relacionado a un solo widget. Habilitar id de seguimiento de google analytics Antes de la instalación de google analytics,  se deberán realizar los siguientes pasos dentro de la plataforma de administración de google: ...