API Pública de Integración de Inbox | Documentación WOZTELL

API pública

Introducción

La API de integración pública le permite realizar ciertas acciones con la integración de la bandeja de entrada sin necesidad de operar en la interfaz de usuario de la plataforma. Con la API de integración, también puedes controlar la integración de la bandeja de entrada con la lógica de chatbot.

Punto final de la API

Utilice la siguiente URL de punto final para la API de integración pública:
https://api.inbox.woztell.sanuker.com/v1.0/

Autenticación

Para realizar la autenticación de las API de integración, es necesario utilizar el Payload y el SignedContext correspondientes que requiera la integración.

  • Carga útil{"appIntegration":"appIntegrationId","app":"appId"}
  • ContextoFirmado(signature).{{base64(JSON.stringify(payload))}}
  1. Obtenga la información relacionada con la Integración de Bandeja de Entrada consultando las  integraciones instaladas con Open API.

Solicitar:

query {
apiViewer{
installedIntegrations{
appId
_id
signature
integrationId
}
}
}
Copy

Respuesta:

{
"data": {
"apiViewer": {
"installedIntegrations": [
{
"appId": "62062c0b717195320192b18f7",
"_id": "6420fig28e65b466d4607ea2",
"signature": "mKq60mpKn/YzaP5123tWU+AWX65LqT6BHkBIfq9d3os=",
"integrationId": "inbox"
}
]
}
}
}
Copy
  1. Crear carga útil con el siguiente formato:

    {"appIntegration":"appIntegrationId","app":"appId"}

Ejemplo de carga útil:

{"appIntegration":"6420fig28e65b466d4607ea2","app":"62062c0b717195320192b18f7"}
Copy
  1. Codificar la carga útil en formato Base64

  2. Combine la carga útil codificada y la firma para crear el contexto firmado en el siguiente formato:

    (signature).{{base64(JSON.stringify(payload))}}

Ejemplo ContextoSignado

mKq60mpKn/YzaP5123tWU+AWX65LqT6BHkBIfq9d3os.eyJhcHBJbnRlZ3JhdGlvbiI6IjY0MjBmaWcyOGU2NWI0NjZkNDYwN2VhMiIsImFwcCI6IjYyMDYyYzBiNzE3MTk1MzIwMTkyYjE4ZjcifQ==
Copy
  1. Añádelos a la cabecera como X-Woztell-Payload y  X-Woztell-SignedContext.


GET /lista-hilos

Esta API sirve para obtener una lista de hilos.

Autenticación

Para la autenticación, siga esta guía para rellenar X-Woztell-Payload y X-Woztell-SignedContext en la cabecera.

Parámetros

NombreTipoDescripciónRequerido
ID del CanalCadenaFiltrar temas por canalNo
ID del archivoCadenaFiltrar temas por carpetaNo
ID del miembroCadenaFiltrar temas por miembroNo
ID externoCadenaFiltrar temas por miembro mediante ExternalIdNo
ID del hiloCadenaFiltrar temas por ID de temaNo
ID del usuarioCadenaFiltrar Temas por Asignatario del temaNo
LímiteEnteroControla la cantidad de hilos devueltos (Valor por defecto : 10)No
DespuésCadenaPara obtener el siguiente lote de hilos, se puede obtener de paging.cursors en la respuestaNo
AntesCadenaPara obtener el siguiente lote de hilos, se puede obtener de paging.cursors en la respuestaNo

Solicitar:

Respuesta:

{
"ok": 1,
"data": [
{
"channelId": "string",
"memberId": "string",
"externalId": "string",
"userId": "string",
"threadId": "T0000027",
"title": "Test User",
"folder": "main"
}
],
"paging": {
"cursors": {
"after": "NjU5N2I1MDZkOTcyYTMzNzU3ZTM3ZDgz",
"before": "NjRhZTE5Yjg3MzQ0YjA1YzM2ZmMyOWQw"
},
"hasPrevious": true,
"hasNext": true
}
}
Copy


GET /lista-usuarios

Esta API sirve para obtener una lista de usuarios de la bandeja de entrada.

Autenticación

Para la autenticación, siga esta guía para rellenar X-Woztell-Payload y X-Woztell-SignedContext en la cabecera.

Parámetros

NombreTipoDescripciónRequerido
ID del canalCadena Filtrar usuarios por canal (los datos del agente, como el rol del agente, el nombre, el correo electrónico y el icono, se basan en los datos del agente del canal).No
ID del archivoCadenaFiltrar usuarios en función de quién tiene acceso a la carpetaNo
ID del usuarioCadenaFiltrar usuario por ID de Woztell del usuarioNo
ID del miembroCadenaFiltrar usuario por miembroNo
ID externoCadenaFiltrar Usuario por Miembro usando ExternalIdNo
ID del hiloCadenaFiltrar usuario por ThreadIdNo
LímiteEnteroControla la cantidad de usuarios devueltos Valor por defecto : 10No
DespuésCadenaPara obtener el siguiente lote de usuarios, se puede obtener de paging.cursors en la respuestaNo
AntesCadenaPara obtener el lote anterior de usuarios, se puede obtener de paging.cursors en la respuestaNo

Solicitar:

Respuesta:

{
"ok": 1,
"data": [
{
"userId": "6474449cdfc4ee3646d392bf",
"role": "ADMIN",
"agentRole": "MANAGER",
"channel": "6474449cdfc4ee3646d392bd",
"name": "Test User",
"email": "test_user@email.com",
"icon": "string"
}
],
"paging": {
"cursors": {
"after": "NjU5N2I1MDZkOTcyYTMzNzU3ZTM3ZDgz",
"before": "NjRhZTE5Yjg3MzQ0YjA1YzM2ZmMyOWQw"
},
"hasPrevious": true,
"hasNext": true
}
}
Copy


POST /actualizar-hilo-carpeta

Esta API sirve para asignar un hilo a una carpeta específica.

Autenticación

Para la autenticación, siga esta guía para rellenar X-Woztell-Payload y X-Woztell-SignedContext en la cabecera.

Parámetros:

NombreTipoDescripciónRequerido
ID del miembroCadenaId del miembroSi
ID del archivoCadenaID del archivoSi

Punto final:

Solicitar:

{
"memberId": "920o80371234550009a01abd",
"folderId": "test-folder"
}
Copy

Respuesta:

{
"ok": 1,
"thread": {
"_id": "640a123opp71ee2b943ed283",
"wAppId": "90283b9b71780112208b18f7",
"wChannelId": "621f29ae4e11986de280e29d",
"wMemberId": "630d8962168350009a01acd",
"_version": 2,
"createdAt": 1678377627235,
"etag": "d-bkiiEXyVO8CtQ9cHw/5zjO581rM",
"externalId": "8521234567",
"folder": "test-folder",
"lastChatAt": 1682454661289,
"lastMessage": "[Bot] Hello there!",
"threadId": "T0000999",
"title": "John Lee",
"updatedAt": 1682661372214,
"lastReadAt": 1682487947711,
"unreadCount": 0
}
}
Copy


POST /actualizar-agente-hilo

Esta API sirve para añadir o eliminar un asignado de un hilo.

Autenticación

Para la autenticación, siga esta guía para rellenar X-Woztell-Payload y X-Woztell-SignedContext en la cabecera.

Parámetros:

NombreTipoDescripciónRequerido
ID del miembroCadenaID del miembroSi
ID del usuarioCadenaID de usuario del miembro del equipoSi
Idea
NotAS

El ID de usuario de un miembro del equipo puede obtenerse de teamMembers de Open API.

query {
apiViewer{
app {
_id
teamMembers{
user{
_id
email{
email
}
}
}
}
}
}

Copy


Punto final:

Solicitar:

Para añadir un cesionario

{
"memberId": "64744e15bdcca70008a4358f",
"userId": "632a6743a63fdf590c994a77"
}
Copy

Para eliminar a un cesionario

{
"memberId": "64744e15bdcca70008a4358f",
"userId": null
}
Copy

Respuesta:

{
"ok": 1,
"thread": {
"_id": "66892602f94ff12ece18f325",
"wAppId": "62062b9b71780332208b18f7",
"wChannelId": "636ccf9ff3cfa1164f3e1d1d",
"wMemberId": "636cd3d81daca40008296f08",
"_version": 2,
"createdAt": 1685530114217,
"etag": "d-NHYurKhPB+vkbZKV87SrRXRvl+0",
"externalId": "85254063598",
"folder": "main",
"lastChatAt": 1705381701000,
"lastMessage": "image_test",
"threadId": "T0000035",
"title": "Decco Ip",
"updatedAt": 1705487316616,
"lastReadAt": 1705461548278,
"unreadCount": 0,
"wUserId": "5c0e33c7502129b7ac9e143f"
}
}
Copy


POST/ actualización-hilo-título

Esta API sirve para actualizar el título de un tema.

Autenticación

Para la autenticación, siga esta guía para rellenar X-Woztell-Payload y X-Woztell-SignedContext en la cabecera.

Parámetros:

NombreTipoDescripciónRequerido
ID del miembroCadenaId del miembro que pertenece al hilo O bien memberId o threadId
ID del hiloCadenaId del hilo.O bien threadId o memberId
TítuloCadenaEl nuevo título del hilo Si

Punto final

Solicitar

{
"memberId": "6475559cdfc4ee3646d392bb",
// or "threadId": "T0000027",
"title": "John (Key Client)"
}
Copy

Respuesta

{
"ok": 1,
"thread": {
"_id": "6475559cdfc4ee3646d392bb",
"_version": 2,
"etag": "d-x9crPvAd751WYspgcj0cBtisySE",
"wAppId": "6475559cdfc4ee3646d392bb",
"wChannelId": "6474449cdfc4ee3646d392bd",
"wMemberId": "6474449cdfc4ee3646d392be",
"externalId": "5466281980129353",
"wUserId": "6474449cdfc4ee3646d392bf",
"threadId": "T0000027",
"createdAt": 1686541076488,
"updatedAt": 1686541076488,
"lastReadAt": 1686541076488,
"lastChatAt": 1686541076488,
"unreadCount": 0,
"title": "John (Key Client)",
"folder": "main"
}
}
Copy


POST/ mensaje-interno

Esta API sirve para enviar un mensaje interno en un hilo.

Autenticación

Para la autenticación, siga esta guía para rellenar X-Woztell-Payload y X-Woztell-SignedContext en la cabecera.

Parámetros:

NombreTipoDescripciónRequerido
ID del hiloCadenaId del miembro que pertenece al hilo O bien memberId o threadId
ID del miembroCadenaId del hilo. O bien threadId o memberId
MensajeCadenaEl mensaje interno que debe enviarse Si

Punto final:

Solicitar

{
"threadId": "T0000001",
// or "memberId": "6475559cdfc4ee3646d392bb",
"message": "Test Internal Message"
}
Copy

Respuesta

{
"ok": 1,
"message": "Test Internal Message",
"memberId": "6475559cdfc4ee3646d392bb",
"threadId": "T0000001"
}
Copy