【対話の作成方法】

Interaction Builderを使用したマルチモーダル対話の作成は、
対話部品を対話作成用ウィンドウ内にDrag&Dropすることで作成していきます．
また，対話作成はトップダウン方式で作成していきます．

対話部品の詳しい情報はヘルプ上部にある対話部品アイコンをクリックしてください．

-対話作成の流れ-

簡単な対話の作成例を示します．

１．一番大きな対話の枠組み<Dialog>を作成

２．前処理<Begin>と対話の前処理を作成

３．システムとユーザの1ターンの対話<Exchange>の作成

４．ユーザの入力処理<operation>を作成

５．システム動作処理<action>を作成

１．一番大きな対話の枠組み<Dialog>を作成

初めに対話部品バーから対話の外枠となる<dialog>を選択しシナリオビューにDrag&Dropします．
そうすると【Dialogの編集ダイアログを次のウィンドウが表示されます．

色々設定項目がありますが，【ID】を入力するだけでかまいません．ここではIDを『top』として，OKを押します．
そうするとDialogの対話部品がシナリオビューに追加されます．

次に前処理<Begin>の追加と実際の対話の前処理を作成しますので，シナリオビュー上の<dialog>をダブルクリックして<dialog>の階層に入ります．

▲ページ先頭へ

２．前処理<Begin>と対話の前処理を作成

対話の前処理<Begin>の追加

対話の前処理を行うために対話部品バーから<Begin>を選択し，シナリオビュー中の<dialog>にDrag&Dropします．
そうすると，シナリオビューに<Begin>が追加されます．
追加されたら<dialog>同様にダブルクリックして<Begin>の階層に入ります．

対話の前処理を作成(コンテンツ表示)

<Begin>を追加後に対話の前処理を作成します．前処理として，コンテンツの表示とエージェントが『こんにちは、ご用件をどうぞ』と言う操作を作成します．
初めにコンテンツの表示を行うので，対話部品バーから<Browser>を選択し，<Begin>にDrag&Dropしてください．
そうすると，【Browserの編集ダイアログを次のウィンドウが表示されます．

コンテンツを表示させるので，【コンテンツを読み込む】にチェックを入れ，右上図の赤丸で囲まれた【...】ボタンを押してください．
ファイルダイアログが表示されますので，表示させたいコンテンツを選択してください．ここでは，『sougou_madoguchi.html』を選択してOKを押します．

すると，【...】ボタン隣のフォームに『sougou_madoguchi.html』のパスが表示されます．
パスが表示されたらOKを押してください．<Browser>がシナリオビューに追加され，選択されたコンテンツが表示されます．

対話の前処理を作成(エージェントの発話)

コンテンツを表示したら次にエージェントに『こんにちは、ご用件をどうぞ』としゃべらせます．
対話部品バーから<Fsm>を選択し，<Begin>にDrag&Dropしてください．
そうすると，【エージェントの編集ダイアログ】が表示されます．

【エージェントの編集ダイアログ】が表示されたら，【発話】の項目をチェックして，『こんにちは，ご用件をどうぞ』と入力してOKを押します．
すると，<Fsm>がシナリオビューに追加されます．
今回は，ただ単に『こんにちは，ご用件をどうぞ』としゃべらせるだけでした．しかし，例えば，微笑んで『こんにちは，ご用件をどうぞ』としゃべらせたい場合もあります．
そのような時は，シナリオビュー上の<Fsm>の対話部品を右クリックしてください．メニューが出てきますので，【『部品のプロパティ』→各属性の変更】を選択してください．

【『部品のプロパティ』→各属性の変更】を選択すると，【エージェントの編集ダイアログ】が表示されます．
ここで，本来なら顔の表情を変える【表情】をチェック入れるのですが，【表情】にチェックが入ったままOKを押してしまうと，表情の変更だけしか実行されません．
そのため，【表情】の項目にチェックを入れず，隣にあるコンボボックスをそのままクリックして，表情を選択してください．
今回は微笑む表情を指定するので，コンボボックスから【HAPPY】を選択してください．

【表情】を選択後OKボタンを押してもいいのですが，実際エージェントがどのように動作するのか確かめたい場合があります．
その時は，編集ダイアログ左下にある【FSM Test】ボタンを押してください．エージェントが指示された動作を行いますので，動作の確認ができます．
確認ができたら，OKボタンを押してください．シナリオが修正されます．

これで，前処理は終了です．次にシステムとユーザ間の1ターンの対話<Exchage>を作成しますので，
<Begin>をダブルクリックして<Dialog>の階層に戻ってください

▲ページ先頭へ

３．システムとユーザの1ターンの対話<Exchange>の作成

システムとユーザの1ターンの対話を行うために，対話部品バーから<Exchange>を選択し，<Dialog>にDrag&Dropします．
そうすると，【Exchangeの編集ダイアログ】が表示されます．ここでは，操作を簡単にするためseq(逐次処理)を選択します．

seqを選択してOKを押すと，シナリオビューに<Exchange>が追加されます．

次にユーザの入力を受け付ける<operation>を作成しますので，シナリオビュー上の<Exchange>をダブルクリックして<Exchange>の階層に入ってください．

▲ページ先頭へ

４．ユーザの入力処理<operation>を作成

ユーザからの入力を受け付けるために，対話部品バーから<Speech>または，<Touch>を選択し，シナリオビュー上の<Exchange>にDrag&Dropしてください．
今回は音声入力を受け付ける<Speech>を選択します．<Touch>については，各部品の説明に記載していますので，ご参考ください．

Drag&Dropすると【音声入力の編集ダイアログ】が表示されますので，上図右上の赤丸部分にある【...】ボタンを押してください．
ボタンを押すとファイルダイアログが開くので，音声認識用のgrammerファイルを指定してください．今回は，『service_select.grammer』を選択します．

『service_select.grammer』を選択すると，【...】ボタンの隣にあるフォーム『service_select.grammer』のパスが表示されます.
また,赤丸の部分に認識可能な文法ルールのリストが表示されますので，お好きなルールを選択してください．
そうすると，その右側に選択した文法ルールで認識可能な語彙が表示されます．今回は『service_type』を選択してOKを押します．
OKを押すと，シナリオビューに<Speech>が追加されます

これで，ユーザからの入力処理は終了です．
次にシステムの動作に移ります．

▲ページ先頭へ

５．システム動作処理<action>を作成

分岐処理<Switch>の追加

ユーザの入力を|受理後のシステム動作を作成するために，対話部品バーから<assign><swtich><call><goto><if><exit><browser><agent><tts>のどれかを選択し，シナリオビュー上の<Exchange>にDrag&Dropします．
今回は音声認識で認識したかどうかを調べるために条件分岐<Swtich>を使用します．

Drag&Dropすると【Switchの編集ダイアログ】が表示されます．
右側にある【使用できる変数】から，音声認識の結果が格納されている変数をダブルクリックしてください．
変数をダブルクリックすると【条件】の項目に変数名が設定されます．
変数を【条件】に設定した後，【case】に分岐するための条件値を設定します．
もし，条件値以外の処理を行いたい場合は【条件に一致しないときの処理をおこなう】にチェックをつけてください．

全ての入力が終わったのであれば，OKを押してください．シナリオビューに<Switch>が追加されます．
また，<Switch>をダブルクリックすると，指定した条件値の対話部品<case>が表示されます

<Swtich>の階層では全ての対話部品がDrag&Dropできません．よって，各条件値<case>内の処理を行う場合は，<case>をダブルクリックして<case>の階層に入ってください．今回は音声認識が成功した(上図ではCaseが1のときを指す)場合の処理を行うため，１の文字が入った<case>をダブルクリックしてください．

対話の遷移<Call>の追加

次の対話へ遷移するために，対話部品バーから<call>を選択し，シナリオビュー上の<case>にDrag&Dropしてください．
そうすると，【Callの編集ダイアログ】が表示されます．

【Callの編集ダイアログ】が表示されたら，遷移先のダイアログを指定するために，【next：遷移先のdialog】内の【document名】と【dialog名】を指定します．
指定すると，遷移先の<dialog>情報が表示されます．
遷移先の<dialog>に引数が必要な場合は【namelit:引数の指定】に引数を指定します．引数としは，文字列，数値，変数が使用可能です．
同様に遷移先からの戻り値を格納する必要がある場合は【return：戻り値格納変数の指定】に引数を指定します．

遷移先のdialogがない場合は，編集ダイアログ下にある【遷移先を指定しない】をチェックしてください．
全ての設定が終了したらOKを押してください．シナリオビューに<call>が追加されます．

▲ページ先頭へ

この後は様々な対話部品を１〜５の手順に沿って作成していってください．