Alexaスキルは、ノンコーディングで作れるサービスが多数あるので サクっと作成できます。
さらに Unity と連携させると、、、
「Alexa、ダンスを開始して」で、ユニティちゃんが踊りだす みたいなのが簡単に作れます。
ということで、お手軽にAlexaスキルと Unityを連携する方法をまとめました。
Alexaスキル作成サービス

他にもたくさんサービスがありますが、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 は簡単に会話を作れるので、好きに作りこんでみてください。
いちおう、こんな感じのが作れます。
- スキルが開始されると Success の値を確認
- イエスなら値を変更、ノーなら会話終了
- 変更内容を伝える

Alexa の会話で 変数の値を使うには
if blockで 変数の分岐をする場合は
Alexa スキル の テスト
Prototype タブに切り替えると PC上でテストできます。
Start Test を押すとチャットで会話がはじまります。
味気ないですが、一応会話らしきもので Unity と連携できました。
Alexaデバイスとリンクしてビルドすれば、ちゃんと会話してくれます。