Conceitos Básicos do Designer de Fluxo Visual

Aqui está um conjunto rápido de etapas para começar a usar o Visual Flow Designer.

Criar a Habilidade de Fluxo do Visual Designer

Para criar uma habilidade de fluxo visual:
  1. Clique em + Nova Habilidade na página de destino das habilidades.
  2. Escolha Visual como o modo de caixa de diálogo.
    Observação

    A versão da plataforma deve ser definida como 22.04 ou posterior para que essa opção esteja disponível.
  3. Crie intenções e entidades. Você precisará tê-los em vigor antes de criar variáveis e fluxos de intenção.
  4. Clique em Fluxos Esta é uma imagem do ícone de fluxos de caixas de diálogo na barra de navegação esquerda. na barra de navegação esquerda. O editor é aberto no Fluxo Principal, no qual você define e gerencia a configuração de toda a habilidade. Entre outras coisas, você usa sua página Variáveis de Habilidade para adicionar as variáveis que são compartilhadas entre fluxos e sua página Eventos para criar e gerenciar os mapeamentos de fluxos transacionais para intenções e o mapeamento de fluxos de utilitários para eventos incorporados que lidam com intenções não resolvidas, erros de diálogo e apresentação de intenções de resposta.

Mapear Eventos

Você pode adicionar, editar ou excluir mapeamentos da página Evento do Fluxo Principal. É possível vários tipos de eventos para fluxos existentes usando a caixa de diálogo de mapeamento.
A seguir, descrição de df-2-0-event-mapping-dialog.png
Descrição da ilustração df-2-0-event-mapping-dialog.png

Você acessa essa caixa de diálogo clicando em Esta é uma imagem do ícone Adicionar..
A seguir, descrição de df-2-0-event-mappings-page.png
Descrição da ilustração df-2-0-event-mappings-page.png

Criar um Fluxo de Eventos de Intenção

Aqui você cria fluxos para mapear para intenções específicas em sua habilidade. Os fluxos de intenções geralmente são mapeados para intenções regulares, embora você também possa criá-los para intenções de resposta.

Para criar um fluxo de eventos de intenção:

  1. Crie a intenção correspondente e quaisquer entidades que serão referenciadas no fluxo.

    Por exemplo, se você estiver criando uma habilidade de pizza, poderá criar os seguintes artefatos:

    • Uma intenção orderPizza.
    • Uma entidade PizzaTopping da lista de valores.
  2. Treine a habilidade.
  3. Introdução ao fluxo:
    • Clique em Fluxos na barra de navegação esquerda e, em seguida, clique em + Adicionar Fluxo.
    • Informe um nome de fluxo e selecione o nome da intenção mapeada para esse fluxo. Em seguida, clique em Criar.
      Observação

      Você só pode escolher o fluxo disponível.


  4. Crie quaisquer variáveis que sejam usadas no fluxo:
    1. Abra a guia Configuração. Clique em + Adicionar Variável.
    2. Selecione o tipo de variável. Se a variável fizer referência a uma entidade, conclua a caixa de diálogo nomeando a variável para a entidade selecionada. Clique em Aplicar.

      Observação

      Dentro de um fluxo, uma variável e um parâmetro de saída podem compartilhar o mesmo nome. No entanto, variáveis e parâmetros de saída não podem ter os mesmos nomes que os parâmetros de entrada.
  5. Crie o fluxo:
    1. Abra a guia Fluxo.
    2. Clique no menu O ícone do menu Adicionar Estado. no início do fluxo e, em seguida, clique em Adicionar Estado Inicial para abrir a caixa de diálogo Adicionar Estado.
      A opção Adicionar estado de início.

    3. Selecione um estado no seletor de componentes e clique em Inserir.
    4. Abra o inspetor de propriedades do estado para configurar o componente.
Usando a habilidade de pizza como exemplo, você iniciaria o fluxo da seguinte forma:
  1. Selecione Fazer Pergunta e clique em Inserir.
  2. Abra a guia Componente na janela de propriedades do estado da pergunta.
  3. Adicione uma pergunta ("Qual pizza você quer?", por exemplo). Em seguida, selecione a variável de fluxo.

    Dica:

    Use pacotes de recursos para todo o texto voltado para o usuário em sua habilidade.


  4. Adicione outro estado após a pergunta clicando no menu.Esta é uma imagem do ícone de menu.
  5. Escolha Enviar Mensagem e clique em Inserir.
  6. Na janela de propriedades do estado de envio da mensagem, informe uma mensagem de confirmação com uma expressão FreeMarker que acesse a variável de fluxo usando a sintaxe ${varName.value.value}. Por exemplo :
    Your ${PizzaType.value.value} pizza is on the way.
    Se você estiver fazendo referência a uma entidade composta no nível do fluxo, use a sintaxe ${cbVarName.value.itemName.<attribute>}.

    Depois de adicionar estados ao fluxo, você poderá reatribuir o estado inicial clicando no menu Esta é uma imagem do ícone de menu. e, em seguida, escolhendo Criar estado inicial.
    A seguir, descrição de df-2-0-make-start-state.png
    Descrição da ilustração df-2-0-make-start-state.png

  7. Abra a guia Transições do inspetor de propriedades do componente de saída. Observe que Fluxo final (implícito) está selecionado como a transição. Como esse fluxo não tem parâmetros de saída obrigatórios, a transição para o fluxo Final implícito será suficiente. No entanto, se esse fluxo tivesse mais um parâmetro de saída obrigatório, o estado de saída teria que fazer a transição para um estado de fluxo Final real (inserido clicando em Controle de Fluxo > Fluxo Final na caixa de diálogo Adicionar Estado) que especifica o(s) parâmetro(s) de saída do fluxo.

Valores da Variável de Referência nas Expressões FreeMarker

Use ${varName.value.value} para fazer referência a uma entidade de lista de valores. Como as entidades são resolvidas como objetos JSON, o primeiro .value retorna o objeto JSON e o segundo .value retorna o valor de uma propriedade nesse objeto JSON. Para retornar o valor da entidade no idioma principal da habilidade, use ${varName.value.primaryLanguageValue}.

Para entidades compostas, use ${cbVarName.value.itemName.value} para itens de lista de valores e {cbVarName.value.itemName} para itens de lista não-valor.
  • Quando um item for uma lista de valores, use uma propriedade de valor: ${cbVarName.value.itemName.value} ou ${cbVarName.value.itemName.primaryLanguageValue}.
  • Para itens que não sejam de lista de valores, você não acessa o item com uma propriedade de valor (sem .value ou .primaryLanguageValue). Por exemplo, se estiver fazendo referência a uma entidade DATE cujo nome de item seja date no repositório composto, use ${cbVarName.value.date}. Para um item de entidade NUMBER (number), você usaria ${cbVarName.value.number}.
A sintaxe de referência depende do contexto. Para permitir que os diferentes fluxos dentro de sua habilidade façam referência a uma variável de nível de habilidade, pré-anexe o nome da variável na expressão com skill. Por exemplo, a expressão a seguir faz referência a um item (Type) em uma entidade composta (Order) que é compartilhada entre fluxos:
${skill.Order.value.Type.value}
skill não é obrigatório em expressões para variáveis com escopo no fluxo:
${Order.value.Type.value}

Dica:

O preenchimento automático torna a gravação de expressões FreeMarker do Apache menos propensa a erros.

Criar um Fluxo para Eventos Incorporados

É provável que você queira ter fluxos de utilitários para eventos incorporados, como tratar intenções não resolvidas, erros de diálogo e apresentar intenções de resposta. Você mapeia esses fluxos para eventos incorporados no fluxo principal. Em geral, os fluxos mapeados para eventos incorporados são chamados quando não há fluxo no nível da intenção ativa, como quando a habilidade é iniciada ou quando um fluxo da intenção é encerrado com um estado de fluxo final.

Por exemplo, para criar um fluxo genérico que trate todas as intenções de resposta:

  1. Crie ou importe uma intenção de resposta e treine a habilidade.
  2. Clique em Fluxos e, em seguida, clique em + Adicionar Fluxo.
  3. Informe um nome de fluxo para o fluxo de intenção de resposta e clique em Criar.
  4. Clique no menu O ícone do menu Adicionar Estado. no início do fluxo e, em seguida, clique em Adicionar Estado Inicial para abrir a caixa de diálogo Adicionar Estado.
    A opção Adicionar estado de início.

  5. Adicione um estado de resposta de intenção de exibição selecionando Mensagem do Usuário > Exibir mensagens de texto e multimídia > Exibir resposta de intenção ou informando a resposta de intenção no campo Pesquisar. Clique em Inserir.

    Dica:

    Você usa o campo de pesquisa para localizar um modelo de estado.


  6. Clique no estado da resposta da intenção de exibição para abrir a guia Componente do inspetor de propriedades e, em seguida, clique em Editar Itens de Resposta.
  7. Atualize a mensagem de texto, incorporando o modelo de expressão FreeMarker que acessa a mensagem de intenção de resposta ("${skill.system.event.value.intent.answer}"). Por exemplo :
    "Hello, ${profile.firstName?capitalize} ${profile.lastName?capitalize}. You were asking about ${skill.system.event.value.intent.intentName?lower_case}. Here's your answer: ${skill.system.event.value.intent.answer}."


    Observação

  8. Clique em Aplicar.
  9. Clique em Fluxo Principal.
  10. Clique em Esta é uma imagem do ícone Adicionar. ao lado de Eventos Incorporados.
  11. Preencha a caixa de diálogo Criar Handler de Evento Incorporado:
  12. Clique em Criar.
Observação

O fluxo de eventos de erro da caixa de diálogo pode existir nos níveis de habilidade e fluxo. O fluxo de erros da caixa de diálogo no nível da habilidade, que é mapeado para o evento incorporado Erro da Caixa de Diálogo, atua como um fallback na ausência de um fluxo de tratamento de erros mapeado para o evento Erro da Caixa de Diálogo no nível do fluxo. Se sua habilidade não tiver nenhum fluxo de erros de caixa de diálogo, a habilidade exibirá a mensagem de erro padrão (Opa! Eu estou encontrando um ponto de problema).

Mensagens de Amostra para Fluxos de Eventos Incorporados

Use expressões FreeMarker para acessar os erros e as intenções de resposta. Para obter mais ideias, consulte Expressões úteis.
Evento Incorporado Sintaxe e Exemplos de Expressão
Intenção de Resposta Use a seguinte sintaxe para fluxos genéricos que tratam de todas as intenções de resposta da habilidade:
${skill.system.event.value.intent.answer}

Por exemplo :

Olá, ${profile.firstName?capitalize} ${profile.lastName?capitalize}, você estava perguntando sobre ${skill.system.event.value.intent.intentName?lower_case}. Aqui está sua resposta: ${skill.system.event.value.intent.answer}.

Erro de diálogo Use a seguinte sintaxe para mensagens de erro da caixa de diálogo:
${skill.system.event.value.dialogError.errorMessage}
Por exemplo :

Erro ao processar seu pedido: ${skill.system.event.value.dialogError.errorMessage}