Termo | Definição |
---|---|
Requisitos do manipulador | Estes são os requisitos que precisam ser atendidos para que o manipulador tenha efeito na sessão. Um manipulador é chamado de chamado quando atende aos requisitos e afeta a sessão de alguma forma. |
Fulfillment do manipulador | Se um manipulador for chamado, um fulfillment opcional será usado para criar respostas para os usuários finais. Essas respostas são definidas nos dados do agente estático ou recuperadas dinamicamente do serviço de webhook. |
Meta de transição do manipulador | Se um manipulador for chamado, um destino de transição opcional será usado para alterar a página atual. A próxima página só pode ser uma página inicial de fluxo ou uma página dentro do fluxo ativo no momento. |
Há dois tipos de manipuladores de estado com requisitos de gerenciador diferentes:
Termo | Definição |
---|---|
Rotas | Rotas são chamadas quando uma entrada de usuário final corresponde a uma intent e/ou quando alguma condição no status da sessão é atendida. Uma rota com um requisito de intent também é chamada de rota de intent. Uma rota com apenas um requisito de condição também é chamada de rota de condição. |
Manipuladores de eventos | Os manipuladores de eventos são chamados quando um evento é invocado. Alguns eventos integrados são acionados quando a entrada inesperada do usuário final é recebida ou quando ocorre um erro do webhook. Também é possível definir eventos personalizados que são invocados quando algo acontece fora da conversa. |
Há três etapas para processar um manipulador de estado:
Termo | Definição |
---|---|
1. Escopo | O manipulador precisa estar no escopo para ter efeito na sessão. O escopo é determinado pela aplicação de um gerenciador a um fluxo, a uma página ou a um parâmetro de formulário, e se o fluxo associado estiver ativo, a página associada estiver ativa ou se o agente estiver tentando preencher o parâmetro do formulário associado. |
2. Avaliação | Cada manipulador no escopo é avaliado em ordem. Se os requisitos de um manipulador forem atendidos, ele será aprovado na avaliação. |
3. Chamada | Se um manipulador estiver no escopo e passar na avaliação, ele será chamado. Qualquer fulfillment associado será chamado, e qualquer meta de transição associada será aplicada à sessão. |
escopo
Para que um manipulador seja avaliado, ele precisa estar no escopo. O escopo do manipulador é uma ferramenta importante e eficiente que ajuda você a controlar a conversa. Ao controlar o escopo de um manipulador, você pode controlar:
X | Item |
---|---|
Quando uma intent pode ser correspondida | |
Quando uma condição precisa ser verificada | |
Quando um determinado evento pode ser manipulado | |
Quando uma transição de página pode ocorrer | |
Quando uma resposta de conclusão estática é fornecida | |
Quando um fulfillment ativado para webhook é chamado para respostas dinâmicas |
O escopo é determinado se um manipulador for aplicado a um fluxo, a uma página ou a um parâmetro de formulário, e se o fluxo associado estiver ativo, a página associada estiver ativa ou se o agente estiver tentando preencher o parâmetro de formulário associado.
As regras de escopo detalhadas são as seguintes:
- Rotas de transição aplicadas ao fluxo ativo:
- Se a página atual for a página inicial do fluxo, ela estará no escopo.
- Se a página atual não for a página inicial do fluxo, ela estará no escopo somente se tiver um requisito de intent.
- As rotas aplicadas à página atual estão no escopo.
- Os manipuladores de eventos aplicados ao fluxo ativo estão no escopo.
- Os manipuladores de evento aplicados à página atual estão no escopo.
- Os manipuladores de evento aplicados a um parâmetro de formulário que o agente está tentando preencher no escopo.
Rotas
As rotas têm dois requisitos, e um ou ambos precisam ser fornecidos. Se os dois requisitos forem fornecidos, ambos precisarão ser atendidos para chamar o trajeto:
Termo | Definição |
---|---|
Requisito de intent | Uma intent que precisa corresponder à entrada do usuário final para a rodada de conversa atual. Quando uma rota tem um requisito de intent, ela é chamada de rota de intent. |
Requisito de condição | Uma condição que precisa ser atendida. Quando uma rota tem um requisito de condição, ela é chamada de rota de condição. |
Você pode aplicar rotas a fluxos (rotas no nível de fluxo) e a páginas (rotas no nível da página). Por exemplo, é possível usar rotas nas seguintes situações:
X | Item |
---|---|
Quando a entrada do usuário final corresponde a uma intent, a correspondência precisa acionar uma resposta de fulfillment estático. | |
Quando a entrada do usuário final corresponde a uma intent, a correspondência precisa acionar um fulfillment ativado para webhook para uma resposta dinâmica. | |
Quando a entrada do usuário final fornece o parâmetro de formulário final exigido, uma verificação de condição aciona uma transição de sessão para outra página. | |
Quando a entrada do usuário final tiver fornecido um parâmetro de formulário específico, uma verificação de condição acionará uma resposta de fulfillment estático. | |
Uma verificação de condição definida como true
que força uma transição de página. |
Propagação de intents
Normalmente, quando uma rota é chamada devido a uma intent correspondente, ela é consumida. Uma intent consumida não pode ser correspondida novamente, a menos que uma nova entrada de usuário final acione uma nova correspondência de intent. No entanto, é possível propagar uma correspondência de intent de um fluxo para outro no seguinte cenário:
- Uma rota em
flow F1
temintent I1
como um requisito eflow F2
como um destino de transição. Flow F2
tem uma rota que também temintent I1
como um requisito.
Nesse caso, quando a rota em flow F1
é chamada,
intent I1
é correspondido duas vezes para uma única entrada de usuário final,
e ambas as rotas são chamadas.
Propagar intents é útil para:
X | Item |
---|---|
Altere a página atual para uma página específica em outro fluxo (a rota do fluxo de destino de transição tem uma página de destino de transição específica). | |
Crie uma mensagem de entrada para a página inicial de um fluxo (a rota do fluxo de conversão de transição tem um fulfillment). |
Grupos de rotas
Ao criar um agente, é possível descobrir que muitas páginas têm um conjunto comum de rotas. Para tornar os trajetos reutilizáveis, você pode definir grupos de trajetos. É possível criar esses recursos de grupo reutilizáveis dentro do fluxo ou de todo o agente.
Por exemplo, você pode querer que seu fluxo lide com a entrada do usuário final, como "Quero adicionar uma cobertura à minha pizza" e "Quero alterar o tamanho da minha bebida". Essas entradas devem ser tratadas quando qualquer uma das várias páginas do fluxo estiver ativa. É possível definir duas rotas com intents para processar essas entradas em todas as páginas relevantes, mas isso é muito trabalho duplicado. Em vez disso, é possível definir o grupo de rotas uma vez e adicionar uma referência ao grupo em todas as páginas relevantes.
Grupos de rotas no nível do fluxo
Os grupos de rotas no nível do fluxo são recursos de grupos de rotas criados com um fluxo como pai. Eles são reutilizáveis dentro do fluxo.
Grupos de rotas no nível do agente
Grupos de rotas no nível do agente são recursos de grupo de rotas criados com uma como pai. Eles são reutilizáveis em todo o agente, mas não permitem rotas que fazem a transição para uma página não simbólica como destino.
Rotas de nível de fluxo
Rotas no nível do fluxo são rotas aplicadas a um fluxo adicionando-as à página inicial do fluxo. Esses tipos de manipuladores têm os seguintes casos de uso:
X | Item |
---|---|
Manipuladores com um requisito de intent ou condição no escopo da página inicial do fluxo. | |
Os manipuladores com um requisito de intent no escopo de todas as páginas dentro do fluxo. |
Para criar rotas no nível do fluxo no console:
- Abra a página inicial do fluxo.
- Clique no botão de adição no título Rotas.
- O painel de edição da rota é aberto.
- Forneça campos de trajeto.
- Clique em Salvar.
Para reordenar rotas no nível do fluxo no console:
- Abra a página inicial do fluxo.
- Clique no título Rotas.
- O painel com a lista de rotas é aberto.
- Arraste as rotas na ordem desejada. Como alternativa, clique na opção Menu , e selecione Mover para.
Para excluir rotas no nível do fluxo do console:
- Abra a página inicial do fluxo.
- Clique no título Rotas.
- O painel com a lista de rotas é aberto.
- Clique no menu de opções .
- Selecione Excluir.
Rotas no nível da página
Rotas no nível da página são rotas aplicadas a uma página. Esses tipos de manipuladores têm os seguintes casos de uso:
X | Item |
---|---|
Manipuladores com uma exigência de intent ou condição no escopo quando páginas específicas estão ativas. |
Para criar rotas no nível da página usando o console:
- Abra a página (não a página inicial do fluxo).
- Clique no botão de adição no título Rotas.
- O painel de edição da rota é aberto.
- Forneça campos de trajeto.
- Clique em Salvar.
Para reordenar as rotas no nível da página no console:
- Abra a página (não a página inicial do fluxo).
- Clique no título Rotas.
- O painel com a lista de rotas é aberto.
- Arraste as rotas na ordem desejada. Como alternativa, clique no menu de opções e selecione Mover para.
Para excluir rotas no nível da página do console:
- Abra a página (não a página inicial do fluxo).
- Clique no título Rotas.
- O painel com a lista de rotas é aberto.
- Clique no menu de opções .
- Selecione Excluir.
Manipuladores de eventos
Os manipuladores de eventos têm um requisito para serem chamados:
Termo | Definição |
---|---|
Requisito do evento | Um evento que precisa ser invocado. Os eventos são identificados pelo nome. Alguns eventos integrados são invocados quando a entrada inesperada do usuário final é recebida ou quando ocorre um erro do webhook. Também é possível definir eventos personalizados que são invocados quando algo acontece fora da conversa. |
Você pode aplicar manipuladores de eventos a fluxos (manipuladores de eventos no nível do fluxo), páginas (manipuladores de eventos no nível da página) e parâmetros (manipuladores de eventos no nível do parâmetro). Por exemplo, você pode usar manipuladores de eventos nas seguintes situações:
X | Item |
---|---|
Quando a entrada do usuário final não corresponde a nenhuma intent, um manipulador de eventos no-match fornece uma resposta fulfillment estática específica. | |
Um timer expira no sistema, e você quer fornecer informações de lembrete ao usuário final com uma resposta de fulfillment estático específica. |
Manipuladores de eventos no nível do fluxo
Os manipuladores de eventos no nível do fluxo são manipuladores de eventos aplicados a um fluxo. Esses tipos de manipuladores têm os seguintes casos de uso:
X | Item |
---|---|
Manipuladores com um requisito de evento no escopo da página inicial do fluxo. | |
Os manipuladores com um requisito de evento no escopo de todas as páginas dentro do fluxo. | |
Lidar com entradas inesperadas do usuário final, compartilhadas por todas as páginas em um fluxo. | |
Lidar com erros de webhook, compartilhados por todas as páginas em um fluxo. | |
Lidar com eventos personalizados invocados pelo sistema, compartilhados por todas as páginas em um fluxo. |
Cada fluxo tem manipuladores de eventos para o no-match
e no-input
eventos integrados.
Esses manipuladores de eventos são criados automaticamente quando você cria um fluxo e não podem ser excluídos.
Para criar manipuladores de eventos em nível de fluxo a partir do console:
- Abra a página inicial do fluxo.
- Clique no botão "Adicionar" . no título Manipuladores de eventos.
- O painel do gerenciador de eventos é aberto.
- Forneça os campos do manipulador de eventos.
- Clique em Salvar.
Para excluir gerenciadores de eventos no nível do fluxo do console:
- Abra a página inicial do fluxo.
- Clique no título Gerenciadores de eventos.
- O painel da lista de manipuladores de eventos é aberto.
- Passe o mouse sobre um manipulador de eventos e clique no botão "Excluir" Botão .
Manipuladores de eventos no nível da página
Os manipuladores de eventos no nível da página são manipuladores de eventos aplicados a uma página. Esses tipos de manipuladores têm os seguintes casos de uso:
X | Item |
---|---|
Manipualdres com um requisito de evento no escopo quando páginas específicas estão ativas. | |
Lidar com entradas inesperadas do usuário final específicas de uma página. | |
Como lidar com erros de webhook, específicos de uma página. | |
Lidar com eventos personalizados invocados pelo sistema, específicos de uma página. |
Para criar manipuladores de eventos em nível de página a partir do console:
- Abra uma página (não a página inicial do fluxo).
- Se não houver um cabeçalho Manipuladores de evento, Clique em Adicionar gerenciador de estado selecione Manipuladores de evento, e clique em Aplicar.
- Clique no botão "Adicionar" . no título Manipuladores de eventos.
- O painel do gerenciador de eventos é aberto.
- Forneça os campos do manipulador de eventos.
- Clique em Salvar.
Para excluir manipuladores de eventos de nível de página a partir do console:
- Abra uma página (não a página inicial do fluxo).
- Clique no título Gerenciadores de eventos.
- O painel da lista de manipuladores de eventos é aberto.
- Passe o cursor sobre um manipulador de eventos e clique no botão de exclusão .
Manipuladores de eventos no nível do parâmetro
Os manipuladores de eventos no nível do parâmetro são manipuladores de eventos aplicados a um parâmetro de formulário. Eles também são conhecidos como gerenciadores de solicitações novas (reprompt). Esses manipuladores de eventos não permitem eventos personalizados, pois se destinam especificamente a processar entradas de usuário final inválidas durante o preenchimento do formulário.
Esses tipos de manipuladores têm os seguintes casos de uso:
X | Item |
---|---|
O usuário final não forneceu uma entrada válida quando solicitado a preencher um parâmetro de formulário. |
Para criar manipuladores de eventos no nível do parâmetro no console:
- Abra uma página que contenha os parâmetros de formulário.
- Clique em um parâmetro.
- O painel de parâmetros é aberto.
- Role a tela para baixo até a seção Reprompt event handlers e clique em Add event handler.
- O painel do gerenciador de eventos é aberto.
- Forneça os campos do manipulador de eventos.
- Clique em Salvar.
Para excluir os manipuladores de eventos no nível do parâmetro do console:
- Abra uma página que contenha os parâmetros de formulário.
- Clique em um parâmetro.
- O painel de parâmetros é aberto.
- Role para baixo até a seção Reprompt manipuladores de eventos.
- Passe o mouse sobre um manipulador de eventos e clique no botão "Excluir" Botão .
Eventos integrados
Os eventos a seguir são integrados e invocados por agentes de conversação (Dialogflow CX). Alguns eventos são restritos a determinados níveis.
Nome do evento |
Nível do fluxo | Nível da página | Nível do parâmetro | Quando foi invocado |
---|---|---|---|---|
sys.no-match-default |
✔ | ✔ | ✔ | |
sys.no-match-[1-6] |
✔ | ✔ | ✔ | Se você fornecer gerenciadores para qualquer um desses eventos numerados, eles serão invocados em vez de sys.no-match-default e na ordem: sys.no-match-1 , sys.no-match-2 , ... |
sys.no-input-default |
✔ | ✔ | ✔ | A entrada do usuário final não foi recebida. Isso pode ser invocado quando:
|
sys.no-input-[1-6] |
✔ | ✔ | ✔ | Se você fornecer gerenciadores para qualquer um desses eventos numerados, eles serão invocados em vez de sys.no-input-default e na ordem: sys.no-input-1 , sys.no-input-2 , ... |
sys.invalid-parameter |
✔ | Invocado quando uma resposta de webhook invalida o parâmetro definindo WebhookResponse.pageInfo.formInfo.parameterInfo.state como INVALID . |
||
sys.long-utterance |
✔ | ✔ | ✔ | A entrada do usuário final excede o tamanho máximo permitido (256 caracteres) correspondido por intents não generativas ou parâmetros. Se não for fornecida, os agentes de conversação (Dialogflow CX) vão tratar a fala longa do usuário como no-match . Para entradas de streaming de áudio, esse evento é acionado somente depois que o cliente fecha o streaming de áudio. |
webhook.error |
✔ | ✔ | A chamada do webhook retornou um erro. Esse evento só é invocado: 1) se não houver um gerenciador de eventos detalhado do webhook (por exemplo, webhook.error.timeout) que corresponda ao código de erro do webhook, 2) se não houver um destino de transição definido na rota original que chamou o fulfillment com o webhook com falha. Consulte a seção Pedido de avaliação para mais detalhes. | |
webhook.error.timeout |
✔ | ✔ | A chamada do webhook expirou. Um evento de webhook só será invocado se não houver um destino de transição definido na rota original que chamou o fulfillment com o webhook com falha. Consulte a seção ordem de avaliação para mais detalhes. | |
webhook.error.bad-request |
✔ | ✔ | O webhook retornou 400 Bad Request. Um evento de webhook só será invocado se não houver um destino de transição definido na rota original que chamou o fulfillment com o webhook com falha. Consulte a seção Pedido de avaliação para mais detalhes. | |
webhook.error.rejected |
✔ | ✔ | O webhook retornou 401 Unauthorized ou 403 Forbidden. Um evento de webhook só será invocado se não houver um destino de transição definido na rota original que chamou o fulfillment com o webhook com falha. Consulte a seção ordem de avaliação para mais detalhes. | |
webhook.error.unavailable |
✔ | ✔ | O webhook retornou 503 Service Unavailable. Um evento de webhook só será invocado se não houver um destino de transição definido na rota original que chamou o fulfillment com o webhook com falha. Consulte a seção Pedido de avaliação para mais detalhes. | |
webhook.error.not-found |
✔ | ✔ | A chamada do webhook falhou porque o URL do webhook estava inacessível. Um evento de webhook só será invocado se não houver um destino de transição definido na rota original que chamou o fulfillment com o webhook com falha. Consulte a seção ordem de avaliação para mais detalhes. | |
flow-cancelled |
✔ | ✔ | O usuário final solicitou o cancelamento do fluxo. Esse evento é acionado pela página "Encerrar fluxo com cancelamento". Consulte a meta de transição simbólica END_FLOW_WITH_CANCELLATION . |
|
flow-failed |
✔ | ✔ | Este fluxo não conseguiu concluir a tarefa. Esse evento é acionado pela página "End Flow With Failure". Consulte a destino da transição simbólica END_FLOW_WITH_FAILURE . |
|
flow-failed-human-escalation |
✔ | ✔ | O usuário final pediu para conversar com agentes humanos. Esse evento é acionado pela página "Encerrar fluxo com encaminhamento humano". Consulte o END_FLOW_WITH_HUMAN_ESCALATION destino de transição simbólica. |
Eventos personalizados
É possível criar eventos personalizados e manipuladores de eventos. Os eventos personalizados são usados para processar coisas que acontecem fora da conversa com o usuário final. Por exemplo, o usuário final clicou em um botão, um determinado período de tempo passou, o inventário disponível mudou durante a conversa, e assim por diante.
Os eventos são identificados apenas pelo nome.
Evite usar nomes de eventos que começam com sys.
ou webhook.
para evitar conflito com eventos incorporados.
Para invocar um evento com a API,
consulte o campo queryInput.event
do método detectIntent
para o tipo Session
.
Selecione um protocolo e uma versão para a referência de sessão:
Protocolo | V3 | V3beta1 |
---|---|---|
REST | Recurso da sessão | Recurso da sessão |
RPC (remote procedure call) | Interface da sessão | Interface da sessão |
C++ | SessionsClient | Indisponível |
C# | SessionsClient | Indisponível |
Go | SessionsClient | Indisponível |
Java | SessionsClient | SessionsClient |
Node.js | SessionsClient | SessionsClient |
PHP | Indisponível | Indisponível |
Python | SessionsClient | SessionsClient |
Ruby | Indisponível | Indisponível |
Ordem de avaliação
Os manipuladores são avaliados em uma ordem específica. Aplicam-se as seguintes regras gerais:
- Somente manipuladores no escopo são avaliados.
- Somente os manipuladores com requisitos que podem ser atendidos podem ser chamados.
- Se um manipulador sem um destino de transição for chamado, a avaliação da lista de gerenciadores continuará. Devido a essa regra, vários fulfillments podem adicionar mensagens à fila de resposta.
- Se um manipulador com um destino de transição for chamado, a avaliação da lista de manipuladores será concluída.
- Se um manipulador com fulfillment for chamado
e o fulfillment resultar em um erro de webhook:
- Se o gerenciador tiver um destino de transição definido, o webhook falhará silenciosamente.
- Quando um manipulador de eventos está no escopo do evento, ele manipula o evento e a avaliação da lista de manipuladores termina.
- Se nenhum manipulador de eventos estiver no escopo do evento, o webhook falhará silenciosamente.
- Quando o requisito da intent é atendido, a intent é consumida, portanto, apenas o primeiro gerenciador de rotas encontrado para a intent pode ser chamado. Consulte Propagação da intent para ver as exceções.
- Quando uma condição de condição é atendida, a condição não é consumida. Portanto, várias rotas com a condição podem ser chamadas.
- Quando um requisito de evento é atendido, o evento é consumido. Portanto, somente o primeiro manipulador de eventos encontrado para o evento pode ser chamado.
- A pilha de chamadas do gerenciador pode afetar a ordem de avaliação.
Há três fases na avaliação:
- As rotas que têm um requisito de intent
são avaliadas nesta ordem:
- Nível da página: rotas individuais aplicadas à página atual, na ordem fornecida.
- Grupos no nível da página: grupos de rota aplicados à página atual, na ordem fornecida.
- Nível do fluxo: rotas aplicadas ao fluxo ativo, na ordem fornecida.
- Grupos no nível do fluxo: grupos de rotas aplicados ao fluxo ativo, na ordem fornecida.
- As rotas de transição com apenas um requisito de condição
são avaliadas nesta ordem:
- Nível da página: rotas individuais aplicadas à página atual, na ordem fornecida.
- Grupos no nível da página: grupos de rota aplicados à página atual, na ordem fornecida.
- Nível de fluxo (somente se a página atual for a página inicial de fluxo): rotas aplicadas ao fluxo ativo, na ordem fornecida de dados.
- Grupos no nível do fluxo (somente se a página atual for a página inicial do fluxo): grupos de rotas aplicados à conta ativa fluxo, na ordem fornecida.
- Os manipuladores de eventos são avaliados nesta ordem:
- Nível do parâmetro: os manipuladores de eventos aplicados ao parâmetro do formulário da página que o agente está tentando preencher (gerenciadores de reprompts) na ordem fornecida.
- Nível da página: manipuladores de eventos aplicados à página atual, na ordem fornecida.
- Nível de fluxo: manipuladores de eventos aplicados ao fluxo ativo, na ordem fornecida.
Alvos de transição simbólica
Ao inserir uma meta de transição para um manipulador, é possível inserir fluxos ou páginas específicos, assim como inserir metas de transição simbólica:
Alvo de transição simbólica |
Descrição |
---|---|
START_PAGE |
Transição para a página inicial do fluxo ativo com nome semelhante. |
END_FLOW |
Encerre o fluxo ativo e volte para a página que causou uma transição para o fluxo atual. Consulte também Pilha de chamadas do gerenciador e limite de pilha de fluxo. |
END_FLOW_WITH_CANCELLATION |
Encerre o fluxo ativo e volte para a página que causou uma transição para o fluxo atual. A página de chamada pode processar essa transição com o evento integrado flow-cancelled . Consulte também Pilha de chamadas do gerenciador e limite de pilha de fluxo. |
END_FLOW_WITH_FAILURE |
Encerre o fluxo ativo e volte para a página que causou uma transição para o fluxo atual. A página de chamada pode processar essa transição com o evento integrado flow-failed . Consulte também Pilha de chamadas do gerenciador e limite da pilha de fluxo. |
END_FLOW_WITH_HUMAN_ESCALATION |
Encerre o fluxo ativo e volte para a página que causou uma transição para o fluxo atual. A página de chamada pode processar essa transição com o evento integrado flow-failed-human-escalation . Consulte também Pilha de chamadas do gerenciador e limite da pilha de fluxo. |
END_SESSION |
Limpe a sessão atual e faça a transição para a página especial chamada END_SESSION . A próxima entrada do usuário reiniciará a sessão na página inicial do Fluxo de início padrão. |
PREVIOUS_PAGE |
Transição para a página anterior que causou a transição para a página atual. O estado da página anterior será restaurado após a transição. |
CURRENT_PAGE |
Faça a transição novamente para a página atual. Isso pode ser útil se você quiser que o agente repita algo. |
Pilha de chamadas do gerenciador e limite da pilha de fluxo
Quando uma sessão faz a transição de um fluxo para outro com destinos de transição específicos, cada fluxo é enviado para a pilha.
Pilha de chamadas do gerenciador
Quando uma sessão passa para END_FLOW
,
ela retorna à página de chamada
que causou a transição para o fluxo concluído.
Nesse caso, a pilha de chamadas do gerenciador é preservada.
Todos os gerenciadores que foram avaliados anteriormente na página de chamada serão ignorados e os gerenciadores restantes serão avaliados em ordem.
Exemplo:
- A página P tem três gerenciadores nesta ordem: H1, H2, H3.
- H1 é avaliada, mas não causa uma transição.
- H2 é avaliada e causa uma transição para o fluxo F.
- Uma página no fluxo F passa para
END_FLOW
. - A sessão retorna à página P, que fica ativa novamente com um estado preservado.
- A avaliação do gerenciador na página P continua do status preservado, portanto, H3 é avaliada.
Limite da pilha de fluxo
O limite máximo da pilha de fluxo é 25. Exceder o limite máximo da pilha pode
fazer com que os fluxos sejam retirados da pilha, levando a um comportamento inesperado
ao usar a transição END_FLOW
.
Para evitar esses possíveis problemas, minimize o número de transições de fluxo para fluxo
antes da transição END_FLOW
.
Se a pilha de fluxo estiver vazia, a transição END_FLOW
encerrará a sessão.
Definir condições
Para definir condições com o console, são fornecidas regras de condição com uma das três opções lógicas:
- Corresponder pelo menos uma regra (OU)
- Corresponder a TODAS as regras (AND)
- Personalizar expressão
Por conveniência, você pode usar as opções AND/OR para criar condições simples ou compostas para valores de parâmetro.
Use a opção livre Personalizar expressão para todos os tipos de condições, incluindo funções do sistema e constantes booleanas.
Por exemplo, para definir uma condição com 10% de chance de aprovação na avaliação, selecione a opção Personalizar expressão e digite $sys.func.rand() < 0.1
em Condição: