A plataforma de desenvolvedores do Google Assistente permite criar softwares para ampliar a funcionalidade desse assistente pessoal virtual em mais de um bilhão de dispositivos, incluindo alto-falantes inteligentes, smartphones, carros, TVs, fones de ouvido e muito mais. O usuário interage com o Google Assistente em uma conversa para realizar tarefas, como fazer compras ou reservar uma viagem. Como desenvolvedor, você pode usar a plataforma para desenvolvedores do Google Assistente para criar e gerenciar experiências de conversação eficazes entre o usuário e seu próprio serviço de atendimento terceirizado.
Este codelab aborda conceitos de nível intermediário para desenvolvimento com o Google Assistente e se baseia na ação criada no nível 1. Recomendamos que você conclua o codelab do nível 1 antes de iniciar este.
A ação que será criada neste codelab informa a previsão do futuro do usuário ao se aventurar em uma terra mitológica chamada Gryffinberg, de acordo com o auxílio que ele escolher.
O que você criará
Neste codelab, você vai criar uma ação de conversa sofisticada com as seguintes funções:
- Coletar dados do usuário e, dependendo do valor, modificar solicitações de conversa.
- Responder às perguntas adicionais para continuar a conversa.
- Criar um loop de jogo para que o usuário possa interagir com a ação novamente depois de receber a previsão do futuro.
Antes de começar a criar, você pode interagir com a ação ativa no dispositivo com o Google Assistente. Basta dizer "Ok Google, falar com Previsão do futuro e Destino". O caminho padrão dessa ação para um usuário retornante gera a seguinte interação:
O que você aprenderá
- Como usar slots para coletar dados do usuário
- Como usar condições para adicionar lógica a uma cena
- Como adicionar um loop de jogo
- Como adicionar um caminho de apoio
Pré-requisitos
Os pré-requisitos para este codelab incluem o seguinte:
- Um ambiente de desenvolvimento integrado/editor de texto de sua escolha
- Um terminal para executar comandos de shell com NodeJS, NPM e git instalados
- Um navegador da Web, como o Google Chrome
- Um projeto concluído do Actions do codelab de nível 1
É recomendável ter familiaridade com o JavaScript (ES6), embora não seja obrigatório, para entender o código de fulfillment deste codelab.
Opcional: obter o código de amostra
Também, é possível receber o código de projeto completo de nível 1 desse repositório do GitHub ou do repositório do GitHub.
No primeiro codelab, você criou uma ação de conversa simples com uma só cena, Start
.
Neste codelab, você vai ampliar a conversa da ação. Nas seções a seguir, você vai configurar sua ação para realizar o seguinte:
- Fazer a transição para uma nova cena
Fortune
quando o usuário quiser ouvir a previsão do futuro - Perguntar ao usuário qual auxílio ele quer escolher
- Oferecer uma previsão do futuro personalizada com base na escolha do usuário
Criar a cena Fortune
e fazer a transição para ela.
Nesta seção, você realizará o seguinte:
- Remover a solicitação existente da cena
Start
, que responde ao usuário e encerra a conversa - Definir a transição da cena
Start
para a cenaFortune
- Criar a cena
Fortune
Para modificar a cena Start
e adicionar uma transição à cena Fortune
, siga estas etapas:
- Abra seu projeto do Actions do codelab de nível 1 no editor de texto.
- Abra o arquivo
custom/scenes/Start.yaml
. - Atualize
handler
para a intentyes
de modo que o código corresponda ao snippet abaixo:
Start.yaml
intentEvents: - intent: "yes" transitionToScene: Fortune - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: I understand, stranger. Best of luck on your quest! Farewell. intent: "no" transitionToScene: actions.scene.END_CONVERSATION
- Salve o arquivo.
Para criar uma cena chamada Fortune
, siga estas etapas:
- Acesse o projeto do Actions do codelab de nível 1 no terminal.
- Crie um novo arquivo chamado
Fortune.yaml
no diretórioscenes
.
touch custom/scenes/Fortune.yaml
Você vai editar esse arquivo na próxima seção.
Definir a lógica de conversa da cena de Fortune
Neste codelab, você vai configurar a cena Fortune
para perguntar ao usuário: "O que você escolhe para ajudar na sua missão: um dragão, um tradutor ou uma bússola?" Antes de continuar, use um recurso chamado preenchimento de slot para coletar as informações do usuário necessárias.
Sua ação oferece opções de previsão do futuro com três auxílios: um dragão, um tradutor e uma bússola. Para que sua ação identifique essas três opções na entrada de um usuário, crie um tipo.
Você pode usar tipos na etapa de preenchimento do slot de uma cena para definir as informações do usuário que quiser. Quando o mecanismo de PLN detecta uma correspondência na entrada do usuário, ele extrai o slot como um parâmetro digitado para que você possa executar a lógica com ele em uma cena.
Criar tipo available_options
Nesta seção, você vai criar um tipo chamado available_options
, que especifica as três opções que os usuários têm (dragão, tradutor e bússola) em resposta à solicitação. Você também vai definir alguns sinônimos para essas opções caso um usuário diga algo semelhante. Em outra seçãovocê vai adicionar o tipo available_options
a um slot para especificar que quer acessar a escolha do usuário.
Para criar o tipo available_options
, siga estas etapas:
- Crie um novo diretório chamado
types
:
mkdir custom/types
- Crie um novo arquivo chamado
available_options.yaml
no diretóriotypes
:
touch custom/types/available_options.yaml
- Abra
custom/types/available_options.yaml
no seu editor de texto.
Os tipos são configurados como pares de chave-valor de informações, em que chave é o nome do tipo, e os valores são sinônimos dessa chave. Ao definir a chave, ela é adicionada automaticamente como um valor. Com o SDK do Actions, as chaves são representadas como entities
e os valores como synonyms
.
Para adicionar as três opções que o usuário pode escolher, siga estas etapas:
- Adicione
entities
esynonyms
ao arquivoavailable_options.yaml
:
available_options.yaml
synonym: entities: dragon: synonyms: - dragon - hydra - lizard translator: synonyms: - translator - communicator - machine - decoder - translate compass: synonyms: - compass - direction - guide - navigator matchType: EXACT_MATCH
- Salve o arquivo.
Sua ação agora entende que available_options
representa dragão, tradutor e bússola, além de reconhecer alguns sinônimos.
Configurar o preenchimento de slot
Agora, configure o preenchimento de slot na cena Fortune
. Para configurar a lógica de preenchimento de slot, siga estas etapas:
- Abra
custom/scenes/Fortune.yaml
no seu editor de texto. - Adicione os dados
slots
ao arquivoFortune.yaml
:
Fortune.yaml
slots: - commitBehavior: writeSessionParam: chosenOptions name: chosenOptions promptSettings: initialPrompt: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: What do you choose to help you on your quest, a dragon, a translator, or a compass? suggestions: - title: Dragon - title: Translator - title: Compass required: true type: name: available_options
- Salve o arquivo.
Você adicionou o tipo available_options
ao slot, que avisa à ação as informações do usuário que é preciso coletar (a opção de auxílio) antes de continuar. Além disso, configurou uma solicitação dentro do slot, que é adicionado à fila de solicitação quando o usuário chega ao estágio de preenchimento do slot da cena.
Ao nomear o slot chosenOptions
, o campo writeSessionsParam
será atualizado com o mesmo nome ($session.params.chosenOptions
). Você pode acessar esse parâmetro pelo nome na solicitação e no fulfillment com a biblioteca de cliente.
Adicionar condição
Depois de incluir um slot que requer que o usuário escolha um auxílio, antes de continuar a conversa, é possível adicionar uma condição para verificar se os dados do slot foram recebidos.
Nesta seção, você vai adicionar a condição scene.slots.status == "FINAL"
, que verifica se o preenchimento de slot está completo. Depois que todos os slots forem preenchidos, a condição vai adicionar uma solicitação (You picked $session.params.chosenOptions.
) à fila.
Para configurar a condição scene.slots.status == "FINAL"
, siga estas etapas:
- Abra
custom/scenes/Fortune.yaml
no seu editor de texto. - Adicione dados
conditionalEvents
à parte superior do arquivoFortune.yaml
:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: You picked $session.params.chosenOptions.
- Salve o arquivo.
Testar ação no simulador
Você já definiu as opções que o usuário precisa selecionar para preencher o slot. Depois de obter as informações do usuário, a ação deve fornecer uma solicitação de acordo com a opção escolhida.
Para testar a ação, siga estas etapas:
- No terminal, execute o seguinte comando:
gactions deploy preview
A saída será semelhante a esta:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copie o URL fornecido e cole-o em um navegador.
- Clique ou digite
Talk to my test app
no campo Entrada e pressione Enter. - Digite
Yes
no campo Entrada e pressione Enter. Também é possível clicar no ícone de sugestão Sim.
- Clique, digite ou diga
dragon
. Aparecerá a mensagem "Você escolheu um dragão".
Na próxima seção, você vai personalizar as solicitações para cada auxílio disponível ao usuário.
Personalizar solicitações usando condições
Nesta seção, você vai adicionar condições para cada opção disponível ao usuário, além de uma solicitação personalizada para cada condição.
Personalizar a previsão do futuro de dragon
Para atualizar a condição e personalizar a solicitação caso o usuário escolha "dragão", siga estas etapas:
- Abra
custom/scenes/Fortune.yaml
no seu editor de texto. - Substitua os dados
conditionalEvents
pelo seguinte snippet no arquivoFortune.yaml
:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: The people of Gryffinberg will be awestruck by the beauty and power of the ancient dragon. Much to your dismay, the townspeople fall into dispute over who will receive the honor of riding the dragon first. You return home from your quest without everlasting glory or a dragon.
- Salve o arquivo.
Agora, quando um usuário disser "dragão" ou algo parecido, sua ação vai oferecer uma previsão do futuro de acordo com essa seleção. Em seguida, adicione as duas seleções restantes.
Personalizar as recomendações de translator
e compass
Para adicionar as condições e personalizar as solicitações para quando um usuário disser "tradutor" ou "bússola", siga estas etapas:
- No arquivo
custom/scenes/Fortune.yaml
, adicione as outras duas condições abaixo da condiçãodragon
:
Fortune.yaml
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: With the help of the translator, the rival factions in Gryffinberg are finally able to communicate with each other and resolve their disputes. You will complete your quest to restore peace in the town. The translator will be used on many other journeys across the earth. After its work is done, it retires honorably to a premier location in the Gryffinberg History Museum. - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: The compass will help you find the mystical and ancient Library of Gryffinberg. Among its infinite stacks of dusty books, you find one entitled "Wisdom of the Ages". By the time you've read the 50,000-page tome, the townspeople have forgotten their problems. You will write a second edition of "Wisdom of the Ages", but have limited commercial success.
- Salve o arquivo.
Testar ação no simulador
Agora, a ação precisa fornecer uma previsão personalizada para o usuário conforme a opção selecionada.
Para testar a ação, siga estas etapas:
- No terminal, execute o seguinte comando:
gactions deploy preview
A saída será semelhante a esta:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copie o URL fornecido e cole-o em um navegador.
- Digite
Talk to my test app
no campo Entrada e pressione Enter. - Digite "Sim" no campo Entrada e pressione Enter. Também é possível clicar no ícone de sugestão Sim.
- Clique, digite ou diga
Translator
.
Você deve receber a previsão do futuro correspondente à opção "tradutor".
Nesta seção, você vai configurar sua ação para que o usuário possa selecionar outra opção e ouvir uma previsão diferente. Essa mudança é semelhante à mensagem "Você quer jogar novamente?" ao final de um jogo. Para criar esse loop, reutilize as intents yes
e no
criadas e adicione-as a uma nova cena chamada Again
.
Criar cena Again
Nesta seção, você vai criar uma cena Again
e adicionar uma solicitação para perguntar se o usuário quer selecionar outra opção.
Para criar e configurar a cena Again
, siga estas etapas:
- Crie um arquivo chamado
Again.yaml
no diretórioscenes
:
touch custom/scenes/Again.yaml
- Abra
custom/scenes/Again.yaml
no seu editor de texto. - Adicione os seguintes dados do
onEnter
aAgain.yaml
:
Again.yaml
onEnter: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: That is what I see for you. Would you like to choose a different option and explore another future? suggestions: - title: "Yes" - title: "No"
- Salve o arquivo.
Adicionar transição da cena Fortune
para Again
Após o usuário receber a previsão do futuro, a conversa precisa fazer a transição para a nova cena Again
.
Para adicionar uma transição da cena Fortune
à Again
, siga estas etapas:
- Abra
custom/scenes/Fortune.yaml
no seu editor de texto. - Adicione
transitionToScene: Again
a cada condição, conforme mostrado no snippet a seguir:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: The people of Gryffinberg will be awestruck by the beauty and power of the ancient dragon. Much to your dismay, the townspeople fall into dispute over who will receive the honor of riding the dragon first. You return home from your quest without everlasting glory or a dragon. transitionToScene: Again - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: With the help of the translator, the rival factions in Gryffinberg are finally able to communicate with each other and resolve their disputes. You will complete your quest to restore peace in the town. The translator will be used on many other journeys across the earth. After its work is done, it retires honorably to a premier location in the Gryffinberg History Museum. transitionToScene: Again - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: The compass will help you find the mystical and ancient Library of Gryffinberg. Among its infinite stacks of dusty books, you find one entitled "Wisdom of the Ages". By the time you've read the 50,000-page tome, the townspeople have forgotten their problems. You will write a second edition of "Wisdom of the Ages", but have limited commercial success. transitionToScene: Again
- Salve o arquivo.
Testar ação no simulador
Agora, sua ação deve fornecer a seguinte solicitação depois que o usuário receber a previsão: "É isso que vejo para você. Quer escolher outra opção e explorar outro futuro?"
Para testar a ação, siga estas etapas:
- No terminal, execute o seguinte comando:
gactions deploy preview
A saída será semelhante a esta:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copie o URL fornecido e cole-o em um navegador.
- Digite
Talk to my test app
no campo Entrada e pressione Enter. - Digite
Yes
no campo Entrada e pressione Enter. Também é possível clicar no ícone de sugestão Sim. - Clique, digite ou diga
dragon
.
Você receberá a previsão do futuro para a opção de dragão e a solicitação Again
.
Adicionar intents e transição para a cena Again
Nesta seção, você adicionará as intents yes
e no
à cena Again
. Assim, a ação poderá entender se o usuário quer ou não escolher uma nova opção. Você também vai adicionar as transições adequadas para as intents yes
e no
. A intent yes
faz a transição para a cena Fortune
, e a no
faz a transição para a cena do sistema End conversation
.
Para adicionar intents e transições à cena Again
, siga estas etapas:
- Abra
custom/scenes/Again.yaml
no seu editor de texto. - Adicione os dados
intentEvents
na parte superior do arquivoAgain.yaml
, acima deOnEnter
:
Again.yaml
intentEvents: - intent: "yes" transitionToScene: Fortune - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell. intent: "no" transitionToScene: actions.scene.END_CONVERSATION
- Salve o arquivo.
Testar ação no simulador
Sua ação agora pode entender se o usuário quer escolher uma nova opção ou encerrar a conversa.
Para testar a intent yes
, siga estas etapas:
- No terminal, execute o seguinte comando:
gactions deploy preview
A saída será semelhante a esta:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copie o URL fornecido e cole-o em um navegador.
- Digite
Talk to my test app
no campo Entrada e pressione Enter. - Digite
Yes
no campo Entrada e pressione Enter. Também é possível clicar no ícone de sugestão Sim. - Clique, digite ou diga uma das opções.
- Digite
Yes
no campo de entrada e pressione Enter.
Você receberá a solicitação "O que você quer usar como auxílio na sua missão: um dragão, um tradutor ou uma bússola?"
Para testar a intent no
, siga estas etapas:
- Clique, digite ou diga uma das opções.
- Digite
No
no campo de entrada e pressione Enter.
Você receberá a solicitação End conversation
: "Que bom que está feliz com sua escolha. Boa sorte na sua missão! Adeus."
Você criou o caminho principal que a maioria dos usuários usa na sua ação. No entanto, a resposta do usuário à solicitação da cena Fortune
("O que você quer usar como auxílio na sua missão: um dragão, um tradutor ou uma bússola?") pode não estar nas opções disponíveis.
Nesta seção, você vai configurar sua ação para entender quando um usuário disser "mágica", "dinheiro", "cavalo" ou "telefone" e pedir para que ele escolha uma das três opções originais. Para configurar essa lógica, você precisa criar uma type
que contenha as outras opções e uma intent, other_option
, que é associada quando um usuário indica uma delas. Também é necessário anotar frases de treinamento na intent other_option
para identificar e extrair parâmetros de intent.
Quando o mecanismo de processamento de linguagem natural do Google Assistente detecta uma correspondência de parâmetros na entrada do usuário, ele extrai o valor como um parâmetro digitado para que você possa executar a lógica em uma cena. Neste codelab, você vai configurar sua ação para extrair o auxílio que o usuário quiser e indicar essa escolha em uma solicitação.
Criar tipo unavailable_options
Agora você pode criar um tipo unavailable_options
com uma variedade de opções diferentes para que sua ação possa identificar esses dados na entrada de um usuário.
Para criar o tipo unavailable_options
, siga estas etapas:
- Crie um arquivo chamado
unavailable_options.yaml
no diretóriotypes
:
touch custom/types/unavailable_options.yaml
- Abra
custom/types/unavailable_options.yaml
no seu editor de texto. - Adicione os dados
synonyms
ao arquivounavailable_options.yaml
:
unavailable_options.yaml
synonym: entities: money: synonyms: - money - cash - gold horse: synonyms: - horse - stallion - steed magic: synonyms: - magic - enchanted - spells phone: synonyms: - phone - cell - apps matchType: EXACT_MATCH
- Salve o arquivo.
Criar intent other_option
Em seguida, crie uma intent chamada other_option
e adicione frases de treinamento com as opções no tipo unavailable_options
. Essa intent é acionada quando o usuário seleciona uma opção que apareça no tipo unavailable_options
.
Para criar e configurar a intent other_option
, siga estas etapas:
- Crie um arquivo chamado
other_option.yaml
no diretóriointents
:
touch custom/intents/other_option.yaml
- Abra
custom/intents/other_option.yaml
no seu editor de texto. - Adicione os dados
parameters
etrainingPhrases
ao arquivoother_option.yaml
:
other_option.yaml
parameters: - name: chosenUnavailableOption type: name: unavailable_options trainingPhrases: - I want to use ($chosenUnavailableOption 'spells' auto=true) - I really really want to use a ($chosenUnavailableOption 'phone' auto=true) - ($chosenUnavailableOption 'magic' auto=true)! - ($chosenUnavailableOption 'cash' auto=true) - I want to ride a ($chosenUnavailableOption 'horse' auto=true)
Aqui, você vai anotar as frases de treinamento com as opções indisponíveis especificadas na seção anterior. O parâmetro de intent chosenUnavailableOption
permite extrair o nome da opção e usá-la em uma solicitação. Você fará isso na seção a seguir.
- Salve o arquivo.
Adicionar a intent other_option
à cena Fortune
Agora você tem uma intent, other_option
, que será usada quando a escolha do usuário não fizer parte das opções originais. Nesta seção, você vai adicionar a intent other_option
à cena Fortune
. Use o parâmetro da intent para personalizar a solicitação com base na entrada do usuário.
Para adicionar a intent other_option
à cena Fortune
, siga estas etapas:
- Abra
custom/scenes/Fortune.yaml
no seu editor de texto. - Adicione
intentEvents
entre os dadosconditionalEvents
eslots
:
Fortune.yaml
intentEvents: - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: I have seen the future and a $intent.params.chosenUnavailableOption.original will not aid you on your journey. intent: other_option
- Salve o arquivo.
A expressão $intent.params.chosenUnavailableOption
refere-se ao objeto do parâmetro da intent, e $intent.params.chosenUnavailableOption.original
indica o valor desse objeto. A propriedade original
refere-se à entrada bruta fornecida pelo usuário
Quando um usuário menciona uma opção listada no tipo unavailable_options
durante a cena Fortune
, isso aciona a intent other_option
e adiciona uma solicitação à fila. Como não há transição especificada, o loop de execução da cena continua reavaliando o estágio de condições. O slot chosenOptions
adiciona a solicitação à fila, que é enviada ao usuário.
Testar ação no simulador
Agora, sua ação responderá adequadamente quando um usuário selecionar uma das opções listadas no tipo unavailable_options
e especificar o auxílio selecionado. Em seguida, sua ação pedirá que o usuário escolha uma das opções originais (um dragão, um tradutor ou uma bússola).
Para testar a ação no simulador, siga estas etapas:
- No terminal, execute o seguinte comando:
gactions deploy preview
A saída será semelhante a esta:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copie o URL fornecido e cole-o em um navegador.
- Digite
Talk to my test app
no campo Entrada e pressione Enter. - Digite
Yes
no campo Entrada e pressione Enter. Também é possível clicar no ícone de sugestão Sim. - Digite
magic
no campo Entrada e pressione Enter.
Você vai notar que a solicitação não parece correta quando o usuário escolhe "mágica" devido ao artigo "um" ou "uma" antes da palavra. Saiba como resolver o problema nas seções a seguir.
Adicionar gerenciador unavailable_options
Para colocar o artigo "um" ou "uma" antes das opções apropriadas do tipo unavailable_options
, configure um manipulador de eventos na sua lógica de fulfillment para verificar se a opção escolhida pelo usuário precisa de um artigo. Primeiro, configure sua ação para chamar o gerenciador a partir da cena Fortune
.
Para adicionar o gerenciador unavailable_options
à cena Fortune
, siga estas etapas:
- Abra
custom/scenes/Fortune.yaml
no seu editor de texto. - Atualize o arquivo
Fortune.yaml
com os seguintes dados dointentEvents
:
Fortune.yaml
intentEvents: - handler: webhookHandler: unavailable_options intent: other_option
- Salve o arquivo.
Atualizar e implantar o fulfillment
Agora que você configurou a ação para chamar o manipulador de eventos unavailable_options
, basta atualizar no seu fulfillment e implantá-lo.
Para atualizar o fulfillment, siga estas etapas:
- Abra
webhooks/ActionsOnGoogleFulfillment/index.js
no seu editor de texto. - Adicione o seguinte código ao
index.js
no gerenciadorgreeting
:
index.js
app.handle('unavailable_options', conv => {
const option = conv.intent.params.chosenUnavailableOption.original;
const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
let message = 'I have seen the future and ';
if(optionsNeedA.has(optionKey)){
message = message + 'a ';
}
message = message + `${option} will not aid you on your journey. `;
conv.add(message);
});
- Adicione o seguinte código em
const app = conversation({debug:true});
:
index.js
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- Salve o arquivo.
Entender o código
O gerenciador unavailable_options
faz o seguinte:
- Recebe os dados
option
do objetoconv
e atribuioption
à propriedadeoriginal
, que contém as entradas brutas do usuário - Atribui
optionKey
à propriedaderesolved
, que é a chave do tipounavailable_options
- Verifica se
optionKey
é uma das opções que precisam de um artigo. Se for, cria a mensagem com o artigo necessário - Adiciona a mensagem via
conv.add(message)
Atualizar gerenciadores
Para permitir que a ação use unavailable_options
, adicione o gerenciador unavailable_options
a webhooks/ActionsOnGoogleFulfillment.yaml
.
- Adicione o nome do gerenciador
unavailable_options
aActionsOnGoogleFulfillment.yaml
:
ActionsOnGoogleFulfillment.yaml
handlers: - name: greeting - name: unavailable_options inlineCloudFunction: executeFunction: ActionsOnGoogleFulfillment
- Salve o arquivo.
Testar ação no simulador
Agora, sua ação precisa ajustar a solicitação. Isso depende do uso do artigo "um" ou "uma" antes da escolha do usuário para o tipo unavailable_options
.
Para testar a ação, siga estas etapas:
- No terminal, execute o seguinte comando:
gactions deploy preview
A saída será semelhante a esta:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copie o URL fornecido e cole-o em um navegador.
- Clique ou digite
Talk to my test app
no campo Entrada e pressione Enter. - Digite
Yes
no campo Entrada e pressione Enter. Também é possível clicar no ícone de sugestão Sim. - Digite
magic
no campo Entrada e pressione Enter. Em seguida, digitehorse
no campo Entrada e pressione Enter.
Sua ação precisa adicionar o artigo "um" antes da opção "cavalo". Além disso, ela não pode incluir um artigo para a opção "mágica".
O SDK do Actions tem interoperabilidade com um IDE baseado na Web chamado Action Builder, que é integrado ao Console do Actions. É possível enviar seu sistema de arquivos local para o rascunho da sua ação no console com o comando gactions push
. O Console do Actions tem uma representação visual da configuração da ação. Visualizar a ação pode ser útil durante o desenvolvimento e não afeta a versão veiculada para teste.
Para enviar e visualizar seu projeto no Console do Actions, siga estas etapas:
- No terminal, execute o seguinte comando para enviar seu projeto ao Console do Actions:
gactions push
A saída será semelhante a esta:
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- Copie o URL fornecido e cole-o em um navegador.
- No Console do Actions, clique em Desenvolver na barra de navegação superior.
- Clique na seta suspensa ao lado de Cenas e clique em Iniciar. Você verá uma representação visual da cena
Start
da ação, conforme esta captura de tela:
Parabéns!
Agora você já tem as habilidades intermediárias necessárias para criar ações para o Google Assistente com o SDK do Actions.
Conteúdo abordado
- Como desenvolver ações de conversa usando a biblioteca de fulfillment do Node.js
- Como usar slots para coletar dados do usuário
- Como usar condições para adicionar lógica à cena
- Como adicionar um loop de jogo
- Como adicionar um caminho de apoio
Recursos de aprendizado adicionais
Veja estes recursos para aprender a criar ações do Google Assistente:
- Documentação para desenvolver ações no Google Assistente
- Página do Actions on Google no GitHub com exemplos de código e bibliotecas
- A comunidade oficial do Reddit para desenvolvedores que trabalham com o Google Assistente
- Diretrizes de design de conversa com práticas recomendadas e orientações sobre ações de conversa
Siga nosso perfil do Twitter @ActionsOnGoogle para ficar por dentro dos nossos comunicados mais recentes e envie um tuíte para #AoGDevs contando o que você criou.
Como limpar o projeto [recomendado]
Para evitar possíveis cobranças, é recomendável remover os projetos que você não pretende usar. Para excluir os projetos criados neste codelab, siga estas etapas:
- Para excluir o projeto e os recursos do Cloud, conclua as etapas da seção Como encerrar (excluir) projetos.
- Opcional: para remover seu projeto do Console do Actions imediatamente, conclua as etapas da seção Como excluir um projeto. Caso contrário, seu projeto será removido automaticamente após cerca de 30 dias.
Pesquisa de feedback
Antes de sair, preencha esta breve pesquisa sobre sua experiência.