投稿

ラベル(Google Home)が付いた投稿を表示しています

Dialogflow から webhook される php を Google API v2 に対応させる

イメージ
Dialogflow から google api v2 に対応しろとのお知らせが表示されるので、webhook される php を Google API v2 に対応させる 命令の流れをおさらい まずは、どういう仕組だったかを忘れていたのでメモ アプリに入って、命令を行うと、Intent にある Action and parameters の値を含む json が Fulfillment に指定した url へポストされるので、応答メッセージを含む json を返す という仕組み API の切り替え google api v2 対応への切り替え(Dialogflow側)は、スイッチを切り替えるだけ api 切り替え後の web 側変更 API を切り替えると、送られてくる json の内容が変わります。また、応答メッセージを埋め込む json の形式も変わります。なので「そのままだと アプリから応答がありません」みたいな形になります api v1 で post される json api v2 で post される json php の場合 $data = file_get_contents("php://input"); // 取得 $jsonArray = json_decode($data, true); // json -> 配列 // v1 action取得 $action = $jsonArray["result"]["action"]; // v2 action取得 $action = $jsonArray["queryResult"]["action"]; な感じに取得位置を変更します 送られてきたアクションに対する応答は、 こちら のような形で speech と displayText で返していたものを fulfillmentText というキーに変更します ※面倒なので v1 の応答に fulfillmentText を追加して対応したらうまく動きませんでした 端的に書くと // api v1 応答 echo json_encode(array( "spe...

Google Assistant (Home) + ifttt で $ を認識しづらい

イメージ
ifttt の Webhookを用いて、$文字を自身のメモに追加しようとしたが、単語を認識できなかったりする  「 共有メモに $ を追加 」 - なかなか認識しない  「 共有メモに追加 $ 」 - ほぼ認識する 1. の場合、文章の区切りがどこになるのか認識しづらい 特に複数の単語で構成された文字列は、 $ に当たる単語をひとつだけ抜き出してしまい、残りがマッチしないため、お役に立てませんとなってしまったりする → 「 共有メモに ホット ケーキ を追加 」 2. の場合、先頭がマッチすれば残りは全て $ となり、スペースが含まれたりするもののほぼ認識する

Amazon Echo 日本発売(米国での発売時期)

Amazon Echo が日本国内でも発売されたが、本国での発売時期は歴史が古いだけあってかなり前だったりする まぁ、ハードウェアよりソフトウェアが要なので、それほど気にしなくていいのかもしれないけど、サポート終了の時期が気になりますな 国内で発売された Amazon Echo は、デザインから米国の Echo 2 と思われるが、色の数などが本国と違っている Amazon Echo 米国発売時期 タイプ 米国発売 Echo Dot 2015/06/23 Echo (2nd gen) 2017/10/31 Echo Plus 2017/10/31 ちなみに後発の Google Home は タイプ 米国発売 Google Home 2016/11/04 Google Home Mini 2017/10/19

Dialogflow + Actions on Google で作成したアプリが「Sorry, this action is not available in simulation」

イメージ
Dialogflow + Actions on Google で作成したアプリがいつの間にか呼び出せなくなっていて、エミュレータから呼び出しても「Sorry, this action is not available in simulation」と表示されて起動しない エミュレータ画面から、CHANGE VERSION を押して、バージョンを更新する

Raspberry Pi に google-home-notifier を入れた時に躓いたメモ

Raspberry Pi に google-home-notifier を入れた時にいろいろと躓いたメモ >> 素のラズパイへ入れようとしました(一部、ディレクトリ名は伏せ字です) 【先に結論】 node.js と npm と google-home-notifier を入れる前にやっておくべき事 sudo ではなく su や sudo -s で root になっておくとトラブル少ないかも 下記が入っていない場合は、入れておく # apt-get install git # apt-get install libavahi-compat-libdnssd-dev これらをインストールしていないと、下記のような目にあいます (別の素のラズパイで、上記をインストールしてからは問題なしでした) gitが入っていなければ # apt-get install git こちら を参考に node.js と npm をインストール # apt-get update # apt-get install nodejs npm # npm cache clean # npm install npm n -g ここで ssh へ入り直したほうがよい?? # n stable 途中で README がねー とか WARN が2つほど出ますが無視(して問題無さそう) こちら  や こちら を参考に google-home-notifier をインストール としたわけですが # npm install でエラーがドバーッっと >>>>> /google-home-notifier# npm install npm WARN package.json google-home-notifier@1.2.0 No repository field. / > mdns@2.3.3 install /hogehoge/google-home-notifier/node_modules/mdns > node-gyp rebuild make: Entering directory '/hogehoge/google-home-notifier/node_modules/mdn...

Google Home(Assistant) での独自コマンド所感

Google Home(Assistant) で独自コマンドを色々作ってみた所感 一発物の命令と応答 「ok,google テレビつけて」みたいなの IFTTT で this に Google Assistant that に Webhook を選択するだけ、だが this→thatが一方通行なため、Web等からのレスポンスを Assistant へ反映できない 具体的には this の Google Assistant で文字や数値を入れるタイプを選択した場合 $ を入れた所が、変化する場所(例「お父さんに $ とメールして」)で、レスポンス(例「お父さんに $ とメールしました」)には $ が使えるのみ 一方 that の Webhook では $ → {{TextField}} という置換文字を post したりして Webへ送り出すことは出来る。ただし、ここでのWebレスポンスを先程の、レスポンスに使うことが出来ない チャット形式のアプリ型 「ok,google リモコンにつないで」みたいなので、リモコンアプリに接続(そっから先は、アプリから抜けるまで、アプリとの対話になる) 詳細な流れは コチラ 上記だと、レスポンスを変えられないので物足りない 下記だと、大掛かりすぎるというかチャットを抜けるまで対象アプリとの会話になり、自然終了しない ちなみに連携サービス IFTTT, Microsoft Flow, Zaiper のうち、Google Assistant に対応するのは今のところ IFTTT のみ これ IFTTTができてるんなら、直接 Google Assistant とやり取りできるんじゃないかと思うのだが、誰かおせーてー

IFTTT で "Push Notifications failed to update" と表示されて通知をオフにできない

イメージ
IFTTT で Applet の通知をオフ or オン しようとすると "Push Notifications failed to update" とポップアップ表示されて通知を変更できない Applet を turned off で無効化した後、設定変更を行う

IFTTTで Maker (Maker Channel)が見つからない

イメージ
IFTTTで Maker (Maker Channel) を検索しても表示されない → Webhooks を使え (配置などは同じなので、Maker Channel を例にしたサイトを参考に利用できます) https://ifttt.com/maker のリンクも  https://ifttt.com/maker_webhooks へ飛ばされます

Google Home の設定に必要なアプリが動作する Android および iOS バージョン

Google Home (mini含む) の設定に必要なアプリケーションが動作する Android および iOS バージョン が見つけられにくかったのでメモ PCではいずれも設定不可、せめてChromeブラウザ拡張でできるようになれば便利だけど、初期の Wi-Fi 接続設定が困難ですな --> OS バージョン Android 4.4 以降 iOS 9.1+ 以上 Windows 設定不可 Mac OSX 設定不可 【参考】 Google Home および Google Home Mini を使用するための OS の最小要件

Google Home の独自コマンドを PHP から応答

イメージ
Google Home(Assistant) の独自コマンドを PHP(Webサーバ) から応答させたときのメモ 【注意】 ここで使用する独自コマンドは、Google Home から独自コマンドが搭載された自作アプリへ接続して、会話を行うような利用方法です。ok,google に続いて一発ものの命令を行う場合 IFTTT を利用するほうが容易です 基本的な流れは こちら を参考にさせていただきました 上記は例が python + Flask なので既存のサーバへ受け渡すのとはちょっと違ったのでPHPの場合を捕捉 大まかな流れ等 DialogFlow のアカウントを有効にするGoogleサインアップがフツーかもGoogle傘下なので Agentを作成(この中に intent を複数作成していく) Intentを作成(音声命令 = intent な感じです) 解説に有る Fulfillment のチェックボックスが見つからないのは、Fulfillment が定義されていないからです。Fulfillmentを定義すると出現します Entities は音声命令を節毎に分離して汎用性を高められます 「 テレビ の 電源   入れて 」の各節を TV とか パワー とか オンして  みたいなゆらぎを入れてクロスでマッチしてくれたりします(後で intent に組み込めるのでテストでは飛ばしてもOK) Fulfillment で呼び出す URLを指定 ここのURLは Agentと対になり Intent の Action が送られてきますので、URLが違えば Agent も違うという事になる Intent が音声等で選択されると Fulfillment で指定されたURLへ json形式のデータが送られてきて、レスポンスも json形式で返すことになります PHP の場合、 こちら の 形式で応答(Action の sayHello が該当の箇所) また、送られてくる json は、DialogFlowの右側にある「try it now」からコマンドを入力して、一番下の show json で確認できるので、ファイルに保存して 上の $update_response = file_get_contents ...