Visão Geral
Este módulo permite que usuários cadastrem, editem e monitorem funções customizadas, além de disparar chamadas via webhook e visualizar logs em tempo real. A documentação a seguir explica, passo a passo, como:
- Acessar a página de Depuração.
- Selecionar e monitorar logs de uma função.
- Criar e editar funções.
- Enviar requisições de teste.
1. Acessando a Página de Depuração
- Acessar o modulo de Funções
- Através do menu, Abra a página de Depuração.
Nesta tela você pode:
- Escolher a função a ser monitorada.
- Acompanhar, em tempo real, os logs que ela emite.
- Disparar requisições via webhook para testar seu comportamento.
2. Monitorando e Testando Funções
- Na página de Depuração, pesquise pelas Funções e selecione a que deseja analisar.
- A seção de Logs exibirá todas os logs gerados pela função customizada selecionada.
- Na área de Requisições, insira o payload JSON desejado e clique em Executar.
- É possível visualizar a resposta retornada pela função.
3. Definindo Funções: Criação e Edição
3.1 Acesso ao Componente de Pesquisa
No topo da aba de listagem de logs, utilize o campo de Pesquisa de Funções. Clique no ícone de opções ao lado de cada item para:
- Editar Função
- Criar Nova Função
3.2 Fluxo de Criação de Função
- Clique em Nova Função.
- Preencha o formulário:
- Nome: Identificador interno da função.
- Código Fonte: Nome do arquivo e corpo da função (ver detalhes abaixo).
- ID Usuário Robô: UUID do robô que executará a função.
4. Código Fonte da Função
No campo Código Fonte, defina:
- Arquivo: Nome do arquivo gerado (ex.:
addInteraction.js
). - Corpo da Função: Implementação em JavaScript que receberá o objeto
info
e o serviçocomunicationService
.
4.1 Campos do Objeto info
info.headers.user
: Identificador do usuário que disparou a chamada.info.headers.baseURL
: URL base para requisições internas.info.data
: Payload enviado na requisição.
4.2 Usando o comunicationService
O serviço comunicationService
possui método .call({ method, path, body })
para efetuar chamadas HTTP internas.
Exemplo: Corpo de função customizada para inserir uma interação em Pessoa/Empresa
// Importa pacote para serializar parâmetros de query string
const qs = require('qs');
module.exports = async (info, comunicationService) => {
const {
headers: { user, baseURL },
data
} = info;
console.log(data)
if (!data.cnpj) {
throw new Error('defina o campo CNPJ')
}
// Parâmetros para buscar pessoa/empresa por cpf_cnpj
const params = {
fields: ['puca_pid'],
alias: 'person',
args: { cpf_cnpj: data.cnpj },
where: {
v1: 'cpf_cnpj',
v2: '$cpf_cnpj',
operator: 'equals'
}
};
// Busca pessoa/empresa no CRM
const { data: [person] } = await comunicationService.call({
method: 'GET',
path: `puca-crm-api/person?${qs.stringify(params)}`
});
if(!person) {
throw new Error('Pessoa/Empresa não encontrada')
}
// Monta payload da interação
const body = {
type: '1eed0a52-082c-4210-999d-2f1195517631',
target: person.puca_pid,
text: 'Teste add interaction!'
// link: '' // opcional: URL para tela específica
};
// Cria a interação
await comunicationService.call({
method: 'POST',
path: 'puca-crm-api/interaction',
body
});
// Retorna mensagem de sucesso, se fornecida
return data?.textoDeSucesso || [];
};
Dica: Utilize payloads variados para garantir que sua função lida corretamente com diferentes cenários de entrada.