Sonax - Central de Recursos
SEGUE EXEMPLOS DE REGRAS ESPECIAIS DO NÓ DE CONDICIONAL DO SONAX CHAT ( EXEMPLOS DE FUNÇÃO CONDICIONAL DO CHATBOT)
7 min
Criado por Roberto Soares em 01/12/2022 20:40
Atualizado por João Victor em 08/06/2026 08:44
PARA VOCÊ CRIAR UMA CONDICIONAL DE TEMPO, PARA SIMULAR HORARIOS DE EXPEDIENTES DIFERENTES

createdAt && (new Date('{{createdAt}}').getDay() >= 1 && new Date('{{createdAt}}').getDay() <= 5 && new Date('{{createdAt}}').getHours()>=9 && new Date('{{createdAt}}').getHours()<=15)

neste exemplo eu verifico se o protocolo foi criado entre segunda e sexta e entre 9h e 16. Segue abaixo os dias convertido em número para ser usado na variavel de condicional:

Domingo é 0
Segunda é 1
Terça é 2 
Quarta é 3
Quinta é 4
Sexta é 5
Sabado é 6




 

NO EXEMPLO ABAIXO VOCÊ CRIAR UMA CONDICIONAL DE TEMPO, PARA SIMULAR EXCEÇÕES DE EXPEDIENTE, FERIADOS E DIAS E HORARIOS ESPECIFICOS QUE DESEJA ANALISAR

No exemplo abaixo a condicional analisa se o protocolo foi criado em data e horario  maior ou igual a 11-09-2024 08:00:00 e menor ou igual a 19-09-2024 12:30:00.
Ou seja, ele irá criar uma condição especial para todo protocolo que iniciar conversa entre 08:00 do dia 11-09-2024 e o 12:30 do dia 19-09-2024.

createdAt && (new Date('{{createdAt}}').toISOString() >= "2024-09-11T08:00:00.000Z" && new Date('{{createdAt}}').toISOString() <= "2024-09-19T12:30:00.000Z")
No exemplo abaixo a condicional analisa se o protocolo foi criado 02-09-2024. Ou seja, ele irá criar uma condição especial para todos protocolos que iniciarem conversa no dia 02-09-2024 createdAt.startsWith("2024-09-02")
18:07
 

 



NO EXEMPLO ABAIXO ELE COMPARA SE TEM A EXPRESSÃO "BOM DIA" E SE TIVER ELE ENVIA PARA A CONDIÇÃO ESPECIFICA

lastMessage.message.replace(/\W+/g, '-').toLowerCase() == 'bom-dia'

expressão regular acima faz o seguinte com a ultima mensagem recebida:
* acessa a propriedade lastMessage e em seguida a subpropriedade message
* substitui todos os espaços (\W) por '-'
* transforma em letras minusculas atraves de '.toLowerCase()'
* e comparar com 'bom-dia'



NO EXEMPLO ABAIXO ELE TENTA ENCONTRAR ALGUMA DAS EXPRESSÕES "BOM" , "DIA", "TUDO", "BEM", E SE TIVER ALGUMA DESSAS PALAVRAS ELE ENVIA PARA A CONDIÇÃO ESPECIFICA


lastMessage.message.match(/(bom|dia|tudo|bem)/gi).length > 0

 

 

NO EXEMPLO ABAIXO ELE TENTA ENCONTRAR A EXPRESSÕES "Faculdade EaD👩‍🎓", E SE TIVER ALGUMA DESSAS PALAVRAS ELE ENVIA PARA A CONDIÇÃO ESPECIFICA

lastMessage.message.match(/(Faculdade EaD👩‍🎓)/gi).length > 0

 

 

NO EXEMPLO ABAIXO  VOCÊ CRIA UMA CONDICIONAL QUE BUSCA TAG DO CONTATO

A tag pode ser vinculada no contato manualmente ou pelo fluxo do bot. Segue condicional:

contact.tags == "ID DA TAG DO CONTATO"   

Caso o contato tenha mais de uma TAG associada, basta ir adicionando outras condicionais e aumentando de um em um (contact.tags[1], contact.tags[2], etc). 
(O id da tag pode ser localizado acessando o menu configurações e parametros, aperta F12, clica em network e edita a Tag, clica no parâmetro.) Segue exemplo de condicional pronta:


contact.tags[0] == "ID DA TAG DO CONTATO"   
contact.tags[1] == "ID DA TAG DO CONTATO"   



Caso o contato tenha duas ou mais TAG associada, basta ir adicionando outras condicionais e aumentando de um em um (contact.tags[0], contact.tags[1], contact.tags[2], etc...).


Agora caso a Tag for no Protocolo do cliente, a condição é diferente, é usado a condição abaixo:

tags[0]._id == "ID DA TAG DO CONTATO"
tags[1]._id == "ID DA TAG DO CONTATO"

Caso o protocolo tenha duas ou mais TAG associada, basta ir adicionando outras condicionais e aumentando de um em um (tags[0]._id, tags[1]._id, tags[2._id, etc...)

Lembrando que nesse caso a TAG está vinculado ao protocolo, um exemplo são de automações vindas do Pabx com a TAG de " Ligação PABX Virtual ".

 

 

NO EXEMPLO ABAIXO VOCÊ CRIA UMA CONDICIONAL ANALISA SE O CONTATO TEM CLIENTE ASSOCIADO OU NÃO


customer != null

 



 

NO EXEMPLO ABAIXO VOCÊ CRIA UMA CONDICIONAL QUE IRÁ DIRECIONAR O CONTATO CARTERIZADO PARA UM FLUXO ESPECIFICO

contact.belongsToAttendant != null

*Caso queira associar o contato carteirizado a um atendente especifico para um fluxo , você deverá usar a expressão abaixo:

contact.belongsToAttendant === '65498e54d9876e846d2c95e1'

*O código entre aspas, é o código do atendente, que você deseja analisar a carteirização
 

 

 

NO EXEMPLO ABAIXO VOCÊ TRANSFERE UM PROTOCOLO QUE CHEGA COM A TAG "LIGAÇÃO DE PABX" PARA UMA CONDIÇÃO ESPECIFICA

tags[0]._id == "6526ac888e1231351e745454"


 

 

 

 

NO EXEMPLO ABAIXO VOCÊ  CRIAR UMA BLACKLIST QUE DIRECIONA OS NÚMEROS INDESEJADOS DIRETO PARA UM FLUXO ESPECÍFICO.


contact.celular == 553388888888  (número de exemplo, coloque o número desejado).



 

 

 

 

NO EXEMPLO ABAIXO VOCÊ  CRIAR UMA CONDICIONAL QUE CONSULTA SE O CONTATO TEM O CPF CADASTRADO:


contact.cpf != null







 

NO EXEMPLO ABAIXO VOCÊ  CRIA UMA CONDICIONAL QUE CONSULTA SE O CONTATO TEM UMA TAREFA ABERTA, E CASO TENHA ENCAMINHA PARA UM FLUXO EXPECIFICO.


haveTask == "false"
haveTask == "true"





NO EXEMPLO ABAIXO VOCÊ  CRIA UMA CONDICIONAL QUE CONSULTA SE O CONTATO JÁ EXISTE DENTRO DO SONAX CHAT

contact.name == null -- Se ele não tiver nome salvo é igual a null, é a primeira vez que entrou em contato ou não tem o contato criado no Sonax Chat.


contact.name != null -- Se for diferente de null, ele já tem nome salvo, ele já entrou em contato antes ou já tem contato criado no Sonax Chat.




NO EXEMPLO ABAIXO VOCÊ CRIA UMA CONDICIONAL QUE IRÁ VERIFICAR SE A ULTIMA MENSAGEM DO CLIENTE FOI UM AUDIO

lastMessage?.message_type === 'file' &&
(
String(mergedData.lastMessage?.payload?.mimetype || '').startsWith('audio/') ||
/^(ogg|mp3|wav|m4a|aac|flac|opus|wma|amr|oga|weba|mid|midi|aiff|alac|pcm)$/i.test(
    String(mergedData.lastMessage?.payload?.extension || '')
)
)


Este artigo foi útil para você?
Últimos artigos visitados