Package Information
Available Nodes
Documentation generating…
Documentation
n8n-nodes-underchat
Community Node do n8n para integrar workflows à API pública da UnderChat.
Operações
- Verificar dias e faixas de horário, com saídas Dentro do horário e Fora do horário
- Entrar em um atendimento aguardando com o executor selecionado
- Buscar ID do contato pelo telefone
- Criar contato
- Buscar/criar o contato e iniciar um atendimento em uma única operação
- Enviar texto, documento ou imagem por
chat_id - Enviar texto, documento ou imagem por telefone, criando o contato quando necessário
- Enviar template oficial em uma conversa
- Listar executores, usuários e setores
- Transferir um chat para outro usuário, setor ou worker
Os campos de executor, usuário, setor e worker oferecem busca na API e também
permitem informar o UUID manualmente.
Antes de Enviar mensagem por Chat ID, o node consulta uma vez os atendentes do
chat. Se o atendente principal ainda não tiver ingressado, o executor selecionado
assume o atendimento automaticamente; se o atendimento já estiver em andamento,
a mensagem é enviada diretamente.
A operação Enviar mensagem por telefone executa automaticamente:
buscar contato → criar se necessário → iniciar conversa → enviar mensagem
Envio de texto, documento ou imagem
As operações Enviar Mensagem Por Chat ID e Enviar Mensagem Por Telefone
oferecem o campo O que deseja enviar?:
- Texto: envia
type=texte a mensagem em JSON, mantendo o comportamento das
versões anteriores do node. - Documento: envia o arquivo como documento e aceita uma legenda opcional.
- Imagem: envia a imagem para ser exibida diretamente na conversa e também
aceita uma legenda opcional.
Quando o node anterior fornecer apenas um arquivo, ele será selecionado
automaticamente. Se houver mais de um, use Opções Avançadas > Arquivo A Enviar
para escolher. O nome original e o tipo do arquivo são preservados no upload, e
cada item de entrada envia um arquivo.
Internamente, documentos usam type=document e o campo documents; imagens usamtype=image e o campo images. O cliente HTTP do n8n prepara automaticamente omultipart/form-data, inclusive o boundary correto; o usuário não precisa
configurar headers ou parâmetros técnicos.
Buscar/criar contato e iniciar atendimento
A operação Buscar/Criar Contato E Iniciar Atendimento (startChatByPhone)
substitui a sequência manual de nodes usada para localizar ou cadastrar o contato,
obter seu ID e abrir a conversa. Ela recebe o telefone diretamente e executa:
buscar pelo telefone → criar se não existir → buscar o ID novamente
→ validar canal e setor → reutilizar um chat ativo ou iniciar o atendimento
Configure os seguintes campos:
- Executor: usuário ativo que realiza as chamadas à API.
- DDI e Telefone: usados na busca exata; informe o telefone sem o DDI.
- Nome para novo contato: usado somente quando o contato não existe.
- Criar se não existir: ativado por padrão. Quando desativado, a operação falha
sem criar dados caso o telefone não seja encontrado. - Canal: obrigatório em toda nova abertura, oficial ou não.
- Setor: obrigatório em toda nova abertura, oficial ou não.
- Template oficial e Variáveis: usados quando as regras do canal oficial
exigirem um template aprovado.
O usuário não precisa consultar nem transportar o contact_id. A API de criação
de contato não devolve esse ID; por isso o node consulta novamente o telefone após
uma criação bem-sucedida e só então inicia o atendimento. Se já existir um chat
ativo no mesmo canal e setor, ele é reutilizado em vez de criar outro. Um chat no
mesmo canal, mas em outro setor, não é movido silenciosamente: use a operação de
transferência ou selecione o setor atual.
O cadastro do contato e a abertura do atendimento são chamadas separadas da API.
Se a criação funcionar e uma validação posterior ou a abertura falhar, o contato
permanece cadastrado. Uma nova execução o localizará e reutilizará, sem duplicá-lo.
Canal oficial e templates
Depois de resolver o contato, o node consulta o contexto oficial usando o canal e
o contact_id. Ele respeita a janela retornada pela UnderChat:
- texto livre só pode ser enviado quando
can_send_freeformpermitir; - um template só pode ser usado quando estiver aprovado e disponível no contexto;
- quando
requires_templateestiver ativo, a abertura não continua sem um template
aprovado e todos os valores obrigatórios; key, componente, posição, nome do parâmetro e índice de botão vêm da API; o
usuário informa apenas os valores das variáveis, pelos campos ou em JSON;- o template é enviado junto da abertura do chat, evitando depender de um
chat_idcriado em um node anterior.
O campo Template oficial usa o seletor do n8n e também permite informar o nome
manualmente. A API pública lista os templates no contexto oficial, que exige umcontact_id. Quando o telefone é dinâmico ou o contato ainda não existe, o node
usa um contato já vinculado ao canal somente para carregar o catálogo no editor,
sem criar nem alterar dados. Na execução, ele consulta novamente o contexto com o
contato real e recusa qualquer template que não esteja aprovado ou cujas variáveis
não correspondam ao contrato retornado. Se o canal ainda não tiver nenhum contato,
o catálogo não poderá ser carregado antecipadamente; nesse caso ainda é possível
usar o modo manual/JSON, com a mesma validação rigorosa durante a execução.
Na operação Transferir para setor ou usuário, ative Entrar no atendimento
antes de transferir quando o chat ainda estiver aguardando atendimento. O node
muda o status para in_chat e, após a confirmação da API, realiza a transferência.
A API pública permite controlar a mensagem automática da transferência, mas não
expõe uma opção equivalente para a mensagem de ingresso no atendimento.
Horário de funcionamento
O recurso Horário de funcionamento → Verificar horário permite configurar uma
agenda semanal diretamente no node, sem código, API Key ou usuário executor.
A agenda é configurada no n8n: não consulta nem altera os horários cadastrados no
painel da UnderChat. Use o node UnderChat normal, não a versão UnderChat Tool.
Selecione o recurso Horário de funcionamento.
Escolha o Fuso horário: Brasília, o fuso do workflow, UTC ou um nome IANA
personalizado, comoAmerica/Manaus.Em Faixas de horário, clique em Adicionar faixa de horário.
Selecione um ou mais Dias da semana e preencha Início e Fim no
formatoHH:mm. Para liberar o dia todo, ative Dia inteiro.Adicione outras faixas para intervalos de almoço, horários diferentes na sexta
ou regras específicas para o fim de semana.Conecte as saídas:
- Dentro do horário: segue quando qualquer faixa corresponder ao momento atual.
- Fora do horário: segue quando nenhuma faixa corresponder.
As duas saídas preservam os dados de entrada, arquivos binários e o vínculo de cada
item com os nodes anteriores. O recurso não envia mensagens por conta própria.
Deixar uma saída sem conexão encerra aquele caminho.
Exemplo: agenda Redireciona
Para reproduzir a agenda de redirecionamento apresentada no painel, selecione
Brasília (America/Sao_Paulo) e cadastre estas cinco faixas:
| Dias selecionados | Início | Fim | Dia inteiro |
|---|---|---|---|
| Segunda a sexta | 00:00 | 07:59 | Não |
| Segunda a sexta | 12:01 | 12:59 | Não |
| Segunda a quinta | 18:00 | 23:59 | Não |
| Sexta | 17:00 | 23:59 | Não |
| Sábado e domingo | — | — | Sim |
No fluxo de mensagens, coloque esse node na saída de mensagens recebidas, após
a separação de mensagens enviadas/recebidas. Ligue Dentro do horário à automação
e deixe Fora do horário sem conexão. Isso mantém o caminho que bloqueia a IA
quando um atendente humano responde, independentemente do horário.
Regras e cuidados
- O minuto final é inclusivo:
07:59inclui até07:59:59.999;08:00já fica fora. - O intervalo
12:01–12:59não inclui o minuto12:00. - Uma faixa
22:00–02:00começa no dia selecionado e termina às02:00:59.999do
dia seguinte. Isso também funciona de domingo para segunda. - Início e fim iguais liberam apenas esse minuto. Use Dia inteiro para 24 horas.
- Dias sem faixas são considerados fora do horário; faixas sobrepostas não duplicam itens.
- A data/hora atual é capturada uma vez por execução do node, no fuso escolhido.
O recurso não é um agendador e não usa o horário original de uma mensagem antiga. - Feriados seguem a regra semanal; não há calendário de feriados nesta versão.
- É obrigatório cadastrar ao menos uma faixa válida. Dias, horários ou fusos
inválidos causam erro, sem encaminhar o item como se a configuração fosse válida. - Para usar o recurso como condição, mantenha Always Output Data desativado e
On Error → Stop Workflow. Alterar essas opções genéricas do n8n pode fazer o
fluxo continuar mesmo sem correspondência ou quando ocorrer um erro.
Requisitos
- Node.js 22 ou superior
- n8n com suporte a Community Nodes
- Conta UnderChat com plano ativo
- Token da API pública
- Um usuário executor ativo nas operações que exigem contexto de usuário
Conta, API Key e executor são necessários apenas para as operações que acessam
a API da UnderChat. O recurso Horário de funcionamento é local.
Desenvolvimento
npm install
npm run build
npm run lint
npm test
npm run dev
O modo de desenvolvimento inicia uma instância do n8n com o node carregado.
Credenciais
No n8n, crie uma credencial UnderChat API e informe:
- API Key: token gerado em
Integração → API pública. - URL Base: mantenha
https://api-public.underchat.com.br/v1em produção.
A API key identifica a conta e é enviada no header keyapi. Não existe um
executor padrão: em cada node, selecione explicitamente o usuário executor que
deve realizar a operação. O node consulta os executores ativos da conta e envia
o selecionado no header x-underchat-user-id.
Teste seguro
O envio de mensagens produz efeito real no canal configurado. Use um contato e um
canal controlados durante a validação.
Documentação
Licença
MIT