Voiceflow夏休みAdvent Calendar、遅ればせながら8日目の穴埋めです。
5日目で「重複しないランダムな数字を取得したい」方法をご紹介しました。何かしらのランダムな処理を行いたい場合は、他にも色々方法がありますので、ご紹介します。
Random Block
Random Blockはこんな感じで初期状態だと分岐がない状態です"Add Path"をクリックします。
すると2つに分岐します。どんどん"Add Path"を追加します。
こんな感じで分岐がどんどん増えていきます。
それぞれにSpeak Blockをつなげます。メッセージはこういうふうにそれぞれの分岐で数字を変えておきます。
Interactionを使って、繰り返すかの確認を追加します。「はい」の場合は再度Random Blockに戻るようにします。
ではテストしてみます。
数字がランダムに並んでいるのがわかるかと思います。ただ、重複してる箇所がいくつかありますね。重複しないようにするには、Random Blockにある"No Duplicates"にチェックを入れます。
再度テストしてみます。
今回は分岐を5つ用意したので、最初の5回で重複していないことがわかりますでしょうか?一巡すると再度また繰り返しになり次の5回でも重複していませんね。
こんな感じで、Random Blockはシンプルに分岐だけを作るためのブロックになっています。特に変数も使わずに喋らせる内容をランダムにすることができます。
ただし、喋らせる内容だけをランダムにするならSpeak Blockだけでできます。
Speak Block
Speak Blockの一番下にある"Output Random Entry"にチェックを入れると、"Add Speech"や"Add Audio"で追加したそれぞれをランダムで発話/再生させることができます。
めちゃめちゃブロックとしてはシンプルになります。ただしこの場合は、重複しないようにすることはできません。
Random Block+変数
最初の2つの例は、どちらも変数を使わずに、Speakで発話させる内容を直接変えていました。シンプルでわかりやすいのですが、そこから応用を効かせることはできません。そこでRandom Blockに変数を組み合わせて、少し応用の幅を持たせてみましょう。
変数を作成します。
RandomのあとにSet Blockをおいて、変数をそれぞれセットします。
Speak Blockをつなげて、変数を発話で喋らせます。
この方法だと、変数を別の目的で使うことも可能ですねー。
ユースケースに合わせて最適な方法を選択すればよいかと思いますが、色々やり方があって迷うかもしれませんね。個人的に考えるユースケースはこんな感じかなぁと思います。
- Speak Block
- ランダムの数が少ない場合
- 発話のバリエーションを増やすだけで、複雑な判断が不要で、重複しても問題ない場合
- 例えば、いつも同じ挨拶ばかりだとロボットっぽくなるので「こんにちは」「お元気ですか」みたいに同じ意味だけど言い方だけを変えたい場合など
- Random Block
- ランダムの数が少ない場合
- 発話の内容を変えたい場合、複雑な判断は不要だけど、重複チェックがほしい場合
- 例えば、豆知識みたいに話す内容そのものを変えたい場合など
- Random Block+変数
- ランダムの数が少ない場合
- 発話内容以外にも変えたい場合、複雑な判断は不要だけど、重複チェックがほしい場合
- 発話以外の用途でランダム性を活かしたい場合
- 例えば、足し算などの問題をランダムに作る場合など
- TIPS #5のCode Block
数が少ないうちやVoiceflowに慣れてないうちは、Random Blockなどを使うほうがわかりやすくて楽かもしれません。ただし、数が増えてきたり複雑な処理をやる場合には、今回ご紹介したやり方は徐々に辛くなっていくので、ケースバイケースで使い分けていただければと思います。