Regras de fluxo de trabalho
Automatize seus processos do Helpdesk com regras de fluxo de trabalho personalizaveis. As regras de fluxo de trabalho permitem que voce atualize automaticamente atributos de tickets, envie notificacoes e acione acoes especificas com base em eventos ou condicoes definidas. Este recurso ajuda a reduzir o trabalho manual, manter a consistencia e acelerar os tempos de resposta.
Apos a instalacao, o Helpdesk MX cria automaticamente a regra de fluxo de trabalho padrao "Auto-change status to Waiting for Customer on agent reply".
Informacoes gerais

- Rule Name: defina um nome descritivo para a regra. Uma nomenclatura clara ajuda sua equipe a identificar facilmente o que cada regra faz.
- Active: habilite ou desabilite a regra. Apenas regras ativas sao executadas quando seu evento e condicoes sao atendidos.
- Event: escolha o evento que aciona a regra.
- Priority / Sort Order: especifique a ordem de processamento da regra. Numeros menores sao executados primeiro. Isso ajuda a controlar quais regras tem precedencia quando varias regras se aplicam ao mesmo evento.
- Stop Further Rules Processing: pare de executar regras com prioridade mais baixa uma vez que esta regra tenha sido aplicada. Util quando voce quer uma regra especifica para assumir controle total de um evento.
Eventos
Os eventos definem quando a regra de fluxo de trabalho e avaliada. Os eventos disponiveis incluem:
- New Ticket - acionado quando um novo ticket e criado.
- New Customer Reply - acionado quando um cliente envia uma nova resposta.
- New Staff Reply - acionado quando um agente posta uma resposta.
- New Third Party Reply - acionado quando um terceiro envia uma mensagem.
- Ticket Assigned - acionado quando um ticket e atribuido a um usuario.
- Ticket Updated - acionado quando campos do ticket sao atualizados.
- Cron Every Hour - acionado pelo sistema a cada hora, permitindo acoes baseadas em tempo.
Condicoes
As condicoes definem quando uma regra de fluxo de trabalho deve ser executada. Voce pode usar uma ou multiplas condicoes, combina-las com logica ALL/ANY, e ate criar grupos aninhados para filtragem avancada. Deixe esta secao vazia para fazer a regra executar em cada ocorrencia do evento.

Campos disponiveis
Voce pode construir condicoes usando os seguintes campos:
- Subject - verifica palavras ou frases no assunto do ticket.
- Customer Email - corresponde ao endereco de e-mail do cliente.
- Customer Name - compara o nome do cliente.
- Channel - filtra tickets criados a partir de fontes especificas (por exemplo, e-mail, formulario de contato, API).
- Department - corresponde ao departamento atual atribuido ao ticket.
- Department (Before Change) - permite comparacao com o departamento antes de um evento de atualizacao.
- Folder - verifica a qual pasta o ticket pertence atualmente.
- Folder (Before Change) - verifica a pasta antes da ultima mudanca.
- Owner - corresponde ao agente atribuido.
- Owner (Before Change) - compara o proprietario antes de uma atualizacao.
- Priority - verifica a prioridade atual do ticket.
- Priority (Before Change) - compara a prioridade antes de ser atualizada.
- Status - verifica o status atual do ticket.
- Status (Before Change) - compara o status anterior.
- Last Message - permite verificar o conteudo na ultima mensagem.
- Last Reply By - define quem respondeu por ultimo (cliente, equipe ou terceiro).
- Hours Since Created - tempo decorrido desde que o ticket foi criado.
- Hours Since Last Reply - tempo desde a ultima resposta feita.
- Hours Since Updated - tempo desde que o ticket foi modificado pela ultima vez.
Operadores de condicao
Cada condicao pode usar um dos seguintes operadores para definir como os valores sao comparados:
- Equals - aciona quando o valor do campo corresponde exatamente ao valor especificado.
- Not Equals - aciona quando o valor do campo difere do valor especificado.
- Greater Than - aciona quando o valor e maior que o especificado (principalmente usado com campos numericos ou de tempo).
- Greater Than or Equals - aciona quando o valor e maior ou igual ao especificado.
- Less Than - aciona quando o valor e menor que o especificado.
- Less Than or Equals - aciona quando o valor e menor ou igual ao especificado.
- Between - aciona quando o valor esta entre dois numeros especificados (util para condicoes baseadas em tempo).
- Matches Regex - compara valores de campo usando expressoes regulares para correspondencia de padroes avancada.
- Starts With - aciona se o campo comeca com o texto especificado.
- Ends With - aciona se o campo termina com o texto especificado.
- Is Empty - aciona quando o campo nao tem valor.
- Is Not Empty - aciona quando o campo contem qualquer valor.
- Contains - aciona quando o campo inclui o texto especificado.
- Does Not Contain - aciona quando o campo nao inclui o texto especificado.
Acoes
As acoes definem o que acontece uma vez que todas as condicoes sao atendidas. Multiplas acoes podem ser combinadas dentro de uma unica regra.

As acoes disponiveis incluem:
- Set Status - atualiza o status do ticket.
- Set Priority - altera o nivel de prioridade.
- Set Department - reatribui o ticket a outro departamento.
- Set Owner - atribui a um agente especifico.
- Change Folder - move o ticket para uma pasta especifica.
- Add Tags - adiciona tags para categorizacao.
- Remove Tags - exclui tags existentes do ticket.
- Send Email - envia notificacoes por e-mail para destinatarios especificados.
- Run Script - executa codigo JavaScript personalizado para automacao avancada.
Acao Send Email
A acao Send Email permite que voce envie notificacoes automaticas por e-mail quando uma regra e acionada. Isso e util para alertar membros da equipe, notificar clientes ou comunicar-se com partes externas.
Opcoes disponiveis:
- Send to ticket owner - notifica o agente atribuido.
- Send to all department users - alerta todos os membros do departamento do ticket.
- Send to customer - informa o cliente sobre atualizacoes.
- Send to other addresses - especifica enderecos de e-mail personalizados.
- Email Subject - define a linha de assunto do e-mail (suporta variaveis de template Liquid).
- Email Body - compoe o conteudo do e-mail (suporta variaveis de template Liquid).
- Include attachments - anexa arquivos da ultima mensagem.
Variaveis de Template
Voce pode usar variaveis de template Liquid nos campos Email Subject e Email Body para inserir dinamicamente informacoes de ticket, cliente e mensagem.
Variaveis de ticket:
| Variavel | Descricao |
|---|---|
{{ ticket.code }} | Codigo do ticket (por exemplo, T-001) |
{{ ticket.subject }} | Linha de assunto do ticket |
{{ ticket.created_at }} | Timestamp de criacao do ticket |
{{ ticket.updated_at }} | Timestamp da ultima atualizacao |
{{ ticket.customer_name }} | Nome completo do cliente |
{{ ticket.customer_email }} | Endereco de e-mail do cliente |
{{ ticket.admin_url }} | Link direto para o ticket no painel admin |
{{ ticket.admin_last_message_text }} | Corpo da ultima resposta do agente (texto simples) |
{{ ticket.admin_last_message_html }} | Corpo da ultima resposta do agente (HTML) |
{{ ticket.customer_last_message_text }} | Corpo da ultima resposta do cliente (texto simples) |
{{ ticket.customer_last_message_html }} | Corpo da ultima resposta do cliente (HTML) |
Variaveis de proprietario/responsavel:
| Variavel | Descricao |
|---|---|
{{ owner.firstname }} | Primeiro nome do agente atribuido |
{{ owner.lastname }} | Sobrenome do agente atribuido |
{{ owner.email }} | E-mail do agente atribuido |
{{ owner.fullname }} | Nome completo do agente atribuido |
{{ owner.is_admin }} | Se o proprietario e um administrador |
Variaveis de departamento:
| Variavel | Descricao |
|---|---|
{{ department.name }} | Nome do departamento |
{{ department.sender_name }} | Nome do remetente do departamento |
Variaveis de mensagem (quando acionado por eventos de mensagem):
| Variavel | Descricao |
|---|---|
{{ message.body_text }} | Conteudo da mensagem (texto simples) |
{{ message.body_html }} | Conteudo da mensagem (HTML) |
{{ message.type }} | Tipo de mensagem |
{{ message.created_at }} | Timestamp de criacao da mensagem |
Variaveis de data/hora:
| Variavel | Descricao |
|---|---|
{{ now }} | Timestamp atual (RFC3339) |
{{ date }} | Data atual (YYYY-MM-DD) |
{{ time }} | Hora atual (HH:MM:SS) |
{{ year }} | Ano atual |
Exemplo de template de e-mail:
Subject: New reply on ticket #{{ ticket.code }}
Hi {{ owner.firstname }},
A customer has replied to ticket "{{ ticket.subject }}".
Customer: {{ ticket.customer_name }} ({{ ticket.customer_email }})
Last message:
{{ ticket.customer_last_message_text }}
View ticket: {{ ticket.admin_url }}
Acao Run Script
A acao Run Script permite que voce execute codigo JavaScript personalizado para implementar logica de automacao complexa que vai alem de atribuicoes simples de campos. Scripts podem ler dados de tickets, tomar decisoes condicionais e atualizar multiplos campos de uma vez.
Propriedades de ticket disponiveis (leitura):
| Propriedade | Descricao |
|---|---|
ticket.id | Identificador unico do ticket |
ticket.subject | Linha de assunto do ticket |
ticket.folder | Pasta atual (INBOX, ASSIGNED, SPAM, etc.) |
ticket.tags | Array de tags |
ticket.status | Objeto com id, code e name |
ticket.priority | Objeto com id e name |
ticket.department | Objeto com id e name |
ticket.owner | Objeto com id, email, firstname, lastname |
ticket.customer | Objeto com id, email, firstname, lastname, name |
ticket.<custom_field_code> | Valor do campo personalizado pelo seu codigo |
Propriedades de ticket disponiveis (escrita):
| Propriedade | Valor Esperado |
|---|---|
ticket.status | Codigo de status (string) ou ID de status |
ticket.priority | Nome de prioridade (string) ou ID de prioridade |
ticket.department | Nome de departamento (string) ou ID de departamento |
ticket.owner | E-mail do usuario (string) ou ID do usuario |
ticket.folder | Nome da pasta: "INBOX", "ASSIGNED", "SPAM", "ARCHIVE" |
ticket.tags | Array de strings de tag |
ticket.<custom_field_code> | Valor correspondente ao tipo de campo personalizado |
Funcoes auxiliares:
| Funcao | Retorna |
|---|---|
getStatuses() | Array de todos os status disponiveis |
getPriorities() | Array de todas as prioridades disponiveis |
getDepartments() | Array de todos os departamentos disponiveis |
getUsers() | Array de todos os usuarios disponiveis |
fetch(url, options) | Fazer requisicoes HTTP para APIs externas |
Contexto de mensagem (disponivel quando a regra e acionada por um evento de mensagem):
| Propriedade | Descricao |
|---|---|
message.id | Identificador unico da mensagem |
message.body_text | Conteudo da mensagem (texto simples) |
message.body_html | Conteudo da mensagem (HTML) |
message.createdAt | Timestamp de criacao da mensagem |
Exemplos de script:
// Definir prioridade com base em palavras-chave no assunto
if (ticket.subject.toLowerCase().includes("urgent")) {
ticket.priority = "High";
}
// Rotear tickets para departamentos com base no conteudo
if (ticket.subject.includes("billing") || ticket.subject.includes("invoice")) {
ticket.department = "Billing";
} else if (ticket.subject.includes("technical") || ticket.subject.includes("error")) {
ticket.department = "Technical Support";
}
// Tratamento de cliente VIP
if (ticket.customer && ticket.customer.email.endsWith("@enterprise.com")) {
ticket.priority = "High";
ticket.tags = ["vip", "enterprise"];
}
// Definir valor de campo personalizado
ticket.order_id = "12345";
ticket.vip_customer = true;
ticket.order_amount = 99.99;
// Buscar dados do cliente de API externa e atualizar ticket
var response = fetch("https://api.example.com/customers/" + ticket.customer.email, {
headers: { "Authorization": "Bearer YOUR_API_KEY" }
});
if (response.ok && response.json) {
ticket.customer_tier = response.json.tier;
if (response.json.tier === "enterprise") {
ticket.priority = "High";
ticket.department = "Enterprise Support";
}
}
Notas importantes:
- Scripts tem um timeout de 10 segundos para prevenir loops infinitos.
- Valores de campo invalidos (status, prioridade, etc. inexistentes) sao ignorados graciosamente.
- Erros de script nao afetam outras regras ou travam o sistema.
- Campos personalizados sao referenciados pelo seu codigo, nao pelo nome.
Notificacoes
Voce pode enviar notificacoes automaticas por e-mail quando a regra executa para manter todas as partes informadas.

As opcoes de notificacao incluem:
- Send email to ticket owner - notifica o agente atribuido.
- Send email to all department users - alerta todos os membros do departamento.
- Send email to customer - informa o cliente sobre mudancas.
- Send email to other addresses - envia para destinatarios externos.
- Email Subject - especifica a linha de assunto.
- Email Body - compoe o conteudo do e-mail.
- Attach files previously attached to the last message - inclui anexos anteriores para contexto.
Exemplos de regras de fluxo de trabalho
Mudar status na resposta do cliente
Quando um cliente responde, o sistema muda automaticamente o status do ticket para Waiting for Agent.
Tipo: Regra de Fluxo de Trabalho
Esta Ativo: Sim
Evento: New Customer Reply
Condicoes: Status Not Equals Closed
Acoes: Set Status -> Waiting for Agent
Nova resposta de Terceiro
Quando um terceiro envia uma mensagem, o sistema define o status como Waiting for Agent e adiciona uma tag `third_party`.
Tipo: Regra de Fluxo de Trabalho
Esta Ativo: Sim
Evento: New Third Party Reply
Condicoes: Nenhuma
Acoes:
Set Status -> Waiting for Agent
Add Tags -> third_party
Ticket atribuido a equipe
Quando um ticket e atribuido a um membro da equipe, ele move automaticamente para a pasta Assigned e envia uma notificacao por e-mail.
Tipo: Regra de Fluxo de Trabalho
Esta Ativo: Sim
Evento: Ticket Assigned
Condicoes: Nenhuma
Acoes:
Change Folder -> Assigned
Send email to ticket owner
Fechar ticket apos 72 horas sem resposta
Se nenhuma resposta for recebida dentro de 72 horas, o ticket fecha automaticamente.
Tipo: Regra de Fluxo de Trabalho
Esta Ativo: Sim
Evento: Cron Every Hour
Condicoes:
Status Equals Waiting for Customer
Hours Since Last Reply Greater Than 72
Acoes: Set Status -> Closed
Script: Rotear e priorizar com base no dominio de e-mail do cliente
Roteia clientes enterprise para suporte dedicado e define alta prioridade.
Tipo: Regra de Fluxo de Trabalho
Esta Ativo: Sim
Evento: New Ticket
Condicoes: Nenhuma
Acoes: Run Script
```javascript
if (ticket.customer && ticket.customer.email) {
var domain = ticket.customer.email.split("@")[1];
if (domain === "enterprise.com" || domain === "bigcorp.com") {
ticket.priority = "High";
ticket.department = "Enterprise Support";
ticket.tags = ["enterprise", "priority"];
}
}
```
Script: Auto-categorizar tickets por palavras-chave no assunto
Categoriza automaticamente tickets e define campos personalizados com base no conteudo do assunto.
Tipo: Regra de Fluxo de Trabalho
Esta Ativo: Sim
Evento: New Ticket
Condicoes: Nenhuma
Acoes: Run Script
```javascript
var subject = ticket.subject.toLowerCase();
if (subject.includes("refund") || subject.includes("return")) {
ticket.department = "Billing";
ticket.category = "refund_request";
} else if (subject.includes("password") || subject.includes("login")) {
ticket.department = "Technical Support";
ticket.category = "account_access";
} else if (subject.includes("order") || subject.includes("shipping")) {
ticket.department = "Orders";
ticket.category = "order_inquiry";
}
```
Script: Escalar com base na analise de conteudo da mensagem
Detecta palavras-chave urgentes nas mensagens e escala automaticamente os tickets.
Tipo: Regra de Fluxo de Trabalho
Esta Ativo: Sim
Evento: New Customer Reply
Condicoes: Nenhuma
Acoes: Run Script
```javascript
if (message && message.body_text) {
var body = message.body_text.toLowerCase();
var urgentKeywords = ["asap", "urgent", "critical", "down", "outage", "emergency"];
for (var i = 0; i < urgentKeywords.length; i++) {
if (body.includes(urgentKeywords[i])) {
ticket.priority = "High";
ticket.tags = ticket.tags.concat(["escalated"]);
break;
}
}
}
```