Pular para o conteúdo principal

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​

Informacoes geraisInformacoes 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.

CondicoesCondicoes

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.

AcoesAcoes

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:

VariavelDescricao
{{ 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:

VariavelDescricao
{{ 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:

VariavelDescricao
{{ department.name }}Nome do departamento
{{ department.sender_name }}Nome do remetente do departamento

Variaveis de mensagem (quando acionado por eventos de mensagem):

VariavelDescricao
{{ 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:

VariavelDescricao
{{ 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):

PropriedadeDescricao
ticket.idIdentificador unico do ticket
ticket.subjectLinha de assunto do ticket
ticket.folderPasta atual (INBOX, ASSIGNED, SPAM, etc.)
ticket.tagsArray de tags
ticket.statusObjeto com id, code e name
ticket.priorityObjeto com id e name
ticket.departmentObjeto com id e name
ticket.ownerObjeto com id, email, firstname, lastname
ticket.customerObjeto com id, email, firstname, lastname, name
ticket.<custom_field_code>Valor do campo personalizado pelo seu codigo

Propriedades de ticket disponiveis (escrita):

PropriedadeValor Esperado
ticket.statusCodigo de status (string) ou ID de status
ticket.priorityNome de prioridade (string) ou ID de prioridade
ticket.departmentNome de departamento (string) ou ID de departamento
ticket.ownerE-mail do usuario (string) ou ID do usuario
ticket.folderNome da pasta: "INBOX", "ASSIGNED", "SPAM", "ARCHIVE"
ticket.tagsArray de strings de tag
ticket.<custom_field_code>Valor correspondente ao tipo de campo personalizado

Funcoes auxiliares:

FuncaoRetorna
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):

PropriedadeDescricao
message.idIdentificador unico da mensagem
message.body_textConteudo da mensagem (texto simples)
message.body_htmlConteudo da mensagem (HTML)
message.createdAtTimestamp 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.

NotificacoesNotificacoes

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;
}
}
}
```