このハウツーでは、顧客の口座関連データが保存されるデータテーブルのバンキングBotのシナリオを調査します。ユーザーからの要求でデータを更新できる方法を確認します。データテーブルおよびKore.ai Botプラットフォームでどのように導入されているかの詳細については、こちらを参照してください。
例題
以下のデータが保存される指定顧客のバンキングBotを考えてください。このデータは顧客の要求により更新する必要があります。顧客はメールIDおよびアドレス詳細のみを更新できます。
- ID
 - 名前
 - メールID
 - アドレス、および
 - タイプ
 

Pre-requisites
- Botビルドナレッジ
 - 上記テーブルへのアクセス権付きバンキングBot、そのテーブルにあるデータ(データを作成および追加するユースケースは、こちらを参照してください)。
 
設定
次の各シナリオを1つずつ考えてみましょう。
- ダイアログタスク:
- 必須情報の収集、および
 - サービスを呼び出し、顧客情報を更新
 
 
ダイアログタスクの設定
必須情報を収集するダイアログタスクを作成し、サービスノードを使用して収集した値でデータテーブルを更新します。

ダイアログタスクの作成
- 左のナビゲーションメニューからBotタスク -> ダイアログタスクを選択します。
 - ダイアログタスクに対して+をクリックして、新しいタスクを作成します。
- IntentName、たとえばUpdateCustomerを入力します。
 - 作成および続行して、ダイアログビルダーページを開きます。
 
 - インテントノードのデフォルト設定を保持し、インテントノードを閉じます。
 - インテントノードの隣の+をクリックし、エンティティを追加して顧客IDを取得します。
エンティティ名 タイプ ユーザープロンプト CustId 文字列 顧客IDの入力  - 最初に、指定した顧客IDのテーブルからデータを取得し、ロジックノードを使用してプロセスフローを制御します。
 
データの取得
サービスコールを使用して、テーブルからデータを取得できます。
- エンティティノードに対して、+をクリックします。
 - サービス -> 新しいサービスノード オプションを選択します。
 - 基本設定セクションから、以下を設定します。
- 名前、たとえばGetCustomerData
 - 表示名、たとえば顧客データ取得
 - サービスタイプで、データサービスを選択
 - タイプで、テーブルを選択
 
 - 要求定義で、要求を追加をクリックして要求を定義し、テーブルからデータを取得します。
 - データサービス要求定義ページに、以下を入力します。
- 顧客テーブルとしての テーブル名の選択
 - データ取得としてのアクション
 - フィルタを選択して CustId = {{context.entities.CustId}}を選択
 
 - 定義を保存し、サービスノードを 閉じます。
 - 1つのレコードのみをフェッチし、行に対する静的 [0] 参照を使用しているため、メッセージノードを追加し、 以下のコンテキスト変数を使用してレコードの取得を表示します。 
'For the customer number entered, we have the following details: {{context.GetCustomerData.response.body.queryResult[0].CustName}}, {{context.GetCustomerData.response.body.queryResult[0].CustEmail}}, {{context.GetCustomerData.response.body.queryResult[0].Address}}, {{context.GetCustomerData.response.body.queryResult[0].CustType}}' 
データの更新
エンティティノードとロジックノードを使用して、顧客からの入力を取得し、プロセスフローを制御します。
- 上で追加した最後のメッセージに対して、+ をクリックします。
 - エンティティノードを選択し、以下が設定された項目リスト(列挙) 型エンティティを追加します。
表示名 値 メールID メールID アドレス アドレス  - ロジックノードを追加し、上のエンティティノードからの値に基づき、顧客からメールIDまたはアドレスのいずれかを取得します。このCustEmail および CustAddressは、顧客のメールIDおよび顧客のアドレスを取得するエンティティです。 

 - コンテキスト変数も現在の詳細で入力し、これらの変数はデータテーブルを更新するために使用されます。 

 - メールIDおよびアドレスから、エンティティはスクリプトノードをトリガーし、以下のスクリプトを使用して適切にコンテキスト変数を変更します。
if (context.entities.CustUpdateChoice == 'Address') { context.custAdd = context.entities.CustAddress; } else { context.custEmail = context.entities.CustEmail; } - サービス -> 新しいサービスノード オプションを選択します。
 - 基本設定セクションから、以下を設定します。
- 名前、たとえばUpdateCust
 - 表示名、たとえばUpdate Customer Data
 - サービスタイプで、データサービスを選択
 - タイプで、テーブルを選択
 
 - 要求定義で、要求を追加をクリックして要求を定義し、テーブルへデータを追加します。
 - データサービス要求定義ページに、以下を入力します。
 - メッセージノードを追加して、成功メッセージを表示します。
 - Botとの会話オプションを使用して、プロンプト表示されたら値を入力し、表示されるメッセージを確認します。
 
結論
この投稿では、以下を確認しました。
- サービスノードを使用してテーブルからのデータの取得方法、およびそれを使用して追加処理する方法
 - サービスノードを使用してダイアログタスクからテーブルへデータを更新する方法
 


