スマートスピーカー、スマートフォン、自動車、テレビ、ヘットフォンなど含む10億以上のデバイスで動いているGoogleの仮想パーソナルアシスタントGoogle Assistant、
Action on GoogleはでそのGoogle Assistantの拡張機能を作ることができる開発者のためのプラットフォームです。
ユーザーは、食品の購入や、乗車の予約など、物事を成し遂げるために会話の中でGoogle Assistantを利用します。
(Google Assistantでできることのリストについてはこちらのサイトを参考にしてください。)
開発者として、Googleのアクションを使用して、ユーザーと自分のサードパーティのフルフィルメントサービスとの間の楽しい効果的な会話体験を簡単に作成および管理できます。
このcodelabはマルチモジュールチュートリアルの一部です。各モジュールでは、特定のソフトウェア要件からアクションを構築する方法、およびコードをテストする方法に関するエンドツーエンドの手順を説明します。
このコードラボでは、Googleのアクションで開発するための初心者レベルの概念について説明します。このコードラボに従うために、プラットフォームに関する以前の経験を持っている必要はありません。
このコードラボでは、簡単な会話型のアクションを構築します。
まずは、ベースとなるアクションを作っていきます
- Actions Consoleを開く
※ 一番最初に開かれた時、利用規約についてのダイアログが出るかと思います。
一つ目のチェックボックス、利用規約問題なければ「Yes」を
二つ目のチェックボックス、最新情報など欲しい方は「Yes」をそうでない方は「No」を
三つ目のチェックボックス、アンケートやパイロットに協力していい人は「Yes」をそうでない人は「No」を
選択してAGREE AND CONTINUE
を押してください
- Add/import projectをクリック
- Project nameを「actions-codelab」という名前を入力
また、言語をjapanese、regionをjapanに今回はすることにしましょう - Create Projectをクリック
- 下のMore optionsまでスクロールしてConversationalをクリック
- 左側のナビゲーションでBuild > Actionsをクリック
- Create Actionダイアログで、Custom Intentを選択してBuildをクリック
Action on Googleで使うDialofglowを作成します。
- アクションプロジェクトを作成するとDialogflow Consoleが開いてるはず
※ もし開かれてなければアクションプロジェクトの作成がうまく行っているか確認してください
もしかしたらこの場でも規約についてのダイアログが出てくるかもしれません。
規約を確認の上、作業を進めていければと思います。
また、ログインを求められる可能性があります。 その場合はご自身のアカウントでログインをお願いします。
-
日本語に設定する
今回は言語をの日本語に設定してください -
Createをクリック
※ Dialogflow Agentの名前が自動入力されているか確認
今回作成していく場所がこちらの図なんですがここの最初に送られるここのメッセージを作っていきます。
- Dialogflow ConsoleのIntentページでDefault Welcome Intentを選択
- Responsesまでスクロールして各回答のゴミ箱ボタンを選択して、選択肢を削除
- ResponsesのEnter a text responseをクリックして「こんにちは!お気に入りの色はなんですか?」と入力
- saveをクリック
しばらくすると「Intent saved」というポップアップが表示されます。
- Dialogflow Consoleの左側のナビゲーションのIntegrationsをクリック
- 次にGoogle Assistant > Integration Settingsをクリック
- TESTをクリック
※ 「Check auto-preview setting」ダイアログが表示された場合は、「Auto-preview changes」オプションを有効のままにしてからContinueをクリックします。
- シミュレータでアクションをテストするには、inputフィールドに「テスト用アプリにつないで」と入力してEnterキーをクリック
- welcome intentの作成で入力した「こんにちは!お気に入りの色はなんですか?」がでればOK
※ 違う文言が出てきた場合はwelcome intentの作成の2をチェック
- Dialogflow Consoleの左側のナビゲーションのIntentsをクリック
- Create Intentをクリック
- インテント名に「favorite color」と入力しSaveをクリック
- Training phrasesの下に次のようなフレーズを入力して、ユーザの表現を追加する
- 緑色が私のお気に入りです
- 黒色が私のお気に入りの色です
- ピンク色が好き
- オレンジ
- お気に入りの色は黄色です
- Action and parametersの下のParameter Nameに「color」と入力し、ENTITYに「@sys.color」と入力する
- REQUIREDのチェックボックスをクリック
- Define promptsをクリックして、「好きな色は?」と入力して、Closeをクリック
- 色の部分を選択して「@sys.color」を選択する
- 下にスクロールしたところにあるFulfillmentのEnable Fulfillmentを有効にする
※ 左側のナビゲーションにあるFulfillmentではないので注意
- ** Enable webhook call for this intent.**をオンにする
- saveをクリックする
- 左側のナビゲーションのFulfillmentをクリック
- Inline Editorのトグルボタンを有効にする
- index.jsの内容を以下変更する
'use strict';
// Import the Dialogflow module from the Actions on Google client library.
const {dialogflow} = require('actions-on-google');
// Import the firebase-functions package for deployment.
const functions = require('firebase-functions');
// Instantiate the Dialogflow client.
const app = dialogflow({debug: true});
// Handle the Dialogflow intent named 'favorite color'.
// The intent collects a parameter named 'color'.
app.intent('favorite color', (conv, {color}) => {
const luckyNumber = color.length;
// Respond with the user's lucky number and end the conversation.
conv.close('あなたのラッキーナンバーは' + luckyNumber);
});
// Set the DialogflowApp object to handle the HTTPS POST request.
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
- Deployをクリック
※ デプロイが完了するまで時間がかかります。完了すると「Last deployed」と表示されます。
WebhookのコードはJavaScriptで実装されています。 Dialogflowのインラインエディタを使用すると、Cloud Functions for Firebaseを使用してクラウド内の管理対象環境にWebフックコードをデプロイします。
Webhookコードは、Google Node.jsクライアントライブラリのアクションを使用して、アシスタントがWebhookに送信するHTTPリクエストに応答します。 このライブラリを使用すると、Dialogflow APIのラッパーとして機能するDialogflowAppオブジェクトを作成できます。
この場合、DialogflowApp
オブジェクト型のapp
変数が作成されます。
`app.intent()``関数は、「お気に入りの色」の意図を処理するためのコールバックを宣言するために使用されます。
コールバックは2つの重要な引数を受け取ります。
- DialogflowConversation object これはダイアログの状態をクライアントライブラリで抽象化したもので、現在アクティブなDialogflowコンテキスト、ユーザーデバイスのサーフェス機能など、Webフックへの着信要求の値を表すプロパティが含まれています。
- Dialogflow Parameters object これは、関連する目的で収集されたパラメータ値のJavaScriptオブジェクト表現です。
Dialogflowコンソールでパラメータ名を変更した場合は、コード内の変数名も必ず更新してください。
コールバックは、色のために単語の長さを決定することによってユーザーのラッキーナンバーを生成します
その後、Conversation
オブジェクトパラメータのclose
メソッドを使用してユーザーに応答し、会話を終了します。
上の図は、webhook実装の21行目の変数colorがDialogflowコンソールで以前に定義したパラメータ名をどのように使用するかを示しています。 たとえば、ユーザーが「私のお気に入りの色は緑色です」と言った場合、21行目の可変色の値は「緑色」になります。
- Actions Consoleを開き、このコードラボ用のアクションプロジェクトを選択
- 左側のナビゲーションでSimulatorを選択
- inputフィールドに「テスト用アプリにつないで」と入力してEnterキーをクリック
- 「お気に入りの色は?」と聞かれるので、「黄緑色」と入力する
- ラッキーナンバーが帰ってきていることを確認
今回ベースとしてコードラボについてはこちらです
https://codelabs.developers.google.com/codelabs/iwd-actions-1/index.html
続きであるコードラボをされたい方はこちらを参考に試されてみてください
https://codelabs.developers.google.com/iwd2019/
早く終わった方は続きのコードラボを試すか、コードを書き換えて違う文言が帰ってくるようにするなどコードをいじってみましょう!