このチュートリアルでは、チャットボットに乗換案内スキルを実装します。
このチュートリアルは、「チャットボットを作ろう」が完了していることを前提としています。
乗換案内スキルを実装しよう
乗換案内スキルを担当するボットを作成します。
本チュートリアルでは、乗換案内の結果をGoogleマップで表示していますが、一般公開されている他のAPIと組み合わせることで、チャットボット上で乗換案内の結果を表示することも可能です。
ポイント
乗換案内を行うには、意図解釈エンジンによるスロットフィリングが必要になるため、スキルの実行中はBotSwitcherを使用して本ボットが優先して呼び出されるようにします。
作成手順
- ボットエディタにログインし、ボット管理画面で「TransportationBot」という名前のボットを作成します。
- オプションのボット設定画面でボット編集の「公開」を「project」に変更します。
- 作成したボットに乗換案内スキルを記述したシナリオ(TransportationSkill.aiml)を登録します。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465<?xml version="1.0" encoding="UTF-8"?><aiml version="2.5.0" xmlns="http://www.nttdocomo.com/aiml/schema" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nttdocomo.com/aiml/schema/AIML.xsd"><!-- BotSwitcherにTransportationBotを登録 --><category><pattern>_</pattern><template><think><sraix botid="<ProjectID>_BotSwitcher">#SET <ProjectID>_TransportationBot</sraix></think><srai><get name="input"/></srai></template></category><!-- 到着駅要求コマンド --><category><pattern label="ST001003002"/><template>到着駅はどちらですか?<think><set name="_task_keep_dialog_status">true</set></think></template></category><!-- 出発駅要求コマンド --><category><pattern label="ST001003003"/><template>出発駅はどちらですか?<think><set name="_task_keep_dialog_status">true</set></think></template></category><!-- 検索開始確認コマンド --><category><pattern label="ST001003004"/><template><get name="_task_slot_stationFrom"/>から<get name="_task_slot_stationTo"/>まで乗換案内しますか?<think><set name="_task_keep_dialog_status">true</set></think></template></category><!-- 検索開始コマンド --><category><pattern label="ST001003005"/><template>Googleマップでお調べしました。<a target="_blank" href="https://www.google.com/maps/dir/?api=1&origin=<get name="_task_slot_stationFrom"/>&destination=<get name="_task_slot_stationTo"/>&travelmode=transit">結果を表示</a><!-- BotSwitcherの登録をクリアする。 --><think><sraix botid="<ProjectID>_BotSwitcher">#CLEAR</sraix></think></template></category><!-- キャンセルコマンド、判定不能コマンド --><category><pattern label="ST001003006"/><pattern label="OT001001002"/><pattern label="00000001000"/><template>乗換案内をキャンセルしました。<!-- BotSwitcherの登録をクリアする。 --><think><sraix botid="<ProjectID>_BotSwitcher">#CLEAR</sraix></think></template></category></aiml> - 作成したボットのシナリオをデプロイします。
スキルコントローラに組みこもう
スキルコントローラに、乗換案内スキルを組み込みます。
作業手順
- スキルコントローラボットに、乗換案内スキルを持たせるシナリオ(TransportationSkillController.aiml)を登録します。
1234567891011121314<?xml version="1.0" encoding="UTF-8"?><aiml version="2.5.0" xmlns="http://www.nttdocomo.com/aiml/schema" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nttdocomo.com/aiml/schema/AIML.xsd"><!-- 到着駅要求コマンド、出発駅要求コマンド、検索開始確認コマンド --><category><pattern label="ST001003002"/><pattern label="ST001003003"/><pattern label="ST001003004"/><template><sraix botid="<ProjectID>_TransportationBot"><get name="input"/></sraix></template></category></aiml> - スキルコントローラボットに、CallBotSwitcher(CallBotSwitcher.aiml)を登録します。
※すでに登録済みの場合、この手順は不要です。
123456789101112131415161718192021222324252627<?xml version="1.0" encoding="UTF-8"?><aiml version="2.5.0" xmlns="http://www.nttdocomo.com/aiml/schema" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nttdocomo.com/aiml/schema/AIML.xsd"><category><pattern>_</pattern><template><!-- カレントボットを優先して実行する。 --><think><set name="_var_current_botid"><sraix botid="<ProjectID>_BotSwitcher">#get</sraix></set><condition name="_var_current_botid"><li value="EXPIRED|NOTFOUND"><set name="_var_botswitcher_result"><srai><get name="input"/></srai></set></li><li><set name="_var_botswitcher_result"><sraix><botid><get name="_var_current_botid"/></botid><get name="input"/></sraix></set></li></condition></think><!-- 実行結果を発話する。 --><get name="_var_botswitcher_result"/></template></category></aiml> - 作成したボットのシナリオをデプロイします。
BotSwitcherを実装しよう
複数ボットで構成したチャットボットの制御を行うBotSwitcherを作成します。
ポイント
すでにBotSwitcherを作成済みの場合、この手順は不要です。
作業手順
- ボット管理画面で「BotSwitcher」という名前のボットを作成します。
- オプションのボット設定画面でボット編集の「公開」を「project」に変更します。
- Githubに公開されているBotSwitcherのシナリオをダウンロードし、作成したボットに登録します。
詳しくはこちらをご覧ください。 - 作成したボットのシナリオをデプロイします。
動作を確認しよう
APIコンソール画面で動作を確認します。