『Google Homeを使いたおす! DialogflowとAoG Meetup』に参加しました

タイトルの通り、勉強会に参加してきました。

ブログ枠で参加したので、ノルマをこなします。

gcpug-tokyo.connpass.com

感想とか

  • GoogleHomeは持っていて、Dialogflowとつなぐチュートリアルまでは実施済みぐらいの知識で参加した。
    • DialogflowはWebhookのアプリを作ったことあるぐらいの知識
  • AoG、特にDialogflowやGCPを使う事例を知ることができたのは良かった。
  • VoiceUIの考え方やハマりどころなど、新しい分野の情報を得られて良かった。
  • Googleのオフィス!無料自販機!
  • ピザとビール!

当日使われた資料はConnpassのページにリンクがあります。

gcpug-tokyo.connpass.com

以下、聞きながら取ったメモ。

Dialogflowで作るアシスタントアプリ

  • ymotongpooさん
  • Actions on Googleについて
  • VUI(VoiceUserInterface)に期待されるもの
    • そもそも道具を使う目的とは
      • 何かを知りたい、どこかへ行きたい、何かを買いたい
    • 各デバイスのUIの特徴
      • デスクトップアプリはたくさん情報を表示する
      • モバイルアプリは1つの画面を専有する
        • ソフトウェアで必要に応じたUIが提供される
      • ウェアラブルバイスは即時性がとても高いけど情報量が少ない
      • スクリーンデバイスアプリケーション
        • テレビとか
        • とにかく画面が大きい
        • 限られた操作方法で大きな画面でコンテンツを見るのに特化してる
      • ウェアラブルバイス以外は、並列でコンテンツを見せることができる
    • スマートスピーカーはどうか
      • 出力結果は直列でしか取得できない
        • 音声は同時に流せない(流しても聞き取れない)
      • 出力結果を得るのに時間がかかる
        • 最後まで聞かないと結果がわからない
    • VUI使ってもらうにはステップを減らす努力が必要
  • Googleアシスタントについて
    • Googleアシスタントとは
      • Googleと会話して物事の処理をサポートするツール
      • 様々なデバイスから呼び出すことができる
    • GoogleHome
      • Googleアシスタントを搭載したスマートスピーカー
    • Actions on Google
      • Googleアシスタントから呼び出されるアプリケーション
      • 呼び出すデバイスにはサードパーティのアプリケーションをインストールしなくても使える
      • 音声認識音声合成Googleアシスタントが担当してくれる
        • アプリケーションはテキスト処理だけでいい
    • Actions on Googleの呼び出しフローの説明
  • Dialogflow
    • ユーザーの入力とIntentの対応をGUIで設定できる
    • 形態素解析をサービス側でやってくれる
      • 日本語にも対応している
    • ユーザー入力とインテントへの割り振り方を履歴から学習させられる
    • インテントを設定して使う
    • User saysにはなるべくたくさん書いたほうがいい
    • Actionは日本語使わずアスキーにしたほうがいいよ!
    • エンティティをうまくつかってあげると、少ないパターンでいろいろな会話に対応させることができる
    • 質問:マクドナルドの「マック」と、Appleの「マック」でエンティティで別の認識と扱えるか?
      • →コンテキストを切り替えないと無理

Dialogflow + 赤外線で家電管理

  • fishさん
  • Google Homeで(声で)家電を操作したい!
  • 持っているもので実現したい
    • Google home
    • エアコンなど普通の家電
      • 赤外線をなんとかすればできそう
    • IRKit(もらいもの)
      • 赤外線信号の送受信ができる
  • GoogleHome+Dialogflow+バックエンド(Cloudfunctions)+IRKit
  • IRKitはAPIを呼び出して操作できる
  • DialogflowはLINEやFacebookなど、他のサービスにつなげるのが簡単でよかった
    • 今回はActions on Googleに接続
  • CloudFunctionsからIRKitのAPIを呼び出す(HTTP)
  • おまけ
    • エンティティを楽に作れるライブラリ
      • CSVファイルをアップロードしてエンティティを登録できるようにした
      • 近いうちにPyPIに登録します!

RasPi + Assistant SDK + AoGで3Dプリンター管理~Dialogflowで非同期同期やれるかな~

  • soundTrickerさん
  • 会社にいるボットの話
    • 3DプリンタにつながっているRaspiでボットが動いてる
    • 3Dプリンタを監視しているボット
      • 進捗自動通知とか
    • Dialogflowでやっている
      • Slackで動かしているが自然言語処理を使っている
        • 新規の参入者や非エンジニアにはコマンドを憶えるよりも使いやすい
    • CloudFunctionsからイントラ内にあるRaspiのサーバーにpushしている
      • GCPのCloud Pub/Subを使っている
  • SlackボットからAoGへ
    • Pub/Subを使うと非同期になってしまうので、GoogleHomeで扱えない
      • →無理やり同期化する必要がある
    • 無理やり同期化するには
      • DialogflowのWebhook同期処理中で非同期の応答を待つ
      • Webhookは5秒でタイムアウトするので結構失敗する
    • Dialogflowの色とカラーコード
      • 定義済みのEntityとしてsys.colorがあるが、これは追加、削除できないので、使いづらい
        • 金色とかなかった
    • VUIは長い返答は嫌われる
    • VUIは返答の仕方によっては気持ち悪い感じになる
      • 方言なんかは変な発音になったりする
    • アプリケーションを抜けるデザイン
      • 終了方法がわかりづらいので、いろいろな言葉をサポートしておいたほうがよい
  • 時間があったら、自分でGoogleHomeを作る!話をします
    • AIY Projects
    • VoiceKIT
    • Assistant SDK
      • Google Assistantをデバイスに入れるためのSDK
      • 現状、日本語を扱えない

SUUMOとホットペッパーグルメにAoGを使ってローンチしてみた ?デモもあるよ!?

  • 株式会社リクルート住まいカンパニー 嶋田達哉さん

    • SUUMOのボットと会話して物件情報を教えてくれるサービス(Action on Google)
    • WebhookでAWS Lambdaを使っている
      • JPリージョンにCloudFunctionが無くてLambdaのほうが応答速かった
    • 開発で苦労した点
      • Fullfillment webhookに返すJSONフォーマットがドキュメントを見てもわかりづらく、少し違うだけでもエラーになって、原因がわかりづらい
    • Dialogflowのコンテキスト
      • コンテキストで複数パラメータを扱う場合
        • API callしない分、レスポンスが速い
        • 複雑なものはWebhook側で対応したほうがよさそう
  • 株式会社リクルートライフスタイル/株式会社オートマタ 荒川裕紀さん

    • ホットペッパーグルメのボット
      • シーン(日時、場所、人数など)を伝えるとオススメを教えてくれる
      • 金額は選択肢からえらぶ
      • ルーセルで結果を表示
    • デザイン/ペルソナ
    • 気づき
      • 長文はよく拾ってくれる
      • Speech to Textが意図しない言葉を拾ってくる
        • 4人→「余人」
      • 4文字以上の言葉をなるべくユーザーに言ってもらえるようにしたほうがよいかもしれない
      • 対話なので、ユーザーが次に何をしたらいいのかわかるように、文章で説明するのは大切
      • ngrok便利だった

Dialogflow + MAGELLAN BLOCKSで商品のロケーション案内するよ

行き先 確認エージェントを最小手で作る

  • a2cさん
  • GoogleHomeを使って何を作ろうか
    • 行き先確認のアプリを作る
  • IFTTTでAoGから一発入力
    • 慣れると何度もやり取りするのは面倒くさいので一発入力にしたかった
    • IFTTTからSpreadsheetへ書き出し
    • SpreadsheetではAppsScriptで処理
      • 書いたコードは数行、Dialogflowのwebhookの結果のJSONを返すもの
  • つらかった点
    • IFTTTのAPIがなくて画面から全部入力することになった
    • IFTTTにエンティティ相当のものがないので、表現ブレは全部ルールとしてIFTTTに全部入れないといけなかった
  • ヘルプの出し方は工夫した
    • 入力ミスの際にヘルプを返すのがよい
  • 終了の仕方も工夫した
    • 終了の仕方はわかりづらいので、とにかくたくさんキーワードを入れておくのが大切