Exportar Chats

Aquí encontrarás cómo exportar la informacion de tus chats por un contacto específico utilizando filtros y formatos de busquedas que faciliten y optimicen la implementacion.

Este servicio es muy útil si deseas tener la información de los chats en tu CRM, ERP o sistemas propios que te permitan analizar estos datos y tomar decisiones en base a ellos, esta información te permitirá, tener mensajes para poder analizarlos, realizar informes de atención o tiempos de respuesta, entender la necesidad del contacto, conocer la etapa en la que se encuentra el contacto, entre otras

A continuación conocerás mas a detalle la implementación del servicio.

Endpoint de exportación de chats

https://api.b2chat.io/chats/export

Exportar chats

GET https://api.b2chat.io/chats/export

Este servicio te permitirá extraer la información de los chats .

Headers

Name
Type
Description

Content-Type*

application/json

Authorization*

Bearer {{token}}

Request Body

Name
Type
Description

limit*

Numérico

Es opcional, el valor por defecto y máximo es de 1000. Afecta al número de contactos por solicitud, a menos que se proporcione un email_recipient para que pueda recibir un correo electrónico con un enlace para descargar todo el resultado de la consulta en CSV.

offset *

Numerico

Es opcional, el valor por defecto es 0. Es el número de registros a saltar en la respuesta. Permite la paginación.

order_dir*

String

Es opcional, los valores puedes ser asc|desc, por defecto desc. Afecta al orden de date_range

contact_lookup

String

Es opcional y es el filtro principal desde el que vamos a realizar la consulta. Podemos buscar por búsqueda completo o parcial el id, nombre, móvil o email.

messaging_provider

String

Es opcional aceptando valores como (whatsapp | facebook | telegram | livechat | b2cbotapi). Por defecto todos los proveedores de mensajería.

date_range

Fecha

Sigue el formato de objeto {"from": "2020-01-01", "to": "2020-01-02"}. from debe ser menor que to.

En caso de que necesite enviar query string en lugar de datos JSON , utilice los mismos parámetros con la excepción de date_range que recibirá en su lugar dos parámetros date_range_from y date_range_to.

agent_lookup

String

Es opcional. Permite filtrar las conversaciones de un usuario enviando el nombre de usuario.

chat_id

String

Es opcional. Debe coincidir para recuperar el chat exacto y sus mensajes.

email_recipient

String

Es opcional. En caso de que desee recibir un correo electrónico con la exportación en formato CSV. Puede proporcionar varios destinatarios de correo electrónico separados por una coma. Por ejemplo_ user@mail.com, user2@mail.com`.

is_agent_available

String

Es opcional. Acepta valores: true|false. Si es true, devuelve los chats atendidos en horario laboral (según la configuración del comercio). En caso contrario, devuelve si no es horario laboral. Si no se envía o es nulo, devuelve ambos valores, verdadero y falso.

{
    "chats": [
        {
            "agent": {
                "email": "moises@b2chat.io",
                "name": "support_b2chat_21",
                "username": "support_b2chat_21"
            },
            "alias": "Whatsapp2",
            "chat_id": "0384fd61-98a3-4e0e-a475-bffbeb5c575f",
            "closed_at": "2024-01-10 16:33:45",
            "contact": {
                "custom_attributes": null,
                "email": "Moises@mail.com",
                "id": 8887980,
                "identification": "123456789",
                "mobile_number": "+574123021322",
                "name": "Moises C",
                "phone_number": "123456789",
                "tags": null
            },
            "created_at": "2024-01-02 11:17:37",
            "department": "Rastreo",
            "duration": "08:05:16:07",
            "is_agent_available": true,
            "messages": [
                {
                    "body": "demo",
                    "broadcasted": false,
                    "caption": null,
                    "created_at": "2024-01-02 11:17:19",
                    "incoming": true,
                    "location": null,
                    "type": "TEXT"
                },
                {
                    "body": "1",
                    "broadcasted": false,
                    "caption": null,
                    "created_at": "2024-01-02 11:17:31",
                    "incoming": true,
                    "location": null,
                    "type": "TEXT"
                },
                {
                    "body": "El link para completar tu pedido es el siguiente: XXXXXXXXX",
                    "broadcasted": false,
                    "caption": null,
                    "created_at": "2024-01-02 12:17:48",
                    "incoming": false,
                    "location": null,
                    "type": "TEXT"
                },
                {
                    "body": "Hola",
                    "broadcasted": false,
                    "caption": null,
                    "created_at": "2024-01-10 15:38:52",
                    "incoming": false,
                    "location": null,
                    "type": "TEXT"
                },
                {
                    "body": "Mensaje",
                    "broadcasted": false,
                    "caption": null,
                    "created_at": "2024-01-10 16:29:39",
                    "incoming": false,
                    "location": null,
                    "type": "TEXT"
                },
                {
                    "body": "a\n",
                    "broadcasted": false,
                    "caption": null,
                    "created_at": "2024-01-10 16:31:08",
                    "incoming": false,
                    "location": null,
                    "type": "TEXT"
                },
                {
                    "body": "e",
                    "broadcasted": false,
                    "caption": null,
                    "created_at": "2024-01-10 16:32:51",
                    "incoming": false,
                    "location": null,
                    "type": "TEXT"
                }
            ],
            "opened_at": "2024-01-02 11:17:37",
            "picked_up_at": "2024-01-02 11:17:48",
            "provider": "WHATSAPPOFF",
            "responded_at": "2024-01-02 12:17:48",
            "status": "CLOSED",
            "tags": [
                "calidad",
                "entregado",
                "prospecto"
            ],
            "viewer_url": "https://app.b2chat.io/viewer/0384fd61-98a3-4e0e-a475-bffbeb5c575f/051b4c01-d8fa-4df6-ae90-b6c555c719a4"
        },
        {
            "agent": {
                "email": "moises@b2chat.io",
                "name": "support_b2chat_21",
                "username": "support_b2chat_21"
            },
            "alias": "Whatsapp off 2",
            "chat_id": "d3d4e148-f7b1-4b53-81d2-d59bbe2809c1",
            "closed_at": "2024-01-02 11:17:14",
            "contact": {
                "custom_attributes": null,
                "email": "Moises@mail.com",
                "id": 8887980,
                "identification": "123456789",
                "mobile_number": "+574123021322",
                "name": "Moises C",
                "phone_number": "123456789",
                "tags": null
            },
            "created_at": "2024-01-02 09:51:44",
            "department": "Rastreo",
            "duration": "00:01:25:29",
            "is_agent_available": true,
            "messages": [
                {
                    "body": "Hola",
                    "broadcasted": false,
                    "caption": null,
                    "created_at": "2024-01-02 09:51:33",
                    "incoming": true,
                    "location": null,
                    "type": "TEXT"
                },
                {
                    "body": "1",
                    "broadcasted": false,
                    "caption": null,
                    "created_at": "2024-01-02 09:51:38",
                    "incoming": true,
                    "location": null,
                    "type": "TEXT"
                },
                {
                    "body": "HOLA SEGUIMOS ATENTOS 🤠\n",
                    "broadcasted": false,
                    "caption": null,
                    "created_at": "2024-01-02 10:58:45",
                    "incoming": false,
                    "location": null,
                    "type": "TEXT"
                }
            ],
            "opened_at": "2024-01-02 09:51:44",
            "picked_up_at": "2024-01-02 10:57:35",
            "provider": "WHATSAPPOFF",
            "responded_at": null,
            "status": "CLOSED",
            "tags": [],
            "viewer_url": "https://app.b2chat.io/viewer/d3d4e148-f7b1-4b53-81d2-d59bbe2809c1/051b4c01-d8fa-4df6-ae90-b6c555c719a4"
        }
    ],
    "exported": 2,
    "message": "2 chats were exported",
    "total": 2
}

Ejemplo de llamado JSON

curl --location --request GET 'https://api.b2chat.io/chats/export' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '{,
	"contact_lookup": "John Wick",
	"messaging_type": "whatsapp",
	"date_range": {"from": "2020-01-01", "to": "2020-01-02"},
	"agent_lookup": "Agent Carter",
	"chat_id": "2342342342-234234234-234234234",
	"email_recipient": "recipient@mail.net",
	"is_agent_available": true,
	"limit": 1000
}'

Paginación para exportar mas de 1000 chats:

Dado que cada solicitud al API tiene un límite de 1000 registros por respuesta, existe un mecanismo de paginación para acceder a un mayor número de registros. Esto se logra mediante dos parámetros: offset y total, incluidos en el request y respuesta del servicio.

Por ejemplo: Si desea exportar 5000 chats desde B2Chat a través del API, comience realizando una solicitud inicial con order_dir establecido en DESC y limit en 1000. Esta acción le proporcionará los primeros 1000 chats.

En la respuesta, encontrará un campo llamado Total, que indica el número total de registros disponibles, que en este caso serían 5000. Divida este total por el límite máximo de registros por página para determinar el número total de solicitudes necesarias para recuperar todos los datos.

Sabiendo ya que necesita realizar 5 consultas, para las siguientes solicitudes, ajuste el parámetro offset al número del registro que inicia la siguiente página, en este caso, 1001. De esta manera, podrá recuperar todos los registros en 5 llamadas, cada una solicitando 1000 registros.

  • Ejemplo 1: Trae hasta 999 chats. Como no se especifica rango de fecha se entregan los registros ordenados por fecha de creación en orden DESC (Trae los últimos 999 contactos creados)

curl --location --request GET 'https://api.b2chat.io/chats/export' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '{
  "filters": {
    "limit": 999,
    
	}
}'
  • Ejemplo 2: Trae 500 chats en orden ASC (Trae los primeros 500 contactos creados).

curl --location --request GET 'https://api.b2chat.io/chats/export' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '{
	"filters": {
		"limit": 500,
	  	"order_dir": "asc"
  }
}'
  • Ejemplo 3: Trae 120 Contactos partiendo del registro 100.

curl --location --request GET 'https://api.b2chat.io/chats/export' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '{
	"filters":{
		"limit": 120,
	  	"offset": 100
	}
}'

Otros ejemplos generales

Ejemplo 1: Exportar un chat por chat ID por query params

curl --location --request GET 'https://api.b2chat.io/chats/export?chat_id=54dc23df-5a79-466b-882c-161af6d0cdd2' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \

Ejemplo 2: Exportar un grupo de chats por rango de fecha y ordenado utilizando query params

curl --location --request GET 'https://api.b2chat.io/chats/export?date_range_from=2024-01-01&date_range_to=2024-01-22&order=desc' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \

Ejemplo 3: Exportar chats por correo especifico del contacto en formato JSON

curl --location --request GET 'https://api.b2chat.io/chats/export' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '{,
	"contact_lookup": "user@mail.com"
}'

Otro ejemplo de respuesta exitosa

	
#200
{
  "message": "You should receive an email at user@mail.net anytime soon with the results download link"
}

Last updated