Opções dinâmicas
Uma resposta opções apresenta aos clientes uma lista de opções para seleção. Você pode usar a configuração dinâmica para gerar a lista a partir de opções que podem ser diferentes a cada vez.
As opções dinâmicas são geradas com base nos dados armazenados em uma variável, que deve estar disponível para a etapa fazendo a pergunta. A variável de origem deve conter uma matriz de valores, cada uma delas representa uma das opções que serão
apresentadas ao cliente. Os itens da matriz podem ser valores simples como strings ou números (por exemplo, [ "Raleigh", "Boston", "New York" ]) ou objetos JSON compostos.
Um cenário comum para opções dinâmicas é quando uma matriz é devolvida a partir de uma API externa que você chama usando uma extensão personalizada. Por exemplo, você pode usar uma extensão personalizada para recuperar uma lista de cartões de crédito associados a uma conta do cliente. Em seguida, é possível utilizar opções dinâmicas para pedir ao cliente qual cartão usar durante a conversa. (Para obter mais informações sobre extensões customizadas, consulte Calling uma extensão customizada.)
Suas ações podem também preencher a variável de origem usando expressões. Por exemplo, você pode usar uma variável de sessão para construir um carrinho de compras contendo itens que o cliente decidiu comprar. Uma ação para remoção de um item do carrinho poderia então utilizar opções dinâmicas para mostrar os itens no carrinho para que o cliente possa selecionar qual remover. (Para obter mais informações sobre o uso de expressões para valores variáveis, consulte Usando uma expressão para atribuir um valor a uma variável de sessão.)
Definindo opções dinâmicas
Para definir uma resposta do cliente de opções dinâmicas:
-
Em uma etapa, clique em Definir resposta do cliente..
-
Escolha o tipo de resposta Opções.
-
Clique no toggle Dynamic.
-
No campo Fonte de origem, escolha a variável que contém a matriz que define as opções dinâmicas (por exemplo, a variável contendo a resposta a partir de uma extensão personalizada que você chamou em uma etapa anterior).
-
Opcional: No campo Opção, escreva uma expressão que mapeia os itens na matriz de origem para as opções que serão listadas. Esta expressão serve como um template que converte cada item na matriz para um valor significativo que será exibido para o cliente. Nesta expressão, use a variável dinâmica
${item}para representar o item.Em algumas situações, você não precisa especificar uma expressão:
-
Se os itens da matriz forem valores simples como strings ou números inteiros, o valor de cada item será automaticamente mostrado como uma opção. No entanto, você ainda pode querer definir um mapeamento se você deseja manipular ou reformatar os itens para torná-los mais significativos. Por exemplo, você pode usar a expressão
"Part #" + ${item}para mostrar números de peça usando o formatoPart #12345. -
Se os itens da matriz forem objetos JSON, o mapeamento padrão procura uma propriedade chamada
labele usa seu valor (se presente) como a opção. Se o item não incluir uma propriedadelabel, ou você não quiser usar o valor da propriedadelabelcomo a opção, você deve gravar uma expressão para especificar um mapeamento. Você pode usar notação de ponto para referir-se a uma propriedade no objeto usando seu caminho JSON (por exemplo,${item}.name).
-
-
Opcional: clique em Incluir opção de fallback para incluir uma opção estática, como
None of the above, se as opções não forem as desejadas pelo cliente.. Em seguida, é possível incluir uma etapa condicionada a essa opção estática para fornecer assistência adicional. Para incluir a condição, escreva uma expressão como${step_id}.value == "None of the above"
Exemplos de mapeamento
Suponhamos que você deseje construir uma ação que mostre uma lista de animais de estimação disponíveis para adoção e avisa o cliente para selecionar um pet para ver mais informações sobre. A variável de origem contém uma matriz a partir de uma extensão personalizada no seguinte formato:
[
{
"id": "123",
"name": "Casey",
"breed": "Shetland sheepdog",
"age": 3
},
{
"id": "987",
"name": "Phoebe",
"breed": "chihuahua",
"age": 7
}
]
O esquema para os itens não inclui uma propriedade label, portanto, o mapeamento padrão não está disponível. Em vez disso, você pode usar uma expressão para construir um rótulo complexo que inclui dados retirados de várias propriedades
diferentes. Por exemplo, você pode usar a expressão ${item}.name + " (" + ${item}.breed + ", age " + ${item}.age + ")" para definir os rótulos da opção:

Lembre-se de que você pode usar métodos de expressão para manipular valores da variável de origem de várias formas. Por exemplo, você pode ter uma ação que os clientes usam para selecionar um cartão de crédito para pagamento, mas por motivos
de segurança você não quer mostrar o número do cartão inteiro. Você poderia escrever uma expressão que usa o método substring() para incluir apenas os quatro últimos dígitos de cada número do cartão (por exemplo, "Card ending in " + ${item}.card_number.substring(16, 20)).
Referenciando o item selecionado
Depois que o cliente tiver selecionado uma das opções geradas dinamicamente, você provavelmente precisará referencia o item selecionado em uma etapa subsequente.
Se você referencia a variável de ação que representa a resposta do cliente, o padrão é utilizar o valor da opção selecionada. No entanto, em algumas situações, você pode não querer usar o mesmo valor que foi usado para exibir a opção para o cliente. Em vez disso, você pode precisar usar um identificador único ou outra propriedade que identifique inequivocamente a opção selecionada.
Por exemplo, se o cliente seleciona um pet para mostrar mais informações sobre, você provavelmente precisa usar um identificador único (a propriedade id no nosso exemplo) para consultar o banco de dados, já que o nome do pet, idade
e raça podem não ser exclusivos. Ou se o cliente estiver selecionando um cartão de crédito a partir de opções que mostram apenas os últimos quatro dígitos, você precisará utilizar o número do cartão de crédito completo para acessar os detalhes
da conta ou concluir uma transação.
Nessa situação, é possível escrever uma expressão para acessar as propriedades originais do item selecionado:
-
Crie ou edite uma etapa que venha após a etapa em que o cliente seleciona a partir das opções dinâmicas.
-
Na seção Valores Variáveis, escreva uma expressão para atribuir um valor a uma variável de sessão. (Para obter mais informações, consulte Usando uma expressão para atribuir um valor a uma variável de sessão.)
-
No editor de expressão, digite um sinal de dólar (
$) e, em seguida, selecione a etapa na qual o cliente selecionou a opção dinâmica. -
Use o nome da propriedade
itempara representar o item selecionado, e notação de ponto para acessar suas propriedades. Por exemplo, a expressão a seguir acessa a propriedadeiddo item selecionado em uma etapa anterior:${step_331}.item.idVocê pode usar uma expressão complexa para construir um valor usando várias propriedades do item selecionado. Por exemplo, você pode usar uma expressão tal como
${step_123}.item.firstname + " " + ${step_123}.item.lastnamepara construir o nome completo de uma pessoa. Use a expressão para definir o valor em qualquer formato que for necessário para concluir qualquer ação necessária.