2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

お手軽にAlexaスキルと Unity を連携させる (VoiceFlow)

Last updated at Posted at 2020-02-14

Alexaスキルは、ノンコーディングで作れるサービスが多数あるので サクっと作成できます。

さらに Unity と連携させると、、、
「Alexa、ダンスを開始して」で、ユニティちゃんが踊りだす みたいなのが簡単に作れます。

ということで、お手軽にAlexaスキルと Unityを連携する方法をまとめました。

Alexaスキル作成サービス

スクリーンショット 2020-02-14 18.34.05.png 無料で始められる [VoiceFlow](https://www.voiceflow.com/) を使います。

他にもたくさんサービスがありますが、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 からラインを繋げます。
スクリーンショット 2020-02-14 19.03.03.png

Integration Block を選択し、Custom API を選びます。
リクエスト内容は下記のように設定します。
Request URL には、上で設定した外部公開サーバーのURLを指定してください。
スクリーンショット 2020-02-14 19.14.13.png

GetDataリクエストの場合、Params の Value は空でもいいはずなのですが、何故か テスト時にレスポンスが返ってこないので、適当に何か入れておきます。

Test Request を押すと Unity からのレスポンスを確認できます。
スクリーンショット 2020-02-14 19.22.33.png

MyData クラス の success の値が返ってきました。

ちなみに success の横のクリップボードを押すと、変数の参照をコピーできます。
Alexaスキル内 の変数として格納したい時に使います。
スクリーンショット 2020-02-14 19.30.11.png

Integration Block で値を送る

次にParams を変更して SetData リクエストを送ってみます。
スクリーンショット 2020-02-14 19.38.00.png
スクリーンショット 2020-02-14 19.48.25.png
ちゃんと Unity に届きました。

会話を作りこむ

ここからは Unity 連携と関係なくなってくるので、割愛します。
VoiceFlow は簡単に会話を作れるので、好きに作りこんでみてください。

いちおう、こんな感じのが作れます。

  1. スキルが開始されると Success の値を確認
  2. イエスなら値を変更、ノーなら会話終了
  3. 変更内容を伝える
スクリーンショット 2020-02-14 20.19.22.png

Alexa の会話で 変数の値を使うには

{success} のように {} で囲います。
スクリーンショット 2020-02-14 20.33.20.png

if blockで 変数の分岐をする場合は

右辺のタイプをExpressionにします。
スクリーンショット 2020-02-14 20.47.36.png

Alexa スキル の テスト

Prototype タブに切り替えると PC上でテストできます。
スクリーンショット 2020-02-14 20.32.58.png

Start Test を押すとチャットで会話がはじまります。
スクリーンショット 2020-02-14 20.32.25.png
味気ないですが、一応会話らしきもので Unity と連携できました。

Alexaデバイスとリンクしてビルドすれば、ちゃんと会話してくれます。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?