みかづきブログ・カスタム

基本的にはちょちょいのほいです。

Actions on Google と Dialogflow を使って Googleアシスタント向けアプリを作って、Google Home からmp3を再生する 🔈

これまで、Alexaスキルはいくつもつくってきたのですが、Googleアシスタント向けアプリはひとつしかつくったことがありませんでした。

amzn.to

assistant.google.com

が。突然「Googleドライブという名前のアプリをつくってエンジン音を流そう」と思い立ったので、すごく久しぶりにつくってみました。Google Assistant向けアプリを。これはAmazon EchoよりもGoogle Homeで使いたいですからね。

ものすごくシンプルなアプリにも関わらず、作り方をすっかり忘れていて、若干苦戦してしまったので、今後のためにメモを残しておきます。




Actions on Googleの準備

プロジェクトの作成

まずは、Actions on Googleのプロジェクトを作成します。
https://console.actions.google.com にアクセスし、「New Projectボタン」を押します。

f:id:kimizuka:20200817221300p:plain

プロジェクトの命名

プロジェクト名の入力を求められるので入力します。
また、言語もリージョンも日本語・日本に変更しておきましょう。

f:id:kimizuka:20200817221422p:plain

アクションの種類を選択

とりあえず「Custom」を選択しておきます。

f:id:kimizuka:20200817221636p:plain

ビルドの仕方を選択

「Conversation Components」を選択します。
最初はとりあえず「Blank Project」を選択してしまって、その後どうしたらいいのか分からなくなってしまったのですが、「Conversation Components」を選択したらあっさりとDialogflowとの紐付けができました。「Blank Project」でもやり方があるのかもしれませんが、調べてません。

f:id:kimizuka:20200818094006p:plain

Quick Setupから呼び出し名を決める

「Decide how your Action is invoked」を押して、呼び出し名を決めましょう。
呼び出し名とは、「OK、Google、〇〇に繋いで」の〇〇の部分です。

f:id:kimizuka:20200817222012p:plain

呼び出し名を入力

Display nameの部分に呼び出し名を入力します。
ルールは色々あるのですが、代表的なものとしては、

・2単語以上で構成されていること
・予約語(OK、Google、launchなど)は使えない

などがあり、「グーグルドライブ」だと予約語に引っかかってエラーになってしまうのですが、特に一般公開するアプリではないのと、「Googleドライブ」という名前でなければ成り立たないアプリなので、このまま突き進みます。

f:id:kimizuka:20200817225050p:plain

呼び出し名のルールの詳細は こちら にまとまっているので、公開を目指す場合は目を通しておくと良いと思います。

developers.google.com

Dialogflowとの紐付け

呼び出し名を保存したら、一度Overviewタブに戻ってから、再度Developタブに戻ってくると、右上に「Add Actionボタン」が出てきます。

「Add Actionボタン」を押下すると、CREATE ACTIONモーダルが開くので、右下の「BUILDボタン」を押しましょう。これで、一旦Actions on Google側の作業は完了です。

f:id:kimizuka:20200817223858p:plain

Dialogflowの作成

プロジェクトの作成

「BUILDボタン」を押すと別タブでDialogflowの画面が開きます。
プロジェクト名にはActions on Googleと同じものが入っているはずで、問題なければ「CREATEボタン」を押しましょう。

f:id:kimizuka:20200817224308p:plain

アプリが起動したときの処理を編集する

Intentsタブに移動し、「Default Welcome Intent」をクリックします。
ここが、「OK、Google、〇〇に繋いで」と言った直後に実行される処理になります。

f:id:kimizuka:20200817225124p:plain

クリックしたら、「Resposes」という項目が見えるまでスクロールしましょう。
Text Responseに、アプリに返して欲しい返答を入力します。
普通にテキストを入力すると合成音声で読み上げてくれるのですが、今回はmp3ファイルを再生したいので、SSMLでマークアップしましょう。

<speak><audio src="HOGEHOGE" /></speak>

このHOGEHOGEの部分をホスティングしてあるエンジン音のmp3に差し替えればOKです。
Alexaスキルの場合、mp3の形式に厳しいルールがあるのですが、ざっと試した感じ、Googleアシスタント向けアプリは結構どんなmp3でも大丈夫でした。多分長さとかには制限があると思うのですが、今回は調べてません。あと、多分httpsでホスティングする必要があると思います。

ついでに、mp3を再生し終わった後にアプリが終了するように「Set this intent as end of conversation」をONにしておきましょう。
これがOFFのままだと、mp3が再生し終わった後、ユーザーの発話待ちになります。

テストする

TESTボタンを押す

Dialogflowで「Integrationsタブ」に移動し、Google Assistant内の「INTEGRATION SETTING」をクリックします。

f:id:kimizuka:20200817230520p:plain

モーダルが表示されるので「TESTボタン」を押下します。
が。その前に「Auto-preview changes」をONにしておくと、開発が楽になるのでおすすめです。

テストする

「TESTボタン」を押すと、Actions on Googleのテストの画面が別タブで開きます。
デバイスを「Speaker」に切り替えてから(画面真ん中ぐらいにあるプルダウン)、あとは、存分にテストしましょう。

f:id:kimizuka:20200817231105p:plain

この際、同じアカウントでログイン済みの実機でもテストバージョンが動くようになっているはずです。
今回は以上です。お疲れ様でした。