このハウツーでは、顧客の口座関連データが保存されるデータテーブルのバンキングBotのシナリオを調査します。ユーザーから収集された必須情報を保存できる方法を確認します。データテーブルおよびKore.ai Botプラットフォームでどのように導入されているかの詳細については、こちらを参照してください。
例題
以下のデータを保存する必要がある指定顧客のバンキングBotを考えてください。
- ID
- 名前
- メールID
- アドレス、および
- タイプ
Pre-requisites
- Botビルドナレッジ
- バンキングBot
設定
次の各シナリオを1つずつ考えてみましょう。
- 上記の要件でのデータテーブルの定義
- ダイアログタスク:
- 必須情報の収集、および
- サービスを呼び出し、顧客情報を更新
データテーブル設定
以下の情報を保持するデータテーブルを作成します。
- CustId – 顧客の一意の識別子
- CustName – 顧客名
- CustEmail – 顧客のメールID
- CustType – 顧客のタイプ – 通常、推奨など
- アドレス – 顧客のアドレス
テーブル作成
- Kore.ai Botビルダープラットフォームにログインします。
- データタブを選択します。
- 新しいテーブルボタンをクリックします。
- 新しいテーブルページに、以下を入力します。
- 名前、たとえばcustomertable
- 説明、たとえば 顧客詳細を含むテーブル
- 列セクションに、以下の詳細を追加します。
列名 タイプ 必須 追加設定 CustId 数 あり 暗号化および最大長5 CustName 文字列 あり – アドレス 文字列 なし – CustType 文字列 なし 推奨としてのデフォルト値 CustEmail 文字列 なし – - インデックスセクションに、 CustIdのインデックスを一意に追加します。
- 作成をクリックすると、テーブルが準備できます。
- Bot割当に、このテーブル、たとえばバンキングBotを使用するBotを追加し、 読み取り、書き込みおよび削除権を付与します。データは削除しないため、削除権はオプションです。
ダイアログタスクの設定
必須情報を収集するダイアログタスクを作成し、サービスノードを使用して収集した値でデータテーブルを更新します。
ダイアログタスクの作成
- 左のナビゲーションメニューからBotタスク -> ダイアログタスクを選択します。
- ダイアログタスクに対して+をクリックして、新しいタスクを作成します。
- IntentName、たとえばAddCustomerを入力します。
- 作成および続行して、ダイアログビルダーページを開きます。
- インテントノードのデフォルト設定を保持し、インテントノードを閉じます。
- インテントノードの隣の+をクリックし、以下のように4つのエンティティを追加します。
エンティティ名 タイプ ユーザープロンプト CustName 文字列 名前を入力 CustEmail メール メールIDを入力 CustAddress 市内 市内住所を入力 CustType 項目リスト(列挙) 所得範囲を選択 CustTypeは、顧客の所得レベルに基づき、基本、推奨またはプレミアムにできます。この目的のために、静的リストを使用して、以下のようにCustType値を入力しました。
- CustIDを生成するために、テーブルの最後の顧客IDを取得し、追加する必要があります。このため、まずテーブルからデータを取得し、スクリプトノードを使用してIDを処理します。
データの取得
サービスコールを使用して、テーブルからデータを取得できます。
- 最後のエンティティノードに対して、+をクリックします。
- サービス -> 新しいサービスノード オプションを選択します。
- 基本設定セクションから、以下を設定します。
- 名前、たとえばGetLastCustId
- 表示名、たとえば顧客データ取得
- サービスタイプで、データサービスを選択
- タイプで、テーブルを選択
- 要求定義で、要求を追加をクリックして要求を定義し、テーブルからデータを取得します。
- データサービス要求定義ページに、以下を入力します。
- 定義をテストおよび保存し、サービスノードを 終了します。
- スクリプトノードを追加して、データサービスから取得した値を処理し、以下のスクリプトを使用して次の顧客IDの値を取得します。
var resultSet = context.GetLastCustId.response.body.queryResult; var id = 0; if (!resultSet.length) { id=1; } else { for (var i=0; i<resultSet.length; i++) { if (id < resultSet[i].CustId) { id = resultSet[i].CustId; } } id++; } context.lastID = id;
- これでテーブルに追加するすべての必須データがあります。
データの追加
サービスコールを使用して、テーブルにデータを追加します。
- 上で追加した最後のエンティティノードに対して、+ をクリックします。
- サービス -> 新しいサービスノード オプションを選択します。
- 基本設定セクションから、以下を設定します。
- 名前、たとえばAddCustData
- 表示名、たとえば顧客データ追加
- サービスタイプで、データサービスを選択
- タイプで、テーブルを選択
- 要求定義で、要求を追加をクリックして要求を定義し、テーブルへデータを追加します。
- データサービス要求定義ページに、以下を入力します。
- 前に定義した顧客テーブルとしての テーブル名の選択
- データ追加としてのアクション
- 以下のように定義したエンティティから値を割り当てます。
列 エンティティコンテキスト CustName {{context.entities.CustName}} CustEmail {{context.entities.CustEmail}} アドレス {{context.entities.CustAddress}} CustType {{context.entities.CustType}} CustId {{context.lastID}}
- メッセージノードを追加し、以下の応答フォーマットを使用して追加した値を表示します。
'Customer account created for: {{context.GetCustData.response.body.queryResult[0].CustName}}, {{context.GetCustData.response.body.queryResult[0].CustEmail}}, {{context.GetCustData.response.body.queryResult[0].CustAddress}}, {{context.GetCustData.response.body.queryResult[0].CustType}}'
- Botとの会話オプションを使用して、プロンプト表示されたら値を入力し、表示されるメッセージを確認します。
結論
この投稿では、以下を確認しました。
- データテーブルの作成方法
- テーブルへの列の追加
- サービスノードを使用してテーブルからのデータの取得方法、およびそれを使用して追加処理する方法
- サービスノードを使用してダイアログタスクからテーブルへデータを追加する方法