Ir para o conteúdo principal

WhatsApp (Web) - Em construção

Visão Geral

Este documento descreve as funcionalidades disponíveis para as integrações WhatsApp Web no sistema Omnichannel, incluindo exemplos de chamadas nos métodos disponíveis na lib.

1. Contatos

1.1 Criação de Contatos

  • Atualmente, existem dois tipos de contatos: individuais e grupos. Ao cadastrar, o parâmetro type deve ser definido como 'individual' ou 'group', respectivamente. Visto que a implementação atual suporta apenas o WhatsApp, o parâmetro channelType deve ser obrigatoriamente 'whatsapp'.

Exemplo:

import { ContactApi, CreateContactDto } from '@cirrus/omnichannel_api'

constructor(private readonly contactApi: ContactApi) {}

/**
 * @param {string} clientIdentifier - Identificador único da conta.
 * @param {string} channelId - Identificador do canal.
 * @param {string} contactIdentifier - Contato do usuário (número de telefone, token (Telegram, etc).
 * @param {string} name - Ordem em que os itens serão buscados (crescente ou decrescente).
 * @param {string} type - Tipo do contato.
 * @param {string} channelType - Tipo do canal.
 * @param {string} customName - Nome customizado para o contato.    
 * @param {string} photo - Url da foto de perfil do contato no S3.
 * @param {string[]} tagIds - Caso queira vincular tags ao um contato.
 * @param {string} platform - Caso queira que o contato possua uma plataforma exclusiva.
 * @param {boolean} isIgnored - Se 'true' o OMC não interceptará mensagens desse contato.
 */
const payload: CreateContactDto = {
    clientIdentifier: '9a92ea44-244c-4cda-86be-6a9e32ba8f34',
    channelId: '689a05215b711247e8f54022',
    contactIdentifier: '5521999999999',
    name: 'João Silva',
    type: 'individual',
    channelType: 'whatsapp',
    customName: 'João (Mercearia)',
}

await this.contactApi.create(payload)

1.2 Edição de Contatos

  • Edita um contato previamente cadastrado.

Exemplo:

import { ContactApi, UpdateContactDto } from '@cirrus/omnichannel_api'

constructor(private readonly contactApi: ContactApi) {}

/**
 * @param {string} clientIdentifier - Identificador único da conta.
 * @param {string} contactId - Identificador do contato.
 * @param {string} customName - Nome customizado para o contato.    
 * @param {string} platform - Caso queira que o contato possua uma plataforma exclusiva.
 * @param {string[]} tagIds - Caso queira vincular tags ao um contato.
 * @param {string} contactIdentifier - Contato do usuário (número de telefone, token (Telegram, etc).
 * @param {boolean} isIgnored - Se 'true' o OMC não interceptará mensagens desse contato.
 */
const payload: UpdateContactDto = {
    clientIdentifier: '9a92ea44-244c-4cda-86be-6a9e32ba8f34',
    contactId: '68e54649a3744412be5cc107',
    customName: 'Nome Modificado',
    platform: 'karoochatnew',
}

await this.contactApi.update(payload)

1.3 Listar Contato por Id

  • Busca um contato de uma conta (clientIdentifier) pelo seu identificador (contactId).


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Exemplo:

  • Listagem de contatos
import { ContactApiContactApi, GetContactDto } from '@cirrus/omnichannel_api'

constructor(private readonly contactApi: ContactApi) {}

/**
 * @param {string} clientIdentifier - Identificador único da conta.
 * @param {string} contactId - Identificador único do contato.
 */
const payload: GetContactDto = {
    clientIdentifier: '9a92ea44-244c-4cda-86be-6a9e32ba8f34',
    contactId: '68e54649a3744412be5cc107',
}

await this.contactApi.getById(payload)

1.4 Listar Contatos com Paginação

  • Busca uma lista paginada de contatos com filtros opcionais.

Exemplo:

import { ContactApi, GetContactsDto } from '@cirrus/omnichannel_api'

constructor(private readonly contactApi: ContactApi) {}

/**
 * @param {string} clientIdentifier - Identificador único da conta.
 * @param {number} page - Número da página em(padrão: que a busca se iniciará1).
 * @param {number} limit - Limite de itens por página.gina (padrão: 30).
 * @param {'asc' | 'desc'}string} order - Ordem emde que os itens serãclassificação buscados (crescente'asc' ou decrescente)'desc').
 * @param {'individual' | 'group'}string} type - Tipo dedo contato.contato ('individual' ou 'group').
 * @param {'whatsapp' | 'facebook' | 'instagram' | 'telegram'}string} channelType - Tipo dedo canal.
 * @param {string} name - NomeFiltro por nome do contato a ser buscado.contato.
 * @param {string} contactIdentifier - ContatoFiltro quepor identificaidentificador umdo usuário (Número de telefone, token (Telegram), etc).contato.
 * @param {string[]} tagIds - TagsFiltro vinculadaspor aoIDs contato.de tags associadas.
 */
exportconst interfacepayload: GetContactsDto = {
    clientIdentifier: string;'9a92ea44-244c-4cda-86be-6a9e32ba8f34',
    page: number;1,
    limit: number;10,
    order?: 'asc' |order: 'desc';,
    type?:type: 'individual',
    | 'group';
    channelType?:channelType: 'whatsapp',
    |name: 'facebook'João'
|}

const response = await this.contactApi.get(payload)

1.5 Remover Plataforma do Contato

  • Remove a associação de plataforma de um contato específico.

Exemplo:

import { ContactApi, DeleteContactPlatformDto } from 'instagram' | 'telegram';
    name?: string;
    contactIdentifier?: string;
    tagIds?: string[];
}@cirrus/omnichannel_api'

constructor(private readonly contactApi: ContactApi) {}

/**
 * @param {string} clientIdentifier - Identificador único da conta.
 * @param {string} contactId - Identificador único do contato.
 */
const payload: GetContactsDtoDeleteContactPlatformDto = {
    clientIdentifier: '9a92ea44-244c-4cda-86be-6a9e32ba8f34',
    contactId: '68e54649a3744412be5cc107'
}

await this.contactApi.get(deletePlatform(payload)

Endpoint: POST /api/accounts/{clientIdentifier}/contacts

Exemplo de Payload:

{
  "contactIdentifier": "5521988887777",
  "name": "João Silva",
  "channelId": "64cbbd9596429dbccd7841e2",
  "channelType": "whatsapp",
  "type": "individual",
  "platform": "whatsappweb"
}

Resposta:

{
  "_id": "64cbbd9596429dbccd7841e4",
  "contactIdentifier": "5521988887777",
  "name": "João Silva",
  "channelId": "64cbbd9596429dbccd7841e2",
  "channelType": "whatsapp",
  "type": "individual",
  "platform": "whatsappweb",
  "createdAt": "2023-08-03T10:30:00.000Z"
}

1.26 ImportaçãoListar deTags Gruposdo Contato

Quando ocorre:

  • QuandoObtém umatodas mensagemas étags recebidaassociadas ema um grupocontato do WhatsApp
  • Durante sincronização de grupos ativosespecífico.

Webhook WhatsApp Web: POST /api/webhook/whatsappweb/{platformConfigId}/{channelId}

Exemplo de Payload (Grupo):Exemplo:

{
  "type": "GROUP_MESSAGE",
  "from": "5521988887777",
  "fromUserName": "João Silva",
  "to": "5521977776666-group",
  "body":import { "content":ContactApi, "Olá pessoal!",
    "type": "text"GetTagsByContactIdDto }, "groupInfo":from '@cirrus/omnichannel_api'

constructor(private readonly contactApi: ContactApi) {}

/**
 * @param {string} clientIdentifier - Identificador único da conta.
 * @param {string} contactId - Identificador único do contato.
 */
const payload: GetTagsByContactIdDto = {
    "id":clientIdentifier: "5521977776666-group"'9a92ea44-244c-4cda-86be-6a9e32ba8f34',
    "name":contactId: "Grupo'68e54649a3744412be5cc107'
de}

Vendas"const tags = await this.contactApi.getTagsByContacId(payload)

1.7 Adicionar Tags ao Contato

  • Adiciona uma ou mais tags a um contato existente.

Exemplo:

import { ContactApi, AddContactTagDto } from '@cirrus/omnichannel_api'

constructor(private readonly contactApi: ContactApi) {}

/**
 * @param {string} clientIdentifier - Identificador único da conta.
 * @param {string} contactId - Identificador único do contato.
 * @param {string[]} tagIds - Array com os IDs das tags a serem adicionadas.
 */
const payload: AddContactTagDto = {
    clientIdentifier: '9a92ea44-244c-4cda-86be-6a9e32ba8f34',
    "participants":contactId: '68e54649a3744412be5cc107',
    tagIds: ["5521988887777"'tag1', "5521955554444"'tag2', 'tag3']
}

}const updatedContact = await this.contactApi.addTags(payload)

1.8 Remover Tags do Contato

  • Remove uma ou mais tags de um contato existente.

Exemplo:

import { ContactApi, RemoveContactTagDto } from '@cirrus/omnichannel_api'

constructor(private readonly contactApi: ContactApi) {}

/**
 * @param {string} clientIdentifier - Identificador único da conta.
 * @param {string} contactId - Identificador único do contato.
 * @param {string[]} tagIds - Array com os IDs das tags a serem removidas.
 */
const payload: RemoveContactTagDto = {
    clientIdentifier: '9a92ea44-244c-4cda-86be-6a9e32ba8f34',
    contactId: '68e54649a3744412be5cc107',
    tagIds: ['tag1', 'tag2']
}

const updatedContact = await this.contactApi.removeTags(payload)

2. Mensagens Individuais

2.1 EnvioIniciar Conversa

  • Inicia uma nova conversa com um contato. O campo companyId é obrigatório apenas quando o provedor é WhatsApp Web.

Exemplo:

import { MessageApi, StartConversationDto, MessageServiceEnum } from '@cirrus/omnichannel_api'

constructor(private readonly messageApi: MessageApi) {}

/**
 * @param {string} platformConfigId - Identificador da configuração da plataforma.
 * @param {string} channelId - Identificador do canal.
 * @param {string} clientProviderId - Identificador do cliente no provedor (número de telefone, etc).
 * @param {string} userName - Nome do usuário.
 * @param {string} companyName - Nome da empresa (obrigatório apenas para WhatsApp Web).
 * @param {string} platform - Plataforma específica.
 * @param {boolean} sessionWithPriority - Se a sessão deve ter prioridade.
 */
const payload: StartConversationDto = {
    platformConfigId: '64ef5c84f9deb1326965919f',
    channelId: '64ef5c84f9deb1326965919e',
    clientProviderId: '5521988887777',
    userName: 'João Silva',
    companyName: 'Empresa XYZ'
}

const response = await this.messageApi.startConversation(payload, MessageServiceEnum.d360)

2.2 Enviar Mensagem de Texto

  • Envia uma mensagem de texto em uma conversa existente.

Endpoint: POST /api/message/send

WhatsApp Web:Exemplo:

import { "sessionId":MessageApi, "64cbbd9596429dbccd7841e5"SendMessageDto } from '@cirrus/omnichannel_api'

constructor(private readonly messageApi: MessageApi) {}

/**
 * @param {string} agentName - Nome do agente que está enviando a mensagem.
 * @param {string} sessionId - Identificador da sessão.
 * @param {string} text - Texto da mensagem.
 * @param {object} quotedMessage - Mensagem citada (opcional).
 */
const payload: SendMessageDto = {
    agentName: 'Atendente João',
    "text":sessionId: "'64ef5c85f9deb132696591a0',
    text: 'Olá! Como posso ajudá-lo?"lo hoje?'
}

const response = await this.messageApi.sendMessage(payload)

2.3 Enviar Mensagem de Mídia

  • Envia uma mensagem contendo mídia (imagem, vídeo, documento, etc).

Exemplo:

import { MessageApi, SendMessageDto } from '@cirrus/omnichannel_api'

constructor(private readonly messageApi: MessageApi) {}

/**
 * @param {string} agentName - Nome do agente que está enviando a mensagem.
 * @param {string} sessionId - Identificador da sessão.
 * @param {string} mediaUri - URL da mídia a ser enviada.
 */
const payload: SendMessageDto = {
    agentName: 'Atendente João',
    "agentName":sessionId: "Atendente'64ef5c85f9deb132696591a0',
    Maria"mediaUri: 'https://exemplo.com/imagem.jpg'
}

const response = await this.messageApi.sendMessage(payload)

D360:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "text": "Olá! Como posso ajudá-lo?",
  "agentName": "Atendente Maria"
}

Resposta:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "messageId": "wamid.HBgNNTUyMTk4ODg4Nzc3NxUCABIYFjNBMDJCMEE2RkY4QzRBOUNCNzAyRjAA"
}

2.2 Envio de Mensagem de Áudio

Endpoint: POST /api/message/send

WhatsApp Web:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "mediaUri": "https://s3.amazonaws.com/bucket/audio.mp3",
  "agentName": "Atendente Maria"
}

D360:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "mediaUri": "https://s3.amazonaws.com/bucket/audio.ogg",
  "agentName": "Atendente Maria"
}

2.3 Envio de Mensagem de Imagem

Endpoint: POST /api/message/send

WhatsApp Web:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "mediaUri": "https://s3.amazonaws.com/bucket/imagem.jpg",
  "text": "Confira esta imagem!",
  "agentName": "Atendente Maria"
}

D360:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "mediaUri": "https://s3.amazonaws.com/bucket/imagem.png",
  "text": "Confira esta imagem!",
  "agentName": "Atendente Maria"
}

2.4 Envio de Mensagem de Vídeo

Endpoint: POST /api/message/send

WhatsApp Web:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "mediaUri": "https://s3.amazonaws.com/bucket/video.mp4",
  "text": "Vídeo explicativo",
  "agentName": "Atendente Maria"
}

D360:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "mediaUri": "https://s3.amazonaws.com/bucket/video.mp4",
  "text": "Vídeo explicativo",
  "agentName": "Atendente Maria"
}

2.5 Envio de Mensagem de Documento

Endpoint: POST /api/message/send

WhatsApp Web:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "mediaUri": "https://s3.amazonaws.com/bucket/documento.pdf",
  "agentName": "Atendente Maria"
}

D360:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "mediaUri": "https://s3.amazonaws.com/bucket/documento.pdf",
  "agentName": "Atendente Maria"
}

2.6 Envio de Mensagem com Sticker

Endpoint: POST /api/message/send

WhatsApp Web:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "mediaUri": "https://s3.amazonaws.com/bucket/sticker.webp",
  "agentName": "Atendente Maria"
}

D360:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "mediaUri": "https://s3.amazonaws.com/bucket/sticker.webp",
  "agentName": "Atendente Maria"
}

2.7 Envio de Mensagem de Contatos

Endpoint: POST /api/message/send

D360 (Suporte nativo):

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "interactive": {
    "type": "contacts",
    "contacts": [
      {
        "name": {
          "first_name": "João",
          "last_name": "Silva",
          "formatted_name": "João Silva"
        },
        "phones": [
          {
            "phone": "5521988887777",
            "type": "WORK",
            "wa_id": "5521988887777"
          }
        ]
      }
    ]
  },
  "agentName": "Atendente Maria"
}

WhatsApp Web (Texto formatado):

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "text": "Contato:\n👤 João Silva\n📱 (21) 98888-7777",
  "agentName": "Atendente Maria"
}

3. Mensagens de Grupo

3.1 Envio de Mensagem de Texto em Grupo

Endpoint: POST /api/message

WhatsApp Web:

{
  "recipientNumber": "5521977776666-group",
  "text": "Olá pessoal do grupo!",
  "isGroupMesssage": true
}

3.2 Envio de Mensagem de Áudio em Grupo

Endpoint: POST /api/message

WhatsApp Web:

{
  "recipientNumber": "5521977776666-group",
  "mediaUri": "https://s3.amazonaws.com/bucket/audio.mp3",
  "isGroupMesssage": true
}

3.3 Envio de Mensagem de Imagem em Grupo

Endpoint: POST /api/message

WhatsApp Web:

{
  "recipientNumber": "5521977776666-group",
  "mediaUri": "https://s3.amazonaws.com/bucket/imagem.jpg",
  "text": "Imagem para o grupo",
  "isGroupMesssage": true
}

3.4 Envio de Mensagem de Vídeo em Grupo

Endpoint: POST /api/message

WhatsApp Web:

{
  "recipientNumber": "5521977776666-group",
  "mediaUri": "https://s3.amazonaws.com/bucket/video.mp4",
  "text": "Vídeo para o grupo",
  "isGroupMesssage": true
}

3.5 Envio de Mensagem de Documento em Grupo

Endpoint: POST /api/message

WhatsApp Web:

{
  "recipientNumber": "5521977776666-group",
  "mediaUri": "https://s3.amazonaws.com/bucket/documento.pdf",
  "isGroupMesssage": true
}

3.6 Envio de Mensagem com Sticker em Grupo

Endpoint: POST /api/message

WhatsApp Web:

{
  "recipientNumber": "5521977776666-group",
  "mediaUri": "https://s3.amazonaws.com/bucket/sticker.webp",
  "isGroupMesssage": true
}

3.7 Envio de Mensagem de Contatos em Grupo

Endpoint: POST /api/message

WhatsApp Web:

{
  "recipientNumber": "5521977776666-group",
  "text": "Contato do suporte:\n👤 Maria Atendente\n📱 (21) 99999-8888",
  "isGroupMesssage": true
}

4. Recursos Adicionais de Mensagem

4.1 Indicador de "Digitando"

WhatsApp Web:

  • Funcionalidade automática do WhatsApp Web
  • Não requer chamada específica da API

D360:

  • Não suportado nativamente
  • Pode ser simulado com delay entre mensagens

4.2 Marcar Mensagem como Lida

Funcionalidade automática:

  • WhatsApp Web: Marca automaticamente como lida quando a mensagem é processada
  • D360: Status de leitura é enviado via webhook

Webhook de Status (D360):

{
  "statuses": [
    {
      "id": "wamid.HBgNNTUyMTk4ODg4Nzc3NxUCABIYFjNBMDJCMEE2RkY4QzRBOUNCNzAyRjAA",
      "status": "read",
      "timestamp": "1659518400",
      "recipient_id": "5521988887777"
    }
  ]
}

4.3 Responder Mensagem (Quote)

Endpoint: POST /api/message/send

WhatsApp Web:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "text": "Respondendo à sua pergunta...",
  "quotedMessage": {
    "id": "message_id_original",
    "message": "Qual o horário de funcionamento?"
  },
  "agentName": "Atendente Maria"
}

D360:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "text": "Respondendo à sua pergunta...",
  "quotedMessage": {
    "id": "wamid.HBgNNTUyMTk4ODg4Nzc3NxUCABIYFjNBMDJCMEE2RkY4QzRBOUNCNzAyRjAA"
  },
  "agentName": "Atendente Maria"
}

4.4 Mensagens Interativas (D360)

Botões:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "interactive": {
    "type": "button",
    "body": {
      "text": "Escolha uma opção:"
    },
    "action": {
      "buttons": [
        {
          "type": "reply",
          "reply": {
            "id": "opcao_1",
            "title": "Opção 1"
          }
        },
        {
          "type": "reply",
          "reply": {
            "id": "opcao_2",
            "title": "Opção 2"
          }
        }
      ]
    }
  },
  "agentName": "Atendente Maria"
}

Lista:

{
  "sessionId": "64cbbd9596429dbccd7841e5",
  "interactive": {
    "type": "list",
    "body": {
      "text": "Selecione um departamento:"
    },
    "action": {
      "button": "Ver opções",
      "sections": [
        {
          "title": "Departamentos",
          "rows": [
            {
              "id": "vendas",
              "title": "Vendas",
              "description": "Equipe de vendas"
            },
            {
              "id": "suporte",
              "title": "Suporte",
              "description": "Suporte técnico"
            }
          ]
        }
      ]
    }
  },
  "agentName": "Atendente Maria"
}

4.5 Templates (D360)

Iniciar Conversa com Template:

Endpoint: POST /api/message/start/d360

{
  "to": "5521988887777",
  "userName": "João Silva",
  "companyName": "Alterdata",
  "template": "contato_cliente",
  "templateVariables": ["João Silva", "Alterdata"]
}

4.6 Deletar Mensagem

Endpoint: DELETE /api/message/{messageId}?senderId={senderId}&channelSlug={channelSlug}

WhatsApp Web:

DELETE /api/message/message_id_123?senderId=5521977776666&channelSlug=whatsappweb

D360:

DELETE /api/message/wamid.HBgNNTUyMTk4ODg4Nzc3NxUCABIYFjNBMDJCMEE2RkY4QzRBOUNCNzAyRjAA?senderId=5521977776666&channelSlug=d360

5. Webhooks de Recebimento

5.1 Webhook WhatsApp Web

URL: POST /api/webhook/whatsappweb/{platformConfigId}/{channelId}

Exemplo de Mensagem Recebida:

{
  "type": "MESSAGE",
  "from": "5521988887777",
  "fromUserName": "João Silva",
  "to": "web5521977776666",
  "body": {
    "content": "Olá, preciso de ajuda",
    "type": "text"
  },
  "timestamp": 1659518400
}

5.2 Webhook D360

URL: POST /api/webhook/360dialog/{platformConfigId}/{channelId}

Exemplo de Mensagem Recebida:

{
  "messages": [
    {
      "id": "wamid.HBgNNTUyMTk4ODg4Nzc3NxUCABIYFjNBMDJCMEE2RkY4QzRBOUNCNzAyRjAA",
      "from": "5521988887777",
      "type": "text",
      "timestamp": "1659518400",
      "text": {
        "body": "Olá, preciso de ajuda"
      }
    }
  ],
  "contacts": [
    {
      "profile": {
        "name": "João Silva"
      },
      "wa_id": "5521988887777"
    }
  ]
}

6. Gestão de Sessões

6.1 Obter Sessão

Endpoint: GET /api/session/{sessionId}

Resposta:

{
  "_id": "64cbbd9596429dbccd7841e5",
  "client": {
    "name": "João Silva",
    "providerId": "5521988887777"
  },
  "type": "whatsappweb",
  "status": "active",
  "createdAt": "2023-08-03T10:30:00.000Z"
}

6.2 Transferir Sessão

Endpoint: POST /api/session/transfer/{sessionId}

{
  "params": {
    "platformSlug": "crm",
    "agentId": "agent_123"
  },
  "transferMessage": "Transferindo para o especialista..."
}

6.3 Finalizar Sessão

Endpoint: DELETE /api/session/finish/{sessionId}

Resposta:

{
  "message": "Session finished successfully",
  "sessionId": "64cbbd9596429dbccd7841e5"
}

7. Diferenças entre WhatsApp Web e D360

FuncionalidadeWhatsApp WebD360
Mensagens de Texto
Mídia (Imagem/Vídeo/Áudio)
Documentos
Stickers
Mensagens de Grupo
Templates
Botões Interativos
Listas Interativas
Contatos Estruturados
Indicador de Digitando
Deletar Mensagens
Validação de Números
Foto de Perfil

8. Códigos de Erro Comuns

8.1 WhatsApp Web

  • 404: Número não encontrado no WhatsApp Web
  • 400: Conexão com WhatsApp Web fechada
  • 400: Número inválido

8.2 D360

  • 401: Token de API inválido
  • 400: Formato de mensagem inválido
  • 429: Limite de taxa excedido
  • 500: Erro interno do D360

9. Configuração de Webhooks

9.1 WhatsApp Web

GET /{clientNumber}/setWebhook?url={webhookUrl}

9.2 D360

POST /configs/webhook
{
  "url": "https://seu-dominio.com/api/webhook/360dialog/{platformConfigId}/{channelId}"
}

10. Monitoramento e Logs

10.1 Status de Conexão

WhatsApp Web:

GET /{clientNumber}/status

Resposta:

{
  "status": "open",
  "qr": null,
  "battery": 85,
  "plugged": true
}

10.2 Validação de Número

WhatsApp Web:

GET /{providerId}/validate/{contact}

Resposta:

{
  "input": "5521988887777",
  "isValid": true,
  "jid": "5521988887777@c.us",
  "lid": "5521988887777@lid",
  "phone": "5521988887777"
}

Esta documentação cobre todas as funcionalidades principais das integrações WhatsApp Web e D360 disponíveis no sistema Omnichannel. Para implementações específicas ou dúvidas técnicas, consulte o código-fonte ou entre em contato com a equipe de desenvolvimento.