Alexa虎の巻(7)スロットを追加して処理を分岐する(1)

記事タイトルとURLをコピーする

Alexa虎の巻(7)スロットを追加して処理を分岐する(1)

 こんにちは、サーバーワークスのこけしの人、坂本(@t_sakam)です。

 さて、前回の「Alexa虎の巻」の第6回目では「豆知識スキル」にカスタムインテントを追加して、ユーザーが「こけし」と言ったときは、こけしの豆知識を返してくれるようにスキルの動きを変更しました。
 
 今回も「豆知識スキル」を使います。せっかく前回カスタムインテントを追加したものの、スキルの動きがちょっと不自然になってしまっているので、ここでいったんスキルの動きを整理して、手直ししていきたいと思います。

 まずは、スキルを起動した時のLaunchRequestの時の動きを直したいと思います。文言を修正して「こんにちは。豆知識スキルへようこそ。宇宙とこけしの豆知識を聞くことができます。どちらの豆知識を聞きますか?」と変更したいと思います。スキルを呼び出したときにAlexaが突然宇宙の豆知識を話していたので、それをやめて宇宙の豆知識かこけしの豆知識かを選べるようにします。

 そして、前回せっかく作成した「GetNewKokeshiIntent」は削除したいと思います。今後はユーザーが「宇宙」と言った時は「宇宙の豆知識」を、ユーザーが「こけし」と言った時は「こけしの豆知識」をと「GetNewFactIntentHandler」の中で処理を分岐することで対応したいと思います。
 今回は「宇宙」と「こけし」の言葉のどちらを言われても「GetNewFactIntent」として処理されるように、スロットというものを使いたいと思います。
 スロットはプログラミング用語で言うと変数に当たるものになるかと思います。このスロットに入ってくる値が「宇宙」なのか「こけし」なのかを確認して、処理を分岐するようにしていきます。※今回も内容が少し長くなるため、2回に分けてスキルを変更していきます。

1. 「豆知識スキル」のトップページ

 Alexa開発者コンソールの「豆知識スキル」のトップページを表示し、画面上メニューから「コードエディタ」を選択します。

Alexa虎の巻(7)キャプチャ001

2. コードエディタ

 まずは「index.js」ファイルを編集し「LaunchRequestHandler」を追加してスキルを呼び出した時の処理を「GetNewFactIntent」と分けます。

Alexa虎の巻(7)キャプチャ002

3. addRequestHandlersで「LaunchRequestHandler」を追加

 addRequestHandlersで「LaunchRequestHandler」を追加します。画面上の「保存」ボタンを押します。※addRequestHandlersについては、前回の記事をご確認ください。

Alexa虎の巻(7)キャプチャ003

4. 「languageStrings.js」ファイルを編集

 次は「languageStrings.js」ファイルを編集して、文言を修正し、画面上の「保存」ボタンを押します。

Alexa虎の巻(7)キャプチャ004

5. デプロイ

 2ファイルとも編集できたら、画面上の「デプロイ」ボタンを押します。

Alexa虎の巻(7)キャプチャ005

6. インテント

 画面左メニューから「インテント」を選択し、画面下の「GetNewFactIntent」リンクをクリックします。

Alexa虎の巻(7)キャプチャ006

7. 一括編集

 一度サンプル発話を全部消してまっさらにしたいと思います。画面中央右の「一括編集」リンクを押します。

Alexa虎の巻(7)キャプチャ007

8. インテントのサンプルを一括編集

 「インテントのサンプルを一括編集」画面が表示されました。

Alexa虎の巻(7)キャプチャ008

9. サンプル発話を削除

 サンプル発話を全選択して消します。「送信」ボタンを押します。

Alexa虎の巻(7)キャプチャ009

10. 削除完了

 サンプル発話が削除できました。

Alexa虎の巻(7)キャプチャ010

11. スロットを追加する

 同じ画面のまま、下にスクロールすると「インテントスロット」という箇所があります。「名前」項目に「FactIntentSlot」と入力し、右にある「+」ボタンを押します。

Alexa虎の巻(7)キャプチャ011

12. 追加完了

 「FactIntentSlot」が追加できました。

Alexa虎の巻(7)キャプチャ012

13. スロットタイプを追加

 画面右メニューから「アセット」>「スロットタイプ」を選択します。「Create a custom slot type with values」と「Alexaのビルトインライブラリから既存のスロットタイプを使用」の2つから選ぶ必要がありますが、今回は「Create a custom slot type with values」を選択して「Next」ボタンを押します。

 「Alexaのビルトインライブラリから既存のスロットタイプを使用」の方についても簡単に触れておきます。既存のスロットタイプとは、Amazonが事前に用意してくれているスロットタイプです。日付や数字、色の名前(パブリックベータ)や動物の名前(パブリックベータ)など一般的な名称に関してAmazonが既に用意してくれてます。どのようなスロットタイプが存在するかは以下のページをご確認ください。

スロットタイプリファレンス
https://developer.amazon.com/ja-JP/docs/alexa/custom-skills/slot-type-reference.html

Alexa虎の巻(7)キャプチャ013

14. スロット値「宇宙」を追加

 スロット値に「宇宙」と入力し「+」ボタンを押します。

Alexa虎の巻(7)キャプチャ014

15. スロット値「こけし」を追加

 スロット値に「こけし」と入力し「+」ボタンを押します。

Alexa虎の巻(7)キャプチャ015

16. 追加完了

 スロット値が追加できました。

Alexa虎の巻(7)キャプチャ016

17. 確認

 画面右メニューから「アセット」>「スロットタイプ」を選択します。「FactSlotType」のスロット値が「2」となっていることが確認できます。

Alexa虎の巻(7)キャプチャ017

18. FactIntentSlotにFactSlotTypeを設定

 また、画面左メニューから「インテント」を選択し、画面下の「GetNewFactIntent」リンクをクリックします。画面を下にスクロールします。「FactIntentSlot」リンクのの右側にスロットタイプを指定する箇所があるので「FactSlotType」を選びます。

Alexa虎の巻(7)キャプチャ018

19. 設定完了

 「FactIntentSlot」に「FactSlotType」を設定できました。

Alexa虎の巻(7)キャプチャ019

20. 確認

 また、画面左メニューから「インテント」を選択します。「GetNewFactIntent」のスロットが「1」となっていることを確認します。

 手順が長くなってきたのと、キリがいいところなので、今回はここで終了です。

Alexa虎の巻(7)キャプチャ020

まとめ

 今回はスキルを起動した時のLaunchRequestの時の動きを直し、「GetNewFactIntent」にスロットを追加しました。まだまだ手順としては途中ではありますが、スロット値が「宇宙」と「こけし」であることから、スロットって変数みたいな感じなのかな? ということをなんとなく感じていただけたのではないかと思います。

 次回も引き続き、同じような感じで続きを説明していきたいと思いますので、お楽しみに! 

 いや〜、「Alexa」って本当にいいものですね!