チャット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. サービスノードでの作業

サービスノードでの作業

サービスノードは、サードパーティのWebサービスにRESTやSOAPリクエストを行えるようAPIサービスを追加するのに使用できるダイアログタスク内のコンポーネントタイプです。エンティティなどのノードでAPIリクエストに必要なパラメータを収集し、ユーザーの入力を取り込む場合に使用します。

サービスタイプは次のいずれかで定義することができます。

  • カスタムサービス − サードパーティのWebサービスへのAPIリクエストを定義します。これはデフォルトの設定です。
  • HTMLから画像 − JavaScript を使用して、画像としてレンダリングするHTMLを定義します。たとえば、HTMLや、画像に変換したいHTMLマークアップが文字列として含まれるWebサービスのレスポンスのキーの値を構成する場合などです。
  • URLから画像 − 画像をレンダリングするために読み込むWebページのURLを定義します。
  • カスタム認証サービス
  • アラートサブスクリプションサービス − 一連のダイアログの一部としてユーザーに積極的に送信される、文脈に沿ったアラートを定義します。
  • データテーブルサービス − ボットに割り当てられた任意のデータテーブル/テーブルビューのデータを照会および操作するためのCRUD 操作を定義します。

サービスノードの作成

  1. 新規のサービスノードを追加する箇所で diydialogtaskplusicon プラスアイコンをします。
  2. サービスを選択し、新規のサービスコール作成をクリックします。事前に定義されたサービスノードのリストから選択することもできます。
  3. 新規デフォルトのサービスノードが追加され、コンポーネントプロパティパネルが表示されます。
  4. 一般設定で、たとえば、FetchWeatherのようにサービスノードの名前表示名を入力してください。
  5. サービスタイプを選択します。
    • カスタムサービス − サードパーティのWebサービスへのAPIリクエストを定義します。これはデフォルトの設定です。
    • HTMLから画像 − JavaScript を使用して画像としてレンダリングするHTMLを定義します。たとえば、HTMLを構成したい場合や、Webサービスのレスポンスキーの値にHTMLマークアップが文字列として含まれていて、それを画像に変換したい場合などに使用します。
    • URLから画像 − 画像をレンダリングするために読み込むWebページのURLを定義します。
    • カスタム認証サービス − タスクフローに必要な認証サービスを提供するサードパーティアプリケーションへのURLを定義します。詳細を見る
    • アラートサブスクリプションサービス − コンテキスト的に関連のアラートを定義し、一連のダイアログの一部としてユーザーに積極的に送信される、文脈に沿ったアラートを定義します。
  6. 選択されたサービスタイプに基づき、タイプ/サブタイプまたは Auth URL を入力します。
  7. リクエストの定義のセクションで、 >リクエストの定義をクリックします。
  8. リクエスト< サービスeXXXX >の定義 ダイアログが表示されます。選択された サービスタイプに応じて、このトピックの次のセクションのいずれかを参照してください:
    注意:カスタム認証サービスの場合、リクエスト定義セクションは適用されず、代わりにレスポンスセクションが表示されます。詳細を見る。

  9. ノードの 接続パネルから、次に実行するダイアログタスクのノードを決定できます。条件文は、ダイアログタスク内の任意のエンティティオブジェクトまたはコンテキストオブジェクトの値に基づいて書くことができ、また遷移にインテントを使用することもできます。コンポーネント遷移を設定するには、次のステップを実行します。
    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を追加をクリックしてください。

カスタムサービスの定義

  1. サービスタイプカスタムサービスがが選択されている場合、サブタイプフィールドで、次のいずれかを選択します。
    • REST − API WebサービスはRESTのサービスを使用しています。
    • SOAP − API WebサービスはSOAPのサービスを使用しています。
  2. リクエストの定義のセクションで、リクエストの定義 をクリックして、Webサービスタイプの設定を指定します。
  3. 以下の図のように、サービスノード名のリクエストの定義> ダイアログが表示されます。
    1. リクエストURLフィールドの最初のフィールドで、リクエストに使用する下記のいずれかのHTTPメソッドを選択します。
      • POST – サーバーにデータを送信したり、たとえば、HTMLフォームを使用して、サーバーに顧客情報やファイルのアップロードなどのデータを送信するために使用します。
      • PUT − ターゲットリソースの内容を送信された内容に置き換えます。
      • PATCH − 既存のターゲットリソースのコンテンツに送信されたコンテンツを追加します。
      • DELETE − 既存のターゲットリソースの内容を削除します。
      • GET − 既存のターゲットリソースの内容を返します。

      注意:SOAPサービスの場合、POSTメソッドを使用してXMLペイロードを’body’に渡すことができます。

    2. http://koremessenger.com/postURLなど、リクエストURLの2番目のフィールドには、Kore.aiで処理するダイアログタスクのレスポンスのURLを指定してください。たとえば、http://koremessenger.com/postURLのように指定します。エンティティノードの値をパラメータとして使用するには、Contextオブジェクトにアクセスするための以下の構文を使用します。https://myDomain.com/{{context.entities.topic}}context.entities.topicに対して、のように記述します。必ず二重括弧{{context.object }}を使用してください。詳細については、コンテキスト オブジェクトを参照してください。
    3. オプションで、アドバンス表示をクリックし、選択します。
      • Kore.aiボットのアクセスがKore.aiコネクターエージェントを使用している場合は、「コネクタを使用してアクセスする」フィールドに、「はい」と入力してください。詳細については、Kore.ai コネクタの使用を参照してください。
      • PII データの非識別化で、ユーザーがボットと共有する機密性の高い情報タイプを編集することができます。詳細については、個人識別情報の編集を参照してください。
    4. Authタブで、このサービスノードの呼び出しに必要な認証タイプを選択するか、必要に応じて新しい認証タイプを定義します。詳細については、認証の設定を参照してください。
    5. 指定されたリクエストURLにアクセスする必要がある場合は、ヘッダータブでヘッダーをキー/値のペアとして指定します。 認証ヘッダーは、Authタブで指定された認証タイプに基づいて自動生成されます。たとえば、Content-type、Acceptなどの他の標準ヘッダーやカスタムヘッダーを定義する必要があります。 ここで定義されたヘッダーは、このサービスノードにのみ適用されます。
    6. ボディタブで、ボディのコンテンツタイプのいずれかを選択します。
         

      • application/x-www-form-urlencoded − Multipart/Form-dataとも呼ばれ、ユーザーにフォームからファイルをアップロードさせたい場合に、HTTP POSTリクエストメソッドを使ってファイルを送信できるようにするエンコーディングのタイプです。ボットプラットフォームによりエンコーディングされたキーと値のペアを追加することができます。
      • application/json − Kore.aiサーバーとボットWebアプリケーションの間でデータを送信するために JSON を使用します。どのJSONも処理をされずにリクエストと一緒に送信されます。
      • application/xml − SOAPのサービスの場合、POSTメソッドを使用してXMLペイロードを渡します。エンティティノードの値をXMLの一部として渡すことができ、コンテキストオブジェクトにアクセスするためには次の構文を使用します。context.entities.topicに対して、https://myDomain.com/{{context.entities.topic}}のように記述します。必ず二重括弧{{context.object }}を使用してください。詳細については、コンテキストオブジェクトを参照してください。
    7. テストリクエストタブで、テストをクリックして、指定したAuthタイプ、HTTP ヘッダー、ボディパラメータ (定義されている場合) を使用して、オプションでAPI リクエストURL を送信します。レスポンスがテキストエリアに表示されます。サンプルレスポンスを保存 をクリックして、テストレスポンスをこのノードのサンプルレスポンスとして保存します。
    8. サービスノードのリクエストを保存するには、保存をクリックし、サービスノードのリクエストを保存して< サービスノード名の >リクエスト定義 ダイアログを閉じます。
  4. サンプルレスポンス セクションで、オプションで サンプルレスポンスを追加 をクリックして、サンプルレスポンスを手動で入力または貼り付けるために使用できる サンプルレスポンスを追加 ダイアログを表示します。
  5. オプションとして、サンプルレスポンスを追加のドロップダウンリストで次のいずれかを選択します。
    • JSON − リクエスト URL レスポンスで利用可能な JSON キー/値のペアのリストで、他のノードで変数として使用することができます。
    • RAW − 他のノードで変数として使用できるキー/値のペアのリス
      トです。
  6. コンポーネントプロパティ セクションの コンポーネント で、サービスコールを終了するためのタイムアウトを設定できます。初期設定では20秒に設定されていますが、5秒から20秒の間で任意の値を選択できます。

画像に変換するURLの定義

  1. サービスタイプURLから画像が選択されている場合、タイプの設定は読み取り専用です。
  2. リクエストの定義セクションで、サービスタイプURLから画像が選択されている場合の設定を指定するには、リクエストの定義をクリックします。< サービスノード名 >のリクエストの定義のダイアログは下図のように表示されます。
  3. 変換するURLフィールドに画像のURLを入力します。URL で Context オブジェクトキーを使用する場合の構文では、たとえば、https://myURLimage.com/{{context.entities.imageName}}のようにオブジェクト名を二重括弧で囲みます。””
  4. レンダリングサイズのセクションで、画像サイズの名前を指定します。たとえばiPhoneまたはタブレットの場合、高さをピクセル単位で入力し、さらにサイズを追加するには+追加をクリックします。保存してダイアログを閉じるには追加をクリックします。
  5. サービスノードのリクエストを保存するには保存をクリックし、< サービスノード名 >のリクエストの定義のダイアログを閉じます。

画像に変換するHTMLの定義

  1. サービスタイプHTMLから画像が選択されている場合、タイプの設定は読み取り専用です。
  2. リクエストの定義のセクションで、リクエストを定義をクリックして、サービスタイプHTMLから画像が選択されている場合の設定を指定します。< サービスノード名 >リクエストの定義ダイアログが以下の図のように表示されます。
  3. HTMLを変換 フィールドに、画像の HTML を入力します。
  4. レンダリングサイズ セクションで、画像サイズの名前を指定します。たとえば、iPhone or tabletまたは高さをピクセル単位と入力し、さらにサイズを追加するには+追加をクリックし、保存してダイアログを閉じるには追加をクリックします。

HTML定義の例
以下は、HTMLを画像に変換する例です。

<head>
<link href="../assets/styles.min.css" rel="stylesheet"/>
<title>HTML: Print Wide HTML Tables</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<style>
 .style1 {
   border-collapse: collapse;
   }
 .style1 th {
   background-color: #DDDDDD;
   white-space: nowrap;
   }
 .style1 .d {
   white-space: nowrap;
   }
 .style1 .n {
   padding-left: 20px;
   text-align: right;
   }
</style>
</head>
<body>
<table id=""table1"" class=""style1"" border=""1"" cellpadding=""4"" cellspacing=""0"">
 ///TODO Add Table Rows here.
</table>
<input type=""button"" id=""print-button"" value=""Make this table printable contact@ {{context.session.UserContext.emailId}}""/>
<script>
/*
 * HTML: Print Wide HTML Tables
 * http://salman-w.blogspot.com/2013/04/printing-wide-html-tables.html
*/
$ (function () {
$ ("#print-button") .on ("click", function () {
  var table = $ ("#table1") ,
    tableWidth = table.outerWidth () ,
    pageWidth = 600,
    pageCount = Math.ceil (tableWidth / pageWidth) ,
    printWrap = $ ("<div></div>") .insertAfter (table) ,
    i,
    printPage;
  for (i = 0; i < pageCount; i++) {
   printPage = $ ("<div></div>") .css ({
     "overflow": "hidden",
     "width": pageWidth,
     "page-break-before": i === 0 ? "auto" : "always"
    }) .appendTo (printWrap) ;
  table.clone () .removeAttr ("id") .appendTo (printPage) .css ({
   "position": "relative",
   "left": -i * pageWidth
   }) ;
  }
 table.hide () ;
 $ (this) .prop ("disabled", true) ;
}) ;
}) ;
</script>
</body>
</html>

前述のHTMLの例では、テーブルの行が例に追加されると、エンドユーザーに以下のような画像をレンダリングすることができます。
HTML Image Example

アラートサブスクリプションサービスの定義

ボットユーザーを自動的に登録して、一連のダイアログの一部として文脈に沿ったアラートを送信することができるようになりました。たとえば、特定の日の航空券を予約した人が、目的地の天気予報の最新情報を定期的に受け取ることができるように自動登録することができます。
アラートサブスクリプションサービスを設定する

  1. アラートを設定したいサービスノードのプロパティパネルを開きます。
  2. サービスタイプ のドロップダウンリストで、自動サブスクリプションサービスを選択します。
  3. リクエストを定義をクリックします。スマート/自動アラートダイアログが開きます。
    注意: アラートサブスクリプションサービスを作成するには、既存のアラートタスクをベースにする必要があります。ユーザーは、ダイアログ内の関連するサービスノードに到達した場合、アラートタスクに自動登録されます。
  4. アラートの選択ドロップダウンリストから、アラートタスクを選択します。リストは、ボットに関連する公開済みのアラートタスクのみで構成されています。
  5. 以下の説明を参考にして、必要な情報を入力します。

アラートサブスクリプション (スマートアラート) の設定

一般的なアラートの設定では、アラートのパラメータやフィルタ、その他必要な詳細をボットのユーザーが入力します。これはアラートの自動配信であるため、開発者がこれらの詳細を設定する必要があります。

アラートパラメータ

これらは、選択したアラートによって異なります。アラートサブスクリプションサービスで使用するデフォルトのパラメータ値を指定します。
この例では、アラートのために定義されるパラメータは、トピック名とニュースの地域です。対象都市の天気予報をユーザーに送信することを想定しているため、天気予報context.entity.destinationcityにそれぞれパラメータ値を設定します。

フィルタ

これらは、選択したアラートによって異なります。アラートサブスクリプションサービスに使用するフィルタ基準条件を指定します。

アラート頻度

アラート通知を送信する頻度を指定します。日程、頻度、時間枠を選択する必要があります。

  • 日程の選択 ドロップダウンから、毎日、平日、週末のいずれかを、アラートを送信するタイミングに応じて選択します。
  • 頻度の選択ドロップダウンから、1 日に一定の間隔で複数回のアラートを送信する場合は [毎に] を、1 日に特定の時刻に1回のアラートを送信する場合は [時刻] を選択します。
  • 時間の選択ドロップダウンから、上記で選択した頻度の値に応じて、間隔時間の値または一日の時間を選択します。

この例では、毎日午前6時にアラートがユーザーに送信されるように設定されました。

スマートアラートの期限

次のいずれかのオプションから、ユーザーへのアラート送信を終了するタイミングを設定します。

  • 期間:サブスクリプションの日付から入力した日数が経過すると、通知の送信を停止します。
  • 通知回数:入力された数の通知が送信されたあと、アラートの送信を停止します。
アラートアップグレード

基礎となるアラートタスク (最初に選択した公開アラート) のアップグレード版が公開された場合の、このアラートの期待される動作を定義します。

  • 既存のインスタンスを削除
    このスマートアラートの既存のサブスクリプションはすべて削除され、ユーザーは通知を受け取ることができなくなります。ユーザーは、ダイアログを実行して一連のダイアログのサービスノードに到達したときにのみ、アップグレードされたアラートタスクに自動登録されます。
  • ユーザーが手動でサブスクリプションをアップグレードできるようにする
    ユーザーは、自動サブスクリプションをアップグレードするためのリンクが表示されたアップグレード通知を、選択したチャネルで受け取ることができます。アップグレードが成功すると、ユーザーは成功の通知を受け取ります。

データサービスの定義

  1. サービスタイプデータサービスが選択されると、タイプ設定で2つのオプションが与えられます。
    • Table − データ テーブルでCRUD操作を実行するには、このオプションを選択します。
    • View − テーブルビューからデータを取得するには、このオプションを選択します。

    注意:ボットはTable/Viewにアクセスする権限をもっている必要があります。Table/Viewの管理者が、この権限を与えることができます。方法についてはこちらを参照してください

  2. リクエストの定義セクションで、リクエストの定義をクリックして実行したい操作を指定します。詳細については、こちらを参照してください。
メニュー