Closed10

Actions on Google お触りメモ

CanoCano

名前を決める
このとき pronunciation にスペースを入れないと

Could not reserve your pronunciation '{アプリのよみ}' because: Your Action's display name must contain more than one word, or more than one word and a prefix (such as "the" or "an").

とか言われてデプロイできない
アプリ名は複数単語が必要らしい

CanoCano

Main invocation を編集する
見ての通り「~ につないで」と言ったときの応答になる

ここでも喋ったり webhook できるが、とりあえず置いといて transition に適当な名前で Add すると、Scenes が作成されるのでそっちに移動
普通のアプリの画面遷移と同じように、命令毎にこの Scenes を行き来したりしなかったりするイメージ

CanoCano

User intent handling を追加して、Intent に適当な名前で Add する

今度は intent が作成される
これが命令本体

Add training phrases に受け取る命令を入れていく
タイマーセットなら
「タイマーを5分でセット」「タイマー5分」「5分計って」とか

この「5分」を変数として受け取るには Add intent parameters を設定する
適当な名前とデータ型を指定して phrases の方で該当する部分をテキスト選択するとダイアログが出るので選択する
「タイマー5分」と入力していても 5 がパラメータとして指定されていると「タイマー10分」でも勝手にマッチするようになる (分かりづらくない?)

CanoCano

Scenes に戻って When intent matchedCall your webhook を入力する
url ではなく呼び出すアクションの名前、なんでもいい

メニューの Webhook に移動
ここで url を入力、もしくはインラインエディタを開く

インラインエディタの場合、cloud functions にデプロイされるのでプロジェクトの課金設定が必要
あとデプロイ先は us-central になる、変更不可?見てない

コードはこんな感じ

actions-on-google -> @assistant/conversation になっとる

import {conversation} from "@assistant/conversation";
import { https } from "firebase-functions";

const app = conversation({debug: true});

app.handle("{`Call your webhook` で入力した名前}", (conv) => {
  conv.add("Hello World");
});

export actions = https.onRequest(app);
CanoCano

Intent で定義したパラメータは conv.request.intent.params.[name] から参照できる

original に入力されたテキスト、resolved にテキストを解決したものが入ってる
日付なら「今日の~」と入力された場合 resolved{ "day": 7, "month": 6, "year": 2022} みたいに入ってくる、便利

渡されてるデータはコンソールの Test タブで、呼び出しの webhookRequest でも見れる

CanoCano

あとはこれを元にがしゃがしゃして返すだけ
テキストだけじゃなくリストを表示したりもできるけど、今回はここまで

CanoCano
  • ~につないでと言わないといけないのがやっぱり残念
    • オプトインになったりしないかな
  • 呼び出し時に「テスト版です」とか言われるのはコンソールテスト時だけだった
このスクラップは2022/06/07にクローズされました