一畳のくつろぎタイム

このブログでは紹介する商品画像をAmazonアソシエイトより借りています。画像やリンクにはアフィリエイト広告が含まれる事があります

2019年2月25日月曜日

Googleアシスタントアプリのメディアファイル置き場を0円で解決する

Googleアシスタント公式できることの、最新のサービスの所の下の方に出てるので探してみて!


Googleアシスタントアプリのしずくクロックを作るにあたって、プログラム実行部分はFirebaseではなく自前で用意した。アシスタントアプリはJSONテキストを戻りとするが、 声のデータ(oggファイルやmp3ファイル)はHTMLなどで画像を参照するのと同等で、URLの記述をし、アシスタント側(HOMEやスマホ)がJSONの結果をもとに取得に行く。
はじめは同じサーバーから取得させていたが、この静的データは同じWebサーバーにおいてある必要はない。

メディアを提供するWebサーバー側には要件はあって
*SSLに対応している事

おそらくこれのみだと思う。


0円でファイル置けないか企む

ファイル置き場を考えた時に、コストの面から考えていくと究極は0円サーバーになる。
無料のホームページスペースを提供してくれる業者は意外に多いが、httpsに対応する/しないで有料/無料の差別化を図っているように見受けられる。
そのためXServerのXFreeや、NetOwlのStarServerフリーなどの0円サーバは利用できない。

 

Googleドライブで企む

色々調べてみると、WordPressの画像をGooglePhotoから取得したり、Googleドライブから取得している方の記事が見受けられ、アシスタントアプリからGoogleドライブ取得を試したところ画像に関しては問題なく取得できた。

GooglePhotoやドライブはSSLの要件を満たす。

GUIから1つ1つの画像の共有リンクを取得するのは大変手間なので、以下のrubyのプログラムを利用させていただいたが、如何せん古く。動かすのに1日かかってしまった。
https://github.com/morimorihoge/google-drive-permission-search
OAuthのために、GUIのブラウザ環境が必要だったりと色々ハマりどころたくさん。

音声取得を実際にGoogleアシスタントに組み込んでわかったことは、画像は大丈夫だが、Googleドライブに置いた音声のmp3ファイルやoggファイルの共有リンクは、
GoogleアシスタントのSSMLからは参照できないということだった。
丸1日かけて多数の音声ファイルへの共有リンクを作ったが、rubyの環境周りの設定は勉強になったので決して無駄ではないが、やりたいことは叶わなかった。

AmazonS3とかに置く事や、SSL可能な格安レンタルサーバーを検討したが、
ふと1ファイルDropboxに置いて、共有リンクを手動で作りGoogleアシスタントに組み込んでみたら、何も問題なく画像も音も再生できてしまったので、ケチなのでDropboxでやり直す。

DropBoxで企む

共有リンク例
DropboxのWebなどで操作して、作成された共有リンクをコピーすると上記のような形式で得られる。このリンクそのままではDropboxのweb経由でファイルを取得する事になる。

このよくわからない文字列と/のあとのファイル名セットでファイルを表現しているらしく。

上の直ダウンリンク例
上記のように書き換えることで、hoge.mp3自体をaudio/mp3のデータとして取得できた。

こちらの方が作ってくれたPHP関数群(クラスの中のメソッド)を利用して共有リンクの作成と取得を同時に行う。
https://qiita.com/tksnino/items/c39b509494cc7f05954a 
感謝!

Rubyより慣れてるPHPだったので、サクッと動いて欲しい共有リンクのリストが取得でき、直ダウンリンクも一緒に作るようにできたので、やりたいことは叶った。

これで、アシスタントが使用する画像や音声はプログラム本体のWebサーバーから分離できたし、DropboxのGUIから管理できるようになったので、色々と便利になった。

DropBoxはいろいろ神だと思ってます。むろんGoogleドライブもOneDriveも神です。
https://www.dropbox.com/help/security/banned-links
↑に制限について書かれており、 1日で20Gbyteまで、100000回ダウンロードなので無視していいレベル。そんなにアクセスされる事は考えられないが、もしもあるならそのときに他を考えればよい。

これからDropbox利用される方が登録時に容量が+500Mされるリンクを貼っときます。
https://db.tt/sv6Ux4Yk
このリンクで取得するとあなたと私に容量追加されます。お互いに損はありません。
今となっては2ギガは少なめですが、 今回の用途ではGoogleDriveではダメでした。