API de integração pública da caixa de entrada | Documentação WOZTELL

API pública

Introdução

API Pública de Integração permite realizar determinadas ações com a Integração do Inbox sem a necessidade de utilizar a interface da plataforma. Com a API de Integração, você também pode controlar a integração do inbox com a lógica do chatbot.

Endpoint da API

Use o seguinte URL de Endpoint para a API Pública de Integração:
https://api.inbox.woztell.sanuker.com/v1.0/

Autenticação

Para realizar a autenticação das APIs de Integração, é necessário utilizar o Payload e o SignedContext correspondentes exigidos pela integração.

  • Payload{"appIntegration":"appIntegrationId","app":"appId"}
  • SignedContext(signature).{{base64(JSON.stringify(payload))}}
  1. Obtenha as informações relacionadas à Integração do Inbox consultando installedIntegrations com a Open API.

Requisição:


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

Resposta:


{
"data": {
"apiViewer": {
"installedIntegrations": [
{
"appId": "62062c0b717195320192b18f7",
"_id": "6420fig28e65b466d4607ea2",
"signature": "mKq60mpKn/YzaP5123tWU+AWX65LqT6BHkBIfq9d3os=",
"integrationId": "inbox"
}
]
}
}
}
Copiar
  1. Crie o Payload no seguinte formato:

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

Exemplo de Payload:


{"appIntegration":"6420fig28e65b466d4607ea2","app":"62062c0b717195320192b18f7"}
Copiar
  1. Codifique o Payload no formato Base64

  2. Combine o Payload codificado e a Assinatura para criar o SignedContext no seguinte formato:

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

Exemplo de SignedContext


mKq60mpKn/YzaP5123tWU+AWX65LqT6BHkBIfq9d3os.eyJhcHBJbnRlZ3JhdGlvbiI6IjY0MjBmaWcyOGU2NWI0NjZkNDYwN2VhMiIsImFwcCI6IjYyMDYyYzBiNzE3MTk1MzIwMTkyYjE4ZjcifQ==
Copiar
  1. Adicione-os ao cabeçalho como X-Woztell-Payload e X-Woztell-SignedContext.


GET /list-threads

Esta API serve para obter uma lista de threads.

Autenticação

Para a autenticação, siga este guia para preencher o X-Woztell-Payload e o X-Woztell-SignedContext no cabeçalho.

Parâmetros

Nome Tipo Descrição Obrigatório
channelId string Filtrar threads por canal Não
folderId string Filtrar threads por pasta Não
memberId string Filtrar threads por membro Não
externalId string Filtrar threads por membro usando ExternalId Não
threadId string Filtrar threads por ID da thread Não
userId string Filtrar threads pelo responsável atribuído Não
limit integer Controla a quantidade de threads retornadas (Valor padrão: 10) Não
after string Para obter o próximo lote de threads, pode ser obtido de paging.cursors na resposta Não
before string Para obter o lote anterior de threads, pode ser obtido de paging.cursors na resposta Não

Requisição:

Resposta:


{
"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
}
}
Copiar


GET /list-users

Esta API serve para obter uma lista de usuários do inbox.

Autenticação

Para a autenticação, siga este guia para preencher o X-Woztell-Payload e o X-Woztell-SignedContext no cabeçalho.

Parâmetros

Nome Tipo Descrição Obrigatório
channelId string Filtrar usuários por canal (dados do agente como função, nome, e-mail e ícone baseados nos dados do canal) Não
folderId string Filtrar usuários com acesso à pasta Não
userId string Filtrar usuário pelo ID do Woztell Não
memberId string Filtrar usuário por membro Não

externalId string Filtrar usuário por membro usando ExternalId Não threadId string Filtrar usuário por ID da thread Não limit integer Controla a quantidade de usuários retornados (Valor padrão: 10) Não after string Para obter o próximo lote de usuários, use o valor de paging.cursors da resposta Não before string Para obter o lote anterior de usuários, use o valor de paging.cursors da resposta Não

Requisição:

Resposta:


{
"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
}
}
Copiar


POST /update-thread-folder

Esta API serve para atribuir uma thread a uma pasta específica.

Autenticação

Para autenticação, siga este guia e preencha o X-Woztell-Payload e o X-Woztell-SignedContext no cabeçalho.

Parâmetros:

Nome Tipo Descrição Obrigatório
memberId string ID do membro Sim
folderId string ID da pasta Sim

Endpoint:

Requisição:


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

Resposta:


{
"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
}
}
Copiar


POST /update-thread-agent

Esta API serve para adicionar ou remover um responsável por uma thread.

Autenticação

Para autenticação, siga este guia e preencha o X-Woztell-Payload e o X-Woztell-SignedContext no cabeçalho.

Parâmetros:

Nome Tipo Descrição Obrigatório
memberId string ID do membro Sim
userId string ID do usuário da equipe Sim
Notas

O ID do usuário da equipe pode ser obtido a partir de teamMembers da Open API.

Endpoint:

Requisição:

Para adicionar um responsável


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

Para remover um responsável


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

Resposta:


{
  "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"
  }
}
Copiar


POST /update-thread-title

Esta API serve para atualizar o título de uma thread.

Autenticação

Para autenticação, siga este guia e preencha o X-Woztell-Payload e o X-Woztell-SignedContext no cabeçalho.

Parâmetros:

Nome Tipo Descrição Obrigatório
memberId string ID do membro pertencente à thread Ou memberId ou threadId
threadId string ID da thread Ou threadId ou memberId
title string Novo título da thread Sim

Endpoint

Requisição


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

Resposta


{
  "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"
  }
}
Copiar


POST /internal-message

Esta API serve para enviar uma mensagem interna em uma thread.

Autenticação

Para autenticação, siga este guia e preencha o X-Woztell-Payload e o X-Woztell-SignedContext no cabeçalho.

Parâmetros:

Nome Tipo Descrição Obrigatório
threadId string ID da thread associada ao membro Ou memberId ou threadId
memberId string ID do membro Ou threadId ou memberId
message string Mensagem interna a ser enviada Sim

Endpoint

Requisição

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

Copiar

Resposta


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

Última atualização em 18/03/2024