Outras Tarefas
Aqui estão alguns tópicos sobre várias outras tarefas no Visual Flow Designer, incluindo autenticação do usuário, numeração automática, pacotes de recursos, criação de formulários de entrada, criação de parâmetros personalizados e importação e exportação de fluxos.
Autorização do Usuário
Em determinados pontos de um fluxo, talvez você queira impor a autorização do usuário.
Para isso, faça o seguinte:
- Nos estados nos quais você deseja impor a autorização, defina a propriedade Exige Autorização como
True
. Essa propriedade está na guia Geral do inspetor de propriedades do estado.Se um usuário que atingir esse estado ainda não tiver autorizado, o estado Autorizar usando OAuth será chamado e, em seguida, o fluxo chamará o estado que exigiu autorização.
- Crie um componente de autorização e mapeie-o para o evento de transição padrão Autorizar Usuário do fluxo:
- Selecione o fluxo e, em seguida, selecione a guia Fluxo do fluxo.
- Clique duas vezes no mosaico Eventos do fluxo para expandi-lo.
- Passe o mouse sobre o mosaico Autorizar Usuário, clique no botão de reticências (...) que aparece e selecione Adicionar Estado.
- Na categoria Segurança do seletor de modelo, selecione um componente, forneça um nome para o estado e clique em Inserir.
Consulte Modelos de Segurança para obter detalhes de cada um dos modelos disponíveis.
- No inspetor de propriedades do componente, configure as propriedades do componente, incluindo suas ações de transição.
Itens de resposta de numeração automática
Você pode usar o recurso de numeração automática para prefixar botões e listar opções com números em suas respostas.
Quando os usuários não podem usar gestos de toque, eles ainda podem acionar as ações de postback do botão digitando um número. Esse recurso é particularmente útil para canais de texto.
Você configura a numeração automática no nível da habilidade.
Para configurar a numeração automática:
- Na navegação esquerda da habilidade, selecione
.
- Selecione a guia Configuração.
- Defina o valor de Ativar Numeração Automática em Ações de Postback em Fluxos de Tarefas.
Se quiser ativar a numeração automática para todos os canais, defina o valor como verdadeiro.
Se você quiser ativar a numeração automática apenas para determinados canais, forneça uma expressão para determinar quais canais obterão a numeração automática. Por exemplo, para ativar a numeração automática apenas para canais Twilio, digite:
${(system.channelType=='twilio')?then('true','false')}
Limitando o Número de Prompts do Usuário
Você pode garantir que os usuários não fiquem presos em uma etapa de um fluxo de caixas de diálogo configurando esse componente para limitar o número de vezes que ele repete um prompt para o usuário.
A propriedade maxPrompts
limita o número de vezes que os componentes de Resposta Comum podem solicitar ao usuário quando eles não conseguem corresponder o valor de entrada com nenhum dos valores definidos para a entidade ou o tipo de entrada referenciado pela propriedade variable
. Você pode usar essa propriedade para impedir que sua caixa de diálogo gire em círculos quando os usuários digitarem repetidamente valores inválidos. Você pode definir o número máximo de prompts usando um inteiro . A caixa de diálogo será movida para o próximo estado se o usuário informar um valor válido antes de atingir esse limite. Caso contrário, a caixa de diálogo fará a transição para o estado definido pela ação cancel
.
Pacotes de Recursos e o Designer de Fluxo Visual
Você pode usar pacotes de recursos para armazenar qualquer string visível ao usuário adicionada ao fluxo de caixas de diálogo.
Você faz referência a chaves de mensagem do pacote de recursos por meio da variável rb
. Uma referência a uma mensagem de pacote de recursos simples assume uma das duas formas a seguir:
${skill.system.rb.RB_ENTRY_NAME}
${rb.RB_ENTRY_NAME}
Dica:
O preenchimento automático ajuda a selecionar os pacotes de recursos referenciados nas expressões FreeMarker do Apache.Modificar uma Entrada do Pacote de Recursos
- Na habilidade, clique em
para abrir o Pacote de Recursos.
- Selecione a guia Configuração.
- Usando o campo Filtro, navegue até a entrada que você deseja atualizar.
- Passe o mouse sobre o valor da chave e selecione o ícone
que aparece.
- No campo Texto, digite a mensagem atualizada.
- Clique em Atualizar Entrada.
Mensagens do Formulário de Entrada do Usuário
Em fluxos de caixas de diálogo, você também pode criar formulários de entrada de dados.
Às vezes, um formulário de entrada é a maneira mais rápida e menos propensa a erros de coletar informações do usuário. Em vez de submeter os usuários a uma série de perguntas, sua habilidade pode orientar os usuários a fornecer entrada válida enviando formulários que contenham elementos de entrada, como campos de entrada de texto, seletores de data e hora e alternâncias.
Descrição da ilustração editable-form-example.png
- Na caixa de diálogo Adicionar Estado, escolha Mensagens do Usuário > Criar Tabelas e Formulários. Em seguida, escolha Criar Formulário de Entrada.
- Para criar o layout, as ações e os campos editáveis e somente leitura do formulário, primeiro clique em
Edit Response Items
e edite o modelo de metadadosResponseItems
. Nesse caso, o modelo é para o item de respostaeditForm
.responseItems: - type: editForm title: Input Form formColumns: 2 items: - autoSubmit: false displayType: textInput defaultValue: "${(submittedFields.value.myText)!''}" multiLine: false minLength: 5 name: myText label: Text placeholder: Enter free text clientErrorMessage: Field is required and must be between 5 and 50 characters required: true maxLength: 50 - validationRegularExpression: "^[a-zA-Z\\s]*$" autoSubmit: false displayType: textInput defaultValue: "${(submittedFields.value.myTextArea)!''}" multiLine: true name: myTextArea label: Text Area placeholder: Enter free text clientErrorMessage: Numbers are not allowed - autoSubmit: false displayType: datePicker minDate: "1970-01-01" defaultValue: "${(submittedFields.value.myDate)!''}" name: myDate maxDate: "${.now?iso_utc[0..9]}" label: Date placeholder: Pick a date in the past clientErrorMessage: Date is required and must be in the past. required: true - autoSubmit: false maxTime: "12:00" displayType: timePicker minTime: "00:00" defaultValue: "${(submittedFields.value.myTime)!''}" name: myTime label: Time placeholder: Pick a time in the morning clientErrorMessage: Time must be in the morning. required: false - autoSubmit: false displayType: numberInput minValue: 5 maxValue: 500 defaultValue: "${(submittedFields.value.myNumber)!''}" name: myNumber label: Number placeholder: Enter a number between 5 and 500 clientErrorMessage: Number is required and must be between 5 and 500. required: true - autoSubmit: false displayType: singleSelect defaultValue: "${(submittedFields.value.mySingleSelect)!''}" name: mySingleSelect options: - label: Label 1 value: Value 1 - label: Label 2 value: Value 2 - label: Label 3 value: Value 3 layoutStyle: list label: Single Select clientErrorMessage: Field is required required: true - autoSubmit: false displayType: multiSelect defaultValue: "${(submittedFields.value.myMultiSelect?join(','))!''}" name: myMultiSelect options: - label: Label 1 value: Value 1 - label: Label 2 value: Value 2 - label: Label 3 value: Value 3 layoutStyle: list label: Multi Select clientErrorMessage: Field is required required: true - displayType: toggle defaultValue: "${(submittedFields.value.myToggle)!'true'}" name: myToggle labelOn: "Yes" label: Toggle valueOff: "false" labelOff: "No" valueOn: "true" actions: - label: Submit type: submitForm channelCustomProperties: - channel: "${system.channelType}" properties: replaceMessage: "${system.message.messagePayload.type == 'formSubmission'}"
O Modelo Editar Metadados de Forms
editForm
:
- As propriedades fornecidas para
items
,actions
echannelCustomProperties
são todas específicas dos objetoseditFormMessagePayload
. Entre outras coisas, esse payload contém descrições do layout geral da mensagem de formulário de entrada recebida pelo usuário, os campos de formulário (somente leitura e editável) e personalizações específicas do canal para renderização de interface de usuário específica da plataforma e comportamento de envio de formulário. - Para cada item e dentro do nó
actions
, o modelo faz referência a uma variável no nível do fluxo chamadasubmittedFields
que contém a entrada do usuário. Esta é uma variável de mapa gerada quando você adiciona um estado inputForm ao fluxo de caixas de diálogo.Observação
Dependendo de suas necessidades, você pode fazer referência a variáveis individuais ou a uma variável composta no lugar da variávelsubmittedFields
. items
:- Embora o modelo forneça propriedades para os campos editáveis (campos de seleção única e múltipla, seletores de data e hora, o campo de entrada de número e a chave de alternância), você também pode adicionar itens para os elementos somente leitura de texto e link.
- Os campos editáveis compartilham um conjunto de propriedades comuns, incluindo a propriedade
autoSubmit
. Esta é uma propriedade opcional, mas ativá-la (autoSubmit: true
) permite que o formulário envie um valor de campo antes que o usuário tenha realmente enviado o formulário inteiro. Você pode usar essa propriedade para campos interdependentes em seu formulário. Por exemplo, você pode definir essa propriedade quando a exibição de um campo depende de um valor inserido em outro campo ou quando um valor definido para um campo restringe a entrada permitida em outro campo.Observação
O Microsoft Teams não suportaautoSubmit
. - A propriedade
clientErrorMessage
opcional define a mensagem de erro específica do campo que é exibida quando há validação limitada do cliente ou quando a validação do cliente falha. Por exemplo, para mensagens enviadas por meio do canal do Slack, essa propriedade só é suportada quando o formulário está na página de conversa. Ele não é exibido quando a mensagem de formulário está em uma caixa de diálogo modal.Observação
Esta propriedade destina-se principalmente a cartões adaptáveis do Microsoft Teams, o que limita você a usar uma única mensagem para todos os erros diferentes no nível do campo.
actions
- Neste nó, o modelo descreve as ações de envio de formulário que enviam a entrada do usuário por meio doFormSubmissionMessagePayload
.channelCustomProperties
- Para oferecer suporte a uma experiência de vários modos, em que o usuário pode usar combinações de texto e voz para preencher os campos do formulário antes de enviar o formulário, o modelo inclui a configuração da propriedadereplaceMessage
que instrui o canal do cliente a atualizar a mensagem do formulário de entrada atual em vez de adicionar um novo formulário de entrada à conversa.
Campos de Formulário de Entrada
Elemento | Exemplo | Código de Amostra: Variável de Mapa (submittedFields) | Editável? |
---|---|---|---|
Lista de seleção única | Permite que os usuários pesquisem e selecionem um item de uma lista predefinida. Você pode estilizar este componente como uma lista de opções que os usuários podem consultar e selecionar. |
|
Sim |
Lista de Várias Seleções | Uma lista que suporta várias seleções. Você pode estilizar esse componente como uma lista de opções que os usuários podem filtrar e selecionar ou como um conjunto de caixas de seleção. |
|
Sim |
Seletor de Horário | Permite que o usuário insira um valor de tempo dentro de um intervalo especificado. As propriedades maxTime e minTime do componente validam a entrada do usuário. |
|
Sim |
Seletor de Data | Um campo com um calendário suspenso que permite que os usuários selecionem um dia, mês e ano. As propriedades maxDate e minDate do componente validam a entrada do usuário. |
|
Sim |
Entrada de Número | Permite que o usuário insira um valor numérico. As propriedades minValue e maxValue validam a entrada do usuário. |
|
Sim |
Entrada de Texto | Permite que o usuário insira um valor de texto. |
|
Sim |
Alternar | Apresenta uma chave de alternância (ou um agrupamento de botões de opção, dependendo do canal) para duas opções. |
|
Sim |
Texto | Texto em linha somente leitura |
|
Não - Somente leitura |
Vincular | Um link em linha |
|
Não - Somente leitura |
Ação | Um dos tipos de Ação (link, botão ou ícone). | No trecho de código a seguir, um link de ação é renderizado quando o valor da variável selectedOrder é colocado no slot com o valor da linha item .
|
Não - Somente leitura |
Parâmetros personalizados
Na sua habilidade, você pode definir parâmetros do cliente a serem referenciados em fluxos de caixas de diálogo.
Após a publicação da habilidade, você poderá alterar os valores desses parâmetros (embora não possa alterar outros detalhes deles nem adicioná-los ou excluí-los).
Os parâmetros personalizados são expostos como variáveis skill.system.config
para uso na definição do fluxo de caixas diálogo. Por exemplo, um parâmetro personalizado chamado faHostName
seria acessado com a seguinte expressão:
${skill.system.config.faHostName}
Se você quiser definir o valor de um parâmetro da habilidade no assistente digital ao qual você adiciona a habilidade, prefacie o nome do parâmetro com da.
(inclusive o ponto (.)). Por exemplo, da.faHostName
poderia ser usado como nome de um parâmetro para um nome de host.
Usando essa abordagem, você poderá definir parâmetros com os mesmos nomes em várias habilidades, adicionar todas essas habilidades a um assistente digital e, em seguida, definir os valores dos parâmetros compartilhados em um só lugar no assistente digital.
Para acessar um parâmetro de um componente personalizado, defina um parâmetro de entrada no componente personalizado e, em seguida, informe o valor do parâmetro de habilidade para ele.
Você não pode definir os valores de parâmetros personalizados (ou qualquer outra variável prefixada com
skill.system.config
diretamente no fluxo de caixas de diálogo ou em componentes personalizados.
Criar um Parâmetro Personalizado
- Clique em
para abrir o menu lateral, selecione Desenvolvimento > Habilidades e selecione sua habilidade.
- Na navegação à esquerda da habilidade, clique em
.
- Clique na guia Configuração.
- Clique em Novo Parâmetro e preencha os campos da caixa de diálogo que é exibida.
Parâmetros Seguros
Se sua habilidade depender de um parâmetro, o valor que você não deseja que fique visível para outras pessoas que estão desenvolvendo essa habilidade ou versões ou clones dessa habilidade, você poderá designar esse parâmetro como seguro. Qualquer pessoa então que navegue até a página Definições na habilidade poderá ver o nome do parâmetro, mas não o valor.
Se você exportar a habilidade, o valor do parâmetro não será incluído na exportação.
Para criar um parâmetro seguro:
- Na caixa de diálogo Criar Parâmetro, selecione Seguro na lista drop-down Tipo.
Modificar o Valor de um Parâmetro Personalizado em uma Habilidade Publicada
Após a publicação de uma habilidade, você não poderá adicionar ou excluir parâmetros personalizados, mas poderá alterar seus valores. Para fazer isso:
-
Clique em
para abrir o menu lateral, selecione Desenvolvimento > Habilidades e selecione sua habilidade.
-
Na navegação à esquerda da habilidade, clique em
.
- Selecione a guia Configuração.
-
Selecione o parâmetro, clique em Editar e digite o valor atualizado.
Se você tiver adicionado uma habilidade com um parâmetro que tem o prefácio
da.
a um assistente digital e quiser atualizar o valor usado pelo assistente digital, faça isso no assistente digital. Caso contrário, o assistente digital continuará usando o valor que o parâmetro tinha no momento em que foi adicionado ao assistente digital. A alteração do valor na habilidade só a afetará se ela for usada como stand-alone ou se for adicionada posteriormente a outro assistente digital.
Definir o Valor de um Parâmetro no Assistente Digital
Depois que uma habilidade tiver sido publicada e adicionada a um assistente digital, você poderá definir o valor no assistente digital para qualquer um dos parâmetros da habilidade prefixados com da.
(inclusive o período (.)).
Se um parâmetro "da.
" com o mesmo nome for definido em várias habilidades no assistente digital, o valor desse parâmetro será compartilhado entre as habilidades do assistente digital.
Para definir o valor de um parâmetro em um assistente digital:
- Clique em
para abrir o menu lateral, selecione Desenvolvimento > Assistentes Digitais e selecione seu assistente digital.
- Na navegação esquerda do assistente digital, clique em
.
- Selecione uma das habilidades que usa o parâmetro.
- Role para baixo até a seção Parâmetros da página e digite um valor para o parâmetro.
O valor do parâmetro atualizado será aplicado a todas as habilidades que usam o parâmetro.
Fluxos de Importação e Exportação
Você pode importar e exportar fluxos de caixas de diálogo do Modo Visual usando as opções Fluxo de Importação e Exportar Fluxo Selecionado no menu Mais.
Exportar Fluxos
-Flow
( PizzaSkill-pizza.ans.proc.veggiePizza-Flow.yaml
, por exemplo). Sua sintaxe YAML está em conformidade com o Modo de Caixa de Diálogo Visual, não com o OBotML gravado para habilidades criadas no modo YAML. Ao exportar um fluxo, você exporta este documento apenas. Ele não será acompanhado por nenhuma das seguintes dependências, mesmo que elas sejam referenciadas.
- O serviço de segurança referenciado pelos estados do componente de segurança.
- Serviços para vários estados de integração de serviços
- Serviços de Tradução
- Intenções, entidades, pacotes de recursos
- Fluxos de tarefas referenciados
Você pode exportar qualquer fluxo, exceto o principal.
name: "WineryChats"
trackingId: "D6BFE43B-D774-412A-91F6-4582D04B3375"
type: "task"
version: "2.0"
interface:
returnActions:
- "done"
variables:
- name: "redWineCard"
type: "map"
system: false
defaultTransitions:
actions:
system.outOfOrderMessage: "outOfOrderMessageHandler"
system.startTaskFlow: "buildRedWineMenu"
states:
buildRedWineMenu:
component: "System.SetVariable"
properties:
variable: "redWineCard"
value:
Cabernet Sauvignon:
image: "https://cdn.pixabay.com/photo/2016/05/24/16/16/wine-1412603__340.jpg"
price: 35
description: "Flavor of dark fruits like black cherry and blackberry along with a warm spice, vanilla and black pepper"
title: "Cabernet Sauvignon"
...
Fluxos de Importação
Você pode importar um fluxo clicando em Mais > Fluxo de importação e, em seguida, navegando e selecionando um documento YAML formatado para o Modo de Caixa de Diálogo Visual. Esses fluxos podem ser os documentos YAML gerados quando você exporta um fluxo de caixas de diálogo (aqueles com nomes formatados como <skill name> - <flow name> -Flow.yaml
) ou podem ser os arquivos YAML localizados na pasta dialogs
de um arquivo ZIP exportado para uma habilidade criada usando o Modo de Caixa de Diálogo Visual. Não é possível importar um documento OBotML diretamente. Você deve migrar a habilidade primeiro.
- Não é possível importar um fluxo principal (o arquivo
System.MainFlow.yaml
localizado na pastadialogs
de um arquivo ZIP exportado para uma habilidade do Modo de Caixa de Diálogo Visual. - Não é possível importar um fluxo que já existe na habilidade ou em sua instância. Se o fluxo já existir, você poderá fazer upload do documento YAML alterando o valor do nó
name
.
No entanto, talvez você queira duplicar o fluxo (Menu > Duplicar Fluxo Selecionado) em vez de editar o YAML.name: "WineryChats" trackingId: "D6BFE43B-D774-412A-91F6-4582D04B3375" type: "task" ...

