Alexaスキルは、ノンコーディングで作れるサービスが多数あるので サクっと作成できます。
さらに Unity と連携させると、、、
「Alexa、ダンスを開始して」で、ユニティちゃんが踊りだす みたいなのが簡単に作れます。
ということで、お手軽にAlexaスキルと Unityを連携する方法をまとめました。
Alexaスキル作成サービス
無料で始められる VoiceFlow を使います。
他にもたくさんサービスがありますが、VoiceFlow は多機能で使いやすいUIが魅力です。
比較的新しのでたまにおかしな挙動もありますが、アップデートで徐々に改善されてきています。
Unityで WebAPI を準備する
Alexa には WebAPI と連携する機能があるので、まず Unityで WebAPIを作ります。
HTTPサーバーを作成する
下記の Unity HTTPサーバーを作成し、再生しておきます。
前回記事:UnityでマルチスレッドなHTTPサーバー
GetDataというリクエストがきたら、MyDataの値を返す。
SetDataというリクエストがきたら、MyDataの値を変更して、値を返す。
という簡単なAPIです。
HTTPサーバーを外部公開する
Alexaスキルは、内部サーバーとは通信できない仕様なので、ngrok などで外部公開させておきます。
参考:【3分で出来る】ngrokでデプロイをしてみよう!
ngrokは 起動するたびに URLがランダムに変わってしまうので、有料プランで固定ドメインにすると楽ちんです。
参考:ngrokのドメイン名を固定した時の「Bad Request」エラーを回避する
VoiceFlow で Alexaスキルを作る
VoiceFlow は、Integration Block でカスタムAPI連携ができるので、これを使います。
適当なプロジェクトを作って、Unity からのレスポンスを取得できるか試します。
Integration Block でレスポンスを取得する
Integration Blockを配置し、Start からラインを繋げます。
Integration Block を選択し、Custom API を選びます。
リクエスト内容は下記のように設定します。
Request URL には、上で設定した外部公開サーバーのURLを指定してください。
GetDataリクエストの場合、Params の Value は空でもいいはずなのですが、何故か テスト時にレスポンスが返ってこないので、適当に何か入れておきます。
Test Request を押すと Unity からのレスポンスを確認できます。
MyData クラス の success の値が返ってきました。
ちなみに success の横のクリップボードを押すと、変数の参照をコピーできます。
Alexaスキル内 の変数として格納したい時に使います。
Integration Block で値を送る
次にParams を変更して SetData リクエストを送ってみます。
ちゃんと Unity に届きました。
会話を作りこむ
ここからは Unity 連携と関係なくなってくるので、割愛します。
VoiceFlow は簡単に会話を作れるので、好きに作りこんでみてください。
いちおう、こんな感じのが作れます。
Alexa の会話で 変数の値を使うには
if blockで 変数の分岐をする場合は
Alexa スキル の テスト
Prototype タブに切り替えると PC上でテストできます。
Start Test を押すとチャットで会話がはじまります。
味気ないですが、一応会話らしきもので Unity と連携できました。
Alexaデバイスとリンクしてビルドすれば、ちゃんと会話してくれます。
Comments