[日本語Alexa] Alexaスキル「ビンゴ大会」を公開しました。
1 はじめに
オフィスの同僚から「ビンゴができるスキルがあるといいよね〜」ってお話を頂き、とりあえず作ってみました。土曜日に審査に提出して、今日、月曜日公開となりました。
「審査」めっちゃ早いです!
最初に、操作しているようすを御覧ください。かなり寂しいですが一人でもビンゴできます。
2 使用方法
(1) 呼出名
呼出名は「ビンゴ大会」です。
「アレクサ、ビンゴ大会を開いて」「アレクサ、ビンゴ大会をスタート」で起動できます。
(2) インテント
インテントは、以下の3つです。
- StartIntent(次の数字を出す)
- PreviousIntent(今まで出た数字を読み上げる)
- InitIntent(ゲームを初期化する)
使用方法としては、「ビンゴスタート」とか「次行ってみよー」って言って、1つづつ数字を出していきます。必要があれば「出た数を教えて」とか「読み上げて」と言う事で、それまでに出た数字を読み上げてくれます。
ゲームは、スキルが終了しても継続されていますので、セッションが止まってしまったら、「アレクサ、ビンゴ大会で次行ってみよー」とかで、再び起動して続きを行えます。
出た数字を全部クリアして、最初からゲームを始める場合は「初期化して」と言ってください。
3 ドラム音
数が出る前のドラム・シンバルの音は、AMAZONでAlexa用に提供されているサウンドライブラリーです。
ライセンスを気にする必要もなく。 また、Audioタグに指定するための要件(サンプリング周波数、サンプルレートなど)への適合や、ホストするための場所を考える必要が全く無いので、非常に手軽に利用できます。
5種類のAudioデータをランダムに使用しています。
function random(list) { const index = Math.floor( Math.random() * list.length); return list[index]; } function drumMessage() { const drums = [ "<audio src='https://s3.amazonaws.com/ask-soundlibrary/musical/amzn_sfx_trumpet_bugle_03.mp3'/>", "<audio src='https://s3.amazonaws.com/ask-soundlibrary/musical/amzn_sfx_drum_and_cymbal_01.mp3'/>", "<audio src='https://s3.amazonaws.com/ask-soundlibrary/musical/amzn_sfx_drum_and_cymbal_02.mp3'/>", "<audio src='https://s3.amazonaws.com/ask-soundlibrary/musical/amzn_sfx_drum_comedy_01.mp3'/>", "<audio src='https://s3.amazonaws.com/ask-soundlibrary/musical/amzn_sfx_drum_comedy_02.mp3'/>" ]; return random(drums); }
4 Speechcon
数を出す前の「やっほう」とか「てへ」っていうのは、Speechconを使用しています。
一番、ボキャブラリが欲しい場面なので、60種類ぐらい定義して、ランダムで使用しています。ちょっと使っただけでば、全部を聴くのは難しいでしょう。
function exclamationMessage() { const exclamations = [ '<say-as interpret-as="interjection">やっほう</say-as>', '<say-as interpret-as="interjection">むふふ</say-as>', '<say-as interpret-as="interjection">あいたた</say-as>', '<say-as interpret-as="interjection">あいたたた</say-as>', '<say-as interpret-as="interjection">あちち</say-as>', // *** 略 *** '<say-as interpret-as="interjection">おっと</say-as>', '<say-as interpret-as="interjection">おめでとう</say-as>', '<say-as interpret-as="interjection">お疲れ様です</say-as>', '<say-as interpret-as="interjection">きゃ〜</say-as>', '<say-as interpret-as="interjection">わ〜い</say-as>', '<say-as interpret-as="interjection">わぁ</say-as>', '<say-as interpret-as="interjection">わあーっ</say-as>', '<say-as interpret-as="interjection">んーと</say-as>', ]; return random(exclamations); }
3 最後に
まだ、非常に限られた機能なので、もう少し機能を追加してみたいと考えています。
- 「ユーザー: xx番は出てますか?」 <= 出た数の確認
- 「ユーザー: もう一回お願い」 <= 最後に出た数をもう一度聞く
- 「アレクサ: まだ、リーチじゃないんですか?」「アレクサ: まだ、揃ってないんですか?」<=Alexaからの煽り
大したものではありませんが、一応コードも置きました。何かの参考になれば幸いです。