チャットBotの概要
会話型ボット
Kore.ai のアプローチ
Kore.ai 会話型プラットフォーム
ボットの概念と用語
自然言語処理 (NLP)
ボットタイプ
ボットタスク
Kore.ai プラットフォームを使う
ボットビルダーのアクセス
Kore.ai ボットビルダーを使う
初めてのボット構築
ボット構築を始める
シンプルなボットを構築
ボットビルダー
標準ボットの構築
設計
開発 - 標準ボット
ストーリーボード
ダイアログタスク
ユーザーインテントノード
ダイアログノード
エンティティノード
サポートするエンティティタイプ
複合エンティティ
サポートする色
サポートする会社名
フォームノード
ロジックノード
メッセージノード
確認ノード
サービスノード
カスタム認証の実装
サービスノード用双方向 SSL
スクリプトノード
エージェント転送ノード
Webフックノード
ノードのグループ化
接続と遷移
ダイアログの管理
プロンプトエディタ
アラートタスク
アラートタスク
無視する単語 & フィールドメモリ
デジタルフォーム
デジタルビュー
知識グラフ
用語
構築
生成
ボットオントロジーのインポート/エクスポート
解析
知識の抽出
スモールトーク
自然言語
概要
機械学習
ML (機械学習) モデル
基本概念
NLP (自然言語処理) の設定 & ガイドライン
知識グラフのトレーニング
示唆
ランキング & リゾルバ
高度な NLP 設定
インテリジェンス
概要
コンテキスト管理
セッションおよびコンテキスト変数
コンテキストオブジェクト
ダイアログ管理
サブインテント
エンティティの変更
複数インテントの検出
センチメント分析 (英語)
トーン分析
センチメント管理
デフォルトの会話
デフォルトの標準レスポンス
チャネルの有効化
テスト & デバグ
ボットと会話
発話テスト
バッチテスト
会話の記録 & テスト
ボットの公開
ボットの分析
概要
ダッシュボード
カスタムダッシュボード
会話フロー
ボットメトリクス (英語)
アドバンスド トピック
ボット認証
言語管理
共同開発
IVR 統合
データ テーブル
ユニバーサル ボット
定義
構築
トレーニング
カスタマイズ
言語の有効化
スマート ボット
スマート ボットの定義
イベントベースのボットアクション
koreUtil ライブラリ
ボット設定
ボットの機能
ボット設定
PII 設定
エラーメッセージのカスタマイズ
セッションを管理する
ボット管理
ボットのバージョン
ボット変数
API ガイド (英語)
API 概要
API リスト
API コレクション
SDK (英語)
SDK 概要
SDK セキュリティ
SDK アプリ登録
Web 上の SDK チュートリアル
メッセージ形式とテンプレート
モバイル SDK プッシュ通知
メッセージ形式とテンプレート
ウィジット SDK チュートリアル
WebSocket 接続
BotKit SDK の利用
インストール
設定
イベント
機能
BotKit SDK チュートリアル - エージェント転送
BotKit SDK チュートリアル - フライト検索サンプルボット
外部 NLP エンジンの利用
ボット管理者
ボット管理者コンソール
ダッシュボード
ユーザー管理
御社ユーザーの管理
御社グループの管理
ロールを管理
ボット管理
エンロール
ユーザーの招待
一括招待
ユーザーのインポート
AD からユーザーを同期
セキュリティ & コンプライアンス
シングル サインオンを使う
セキュリティの設定
クラウド コネクタ
分析
請求処理
How To
シンプルなボットの構築
バンキングボットの構築
送金タスク
残高の更新タスク
知識グラフを作成
知識グラフへ抽出したFAQを入力
スマート アラートのスケジュール
エージェント転送の設定
パネルやウィジットの設定
デジタル ビューの設定
デジタル フォームの設定
データをデータテーブルに追加
データテーブルのデータを更新
フォームデータをデータテーブルに追加
コンテキストの切り替え
意図を使う
インテントやエンティティのパターン
エンティティ ルール
マルチ言語なボットの動き
カスタム ダッシュボード
ボット メトリクスをフィルターするためのカスタムタグ
グローバル変数
コンテンツ変数
ボット機能を使う
ボットリリースのライフサイクル
グループノードを利用したインテントのスコーピング
Kore-Unblu インテグレーション
  1. Home
  2. Docs
  3. Bots
  4. Bot Building
  5. Dialog Task
  6. スクリプトノードでの作業

スクリプトノードでの作業

スクリプトノードを使えば、ダイアログタスクでJavaScriptのコードを書くことができます。
スクリプトノードを使うと、次のようなことができます。

  • API コールを実行する前にユーザー入力パラメーターを操作します。
  • ダイアログを続ける前に、API レスポンスペイロードからパラメータを操作します。
  • ユーザーにカスタムのエラーメッセージを表示します。
  • 複雑なビジネスルールに基づく決定を行います。

ボットビルダーでダイアログをテストすると、スクリプトノードのエラーは、スクリプトノードのエラーダイアログに行番号と列番号、および関連するContext オブジェクトとともに表示されます。次の図のように、スクリプトノードにあるエラーダイアログで直接スクリプトの更新とテストができます。

スクリプトノードを設定する

ダイアログタスクでエンティティノードを設定するには、次のステップを実行します。

スクリプトノードをダイアログタスクへ追加する

  1. スクリプトノードを追加するダイアログタスクを開きます。
  2. ノードを追加したいノードの隣にカーソルを合わせ、その上のプラスアイコンをクリックします。
  3. スクリプト > 新規のスクリプトノードを選択します。あらかじめ定義されているスクリプトノードを選択することも可能です。
  4. コンポーネントプロパティパネルが開きます。

コンポーネントプロパティを設定する

注意:これらのセクションで設定または編集した設定は、このノードを使用する他のすべてのダイアログタスクに反映されます。

  1. スクリプトノードに 名前表示名 を入力します。ノード名にスペースを含めることはできません。
  2. スクリプトの定義セクションで、スクリプトの定義をクリックして JavaScript を追加します。
  3. スクリプトの追加のダイアログが表示されます。
  4. JavaScriptを入力し、保存をクリックします。JavaScriptのコード例については以下を参照してください。
  5. 変数名前空間]セクション(ver8.0で導入)で、このノードとその遷移の実行に使用される変数名前空間を関連付けます。このオプションは、ボットで変数名前空間が有効になっている場合にのみ表示されます。タスクレベルの設定を使用するか、このノード用にカスタマイズできます。詳細については、「名前空間の管理」を参照してください

接続プロパティを設定する

ノードの接続パネルから、次に実行するノードを決定することができます。条件文は、ダイアログタスク内の任意のエンティティまたはコンテキストオブジェクトの値に基づいて条件文を記述したり、遷移にインテントを使用することができます。
コンポーネントの遷移を設定するには、次のステップを実行します。

  1. デフォルト接続の下にある利用可能なノードから選択できます。
  2. 条件付きフローを構成するには、IFを追加をクリックします。
  3. 次のいずれかの基準に基づいて条件式を設定します。
    1. エンティティ:これらの演算子のいずれかを使用して、ダイアログ内のエンティティノードを特定の値と比較します。存在する等しいより大きいか等しいより小さいか等しい等しくないより大きいより小さい。それぞれのドロップダウンリストを使用して、エンティティ、演算子を選択し、ボックスに数値を入力します。例:PassengerCount (エンティティ) が5 (指定された値) より大きい (演算子)
    2. コンテキスト:これらの演算子のいずれかを使用して、ダイアログ内のコンテキストオブジェクトを特定の値と比較します。存在する等しいより大きいか等しいより小さいか等しい等しくないより大きいより小さい。Context.entity.PassengerCountが5 (指定された値) より大きい (演算子)
    3. インテント:次のユーザー発言と一致するインテントを選択します。
  4. Then go to のドロップダウンリストから、条件式が成功した場合にダイアログフローで実行する次のノードを選択します。たとえば、PassengerCount (エンティティ) が5 (指定された値) より大きい (演算子) 場合、 (Then go to) Offers (サブダイアログ) に進みます。
  5. Elseのドロップダウンリストから、条件式が失敗した場合に実行するノードを選択します。
注意: 複数のIf条件を書く場合は、最後のIf条件式の下でElse Ifを追加をクリックしてください。

JavaScriptの記述例

ダイアログタスクのフローを管理するなど、JavaScriptを使用してAPI呼び出しの前後にデータを処理させることで、ダイアログタスクをカスタマイズすることができます。Contextオブジェクトのタイプアヘッド機能を使用して、次の図のように動的変数を識別して選択することができます。詳細については、コンテキストオブジェクトを参照してください。
Type Ahead Context Object

例1:データの操作

JavaScriptでは、セッション変数を使ってセッションデータからデータを取得することができます。たとえば次のコード例では、context.session.UserContext.identitiesを使ってユーザーIDをGETし、contextにデータをPUTします。

var x = context.session.UserContext.identities;
var isEmailFound = false;
for (var i = 0; i < x.length; i++) {
  if (x[i].type === ""mapped"") {
    var identity = x[i].val;
    var arr = identity.split (""/"") ;
    var pattern = /^cs/i;
    var result = arr[0].match (pattern) ;
    if (result) {
      isEmailFound = true;
      context.UserSession.put (""rtmEmail"", arr[1], '20000') ;
    }
  }
}
...

詳細については、タスクでのセッション変数とコンテキスト変数の使用を参照してください。

例2:条件の取り扱い

以下のコード例では、data.resultsにIDが指定されていない場合に、サービスノードのレスポンスボディからContextオブジェクト変数を使用して顧客IDを返します。

var data = context.getcontactsService.response.body;
if (data & amp; & amp; typeof (data.results) != 'undefined') {
 context.customerID = data.results.customerId;
} else {
 context.customerID = context.Usersession.customerID;
}

例3:フローの取り扱い

次のスクリプトノードコード例では、Contextオブジェクト変数を使用して、銀行振込額が選択された口座タイプの制限を超えないかどうかを検証しています。

var valid = 0;
var i = 0;
while (context.accdata.length - i) {
 if (context.accdata[i].accountType == context.entities.FromAccountName) {
 if ( (context.accdata[i].amount - context.entities.Amount) < 0) { valid = 3; } else { if (context.entities.Amount > context.accdata[i].transferLimit) {
  valid = 0;
  } else {
  valid = 2;
  }
 }
 }
 i++;
}
context.canProceed = valid;
メニュー