サービスノードは、APIサービスを追加して、RESTまたはSOAPのリクエストをサードパーティのWebサービスに対して行うために使用できるダイアログタスクのコンポーネントタイプです。このノードは、エンティティまたは他のノードを使用してユーザー入力をキャプチャし、 API リクエストに必要なパラメータを持つ場合に使用できます。サービスタイプは以下のように定義できます。
- カスタムサービス – サードパーティのWebサービスへのAPIリクエストを定義します。これはデフォルト設定です。
- 画像に対するHTML – JavaScriptを使用して、HTMLを画像としてレンダリングするように定義します。例として、HTMLを作成するために、あるいは画像に変換したい文字列としてのHTMLマークアップを含むWebサービス応答におけるキー値を作成するために。
- 画像に対するURL – 画像をレンダリングするためにロードするWebページのURLを定義します。
- カスタム認証サービス – タスクフローに必要な認証サービスを提供するサードパーティアプリケーションのURLを定義します。
- アラートサブスクリプションサービス – ダイアログ世界の一環として、ユーザーへ積極的に送信されるコンテキスト関連のアラートを定義します。
- データテーブルサービス – ボットに割り当てられた指定のデータテーブル/テーブルビューのデータを任意にクエリ、操作するためのCRUDオペレーションを定義します。
セットアップ
ダイアログタスクにおけるサービスノードのセットアップは、以下の手順で行います。メモ:プラットフォームのv9.0以降では、サービスノードはボットアクションノードの下に分類されます。ボットアクションノードの詳細はこちらをクリックしてください。
ノードの追加
- ダイアログタスクを開き、サービスノードを追加します。
- サービスノードを指定された場所に追加します。ノードの追加手順についてはこちらをご参照ください。
- 「サービス」ウィンドウは、デフォルトではコンポーネントプロパティタブが選択された状態で表示されます。
- 接続プロパティを設定できます。詳細はこちらをご参照ください。
ノードの設定
- コンポーネントプロパティタブの一般設定セクションで、サービスノードの名前と表示名を入力します。例:FetchWeather。
- ドロップダウンリストから、サービスタイプを選びます。
- カスタムサービス – サードパーティのWebサービスへのAPIリクエストを定義します。これはデフォルト設定です。
- 画像に対するHTML – JavaScriptを使用して、HTMLを画像としてレンダリングするように定義します。例として、HTMLを作成するために、あるいは画像に変換したい文字列としてのHTMLマークアップを含むWebサービス応答におけるキー値を作成するために。
- 画像に対するURL – 画像をレンダリングするためにロードするWebページのURLを定義します。
- カスタム認証サービス – タスクフローに必要な認証サービスを提供するサードパーティアプリケーションのURLを定義します。詳細について
- アラートサブスクリプションサービス – ダイアログ世界の一環として、ユーザーへ積極的に送信されるコンテキスト関連のアラートを定義します。
- 選択したサービスタイプに基づいて、それぞれのドロップダウンリストから タイプ/サブタイプを選択するか、URL認証を選択します。
- 定義のリクエストセクションで、リクエストの定義をクリックします。
- <サービスXXXX>向けリクエストの定義ダイアログが表示されます。 選択したサービスタイプに応じて、このトピックにおける次のいずれかのセクションをご参照ください。メモ:カスタム認証サービスの場合、リクエストの定義セクションは適用されないで、代わって応答セクションが表示されます。詳細について.
- 可変ネームスペースセクションでは、可変ネームスペースを関連付けてこのノードとその遷移を実行します。このオプションは、可変ネームスペースがボットに対して有効になっている場合にのみ表示されます。タスクレベルの設定を使用するか、またはこのノード用にカスタマイズできます。詳細情報は、ネームスペースの管理をご参照ください。
- ノードの接続タブから、次に実行するダイアログタスクのノードはどれにするかを決定できます。条件文は、ダイアログタスク内の任意のエンティティやコンテキストオブジェクトの値に基づいて記述することも、遷移にインテントを使用することもできます。コンポーネント遷移のセットアップは、以下の手順に従います。
- 「サービス」ウィンドウで、接続タブをクリックします。
- 接続タブの接続ルールセクションでは、 デフォルトドロップダウンリストからノードを選択することができます。
- 左側パネルから既存のサービスノードをドラッグアンドドロップすることができます。
- 条件付きのフローを設定するには、IFの追加をクリックします。
- 以下のいずれかの基準に基づいて、条件式を設定します。
- エンティティ:これらの演算子のいずれかを使用して、ダイアログ内のエンティティノードを特定の値と比較します。存在する、等しい、等しいより大きい、等しいより小さい、等しくない、より大きい、より小さい。それぞれのドロップダウンリストを使用して、エンティティ、演算子を選択し、値ボックスに数値を入力します。例:PassengerCount (エンティティ) は5 (指定値)より大きい(演算子)。
- コンテキスト:これらの演算子のいずれかを使用して、ダイアログ内のコンテキストオブジェクトを特定の値と比較します。存在する、等しい、等しいより大きい、等しいより小さい、等しくない、より大きい、より小さい。例: Context.entity.PassengerCount (コンテキストオブジェクト)が(演算子)5(指定値)より大きい。
- インテント:次のユーザーの発話に一致するインテントを選択します。
- 次へ進むドロップダウンリストで、条件式が成功した場合にダイアログフローで実行する次のノードを選択します。例として、PassengerCount (エンティティ) が(演算子) 5 (指定値)より大きい場合、次へ進むオファー(サブダイアログ)になります。
- その他ドロップダウンリストで、条件が失敗した場合に実行するノードを選択します。
メモ:複数のIf条件を書きたい場合は、最後のIf条件式の下のその他の条件を追加をクリックします。
カスタムサービスの定義
- サービスタイプでカスタムサービスを選択した場合、 サブタイプフィールドで以下のオプションのいずれかを選択します。
- REST – API WebサービスはRESTサービスを使用しています。
- SOAP – API WebサービスはSOAPサービスを使用しています。
- リクエストの定義セクションで、リクエストの定義をクリックして、Webサービスタイプの設定を行います。
- 下図に、リクエストの定義<サービスノード名 >ダイアログが表示されます。
- リクエストURLフィールドの最初のフィールドで、リクエストに使用するHTTPメソッドを選択します。以下のいずれかを選択できます。
- POST– サーバーにデータを送信するために使用します。例:HTMLフォームを使用する顧客情報、ファイルのアップロードなど。
- PUT– ターゲットリソースのコンテンツを、送信されてきたコンテンツに置き換えます。
- PATCH – 送信されてきたコンテンツに、既存のターゲットリソースのコンテンツを追加します。
- DELETE―既存のターゲットリソースのコンテンツを削除します。
- GET–既存のターゲットリソースのコンテンツを返します
- リクエストURLの第2フィールドには、Kore.aiで処理するダイアログタスク応答のURLを指定します。例:http://koremessenger.com/postURL必要に応じて、クエリパラメータまたはパスパラメータをURLの一部として追加します。エンティティノードの値をパラメータとして使用するには、
Context
オブジェクトにアクセスする際に以下の構文を使用します。https://myDomain.com/{{context.entities.topic}} でcontext.entities.topic
。二重括弧{{ context.object }}
を使用する必要があります。詳細情報は、コンテキストオブジェクトをご参照ください。- 必要に応じて、詳細表示をクリックして、次を選択します。
- Kore.ai BotsへのアクセスがKore.aiコネクタエージェントを使用している場合は、コネクタ使用によるアクセスフィールドで表示される「はい」。詳細情報については、Kore.ai Connectorの使用をご参照ください。
- ユーザーがボットと共有する機密情報タイプを編集するために、PIIデータの非識別化で「はい」を選択します。詳細情報は、個人特定情報の編集をご覧ください。
- 認証タブでは、このサービスノードの呼び出しに必要な認証のタイプを選択するか、必要に応じて新しい認証のタイプを定義します。詳細情報は、認証のセットアップご参照ください。
- ヘッダータブでは、指定したリクエストURLにアクセスするために必要な場合、ヘッダーをキー/値のペアで指定します。認証ヘッダーは、認証タブで指定した認証タイプに基づいて自動生成されます。その他の標準ヘッダーを定義する必要があります。例:コンテンツタイプ、受理、または任意のカスタムヘッダー。ここで定義されたヘッダーは、このサービスノードにのみ適用されます。
- 本文タブで、本文コンテンツタイプを選択します。以下のいずれかを選択できます。
- application/x-www-form-urlencoded – マルチパート/フォームデータとしても知られており、ユーザーがフォームからファイルをアップロードできるようにしたい場合に、HTTP POSTリクエストメソッドでファイルを送信できるようにするエンコーディングタイプです。ボットプラットフォームでエンコードされたキー/値のペアを追加することができます。
- application/json – Kore.aiサーバーとMyボットWebアプリケーション間のデータ転送にJSONを使用します。あらゆるJSONは、処理もまったく行わずにリクエストとともに送信されます。
- application/xml – SOAPサービスでは、POSTメソッドを使用してXMLペイロードを渡します。エンティティノード値は、XMLの一部として渡すことができます。その際、
Context
オブジェクトにアクセスするために次の構文を使用します。https://myDomain.com/{{context.entities.topic}}は、context.entities.topic
.二重括弧{{ context.object }}
を使用する必要があります。詳細情報は、コンテキストオブジェクトをご参照ください。
- リクエストのテストタブでテストをクリックすると、オプションとして、指定された認証タイプ、HTTPヘッダー、本文パラメータ(定義されている場合)を使用して、APIリクエストURLを送信することができます。回答はテキストエリアに表示されます。サンプル応答として保存をクリックすると、テスト応答がこのノードのサンプル応答として保存されます。
- 保存をクリックすると、サービスノードに対するリクエストが保存され、リクエストの定義<サービスノード名 >ダイアログが閉じます。
- 必要に応じて、詳細表示をクリックして、次を選択します。
- サンプル応答セクションで、オプションとしてサンプル応答の追加をクリックすると、サンプル応答の追加ダイアログが表示され、サンプル応答を手動で入力または貼り付けることができます。
- オプションとして、サンプル応答の追加ドロップダウンリストで、以下を選択できます。
- JSON – 他のノードで変数として使用されるリクエストURL応答で利用可能なJSONキー/値のペアのリスト。
- RAW – 他のノードで変数として使用されるキー/値のペアのリストです。
- コンポーネントのプロパティセクションの高度な管理では、サービスコールを終了させるための タイムアウト を設定できます。デフォルトでは20秒に設定されていますが、5~20秒の間で任意の値を選択できます。
画像変換向けのURLの定義
- サービスタイプで 画像向けのURLを選択した場合、 タイプの設定は読み取り専用となります。
- リクエストの定義セクションでは、リクエストの定義 をクリックして、 サービスタイプで 画像向けのURLを選択した場合の設定を指定します。下図に、リクエストの定義<サービスノード名 >ダイアログが表示されます。
- 変換向けのURLフィールドに、画像のURLを入力します。
Context
オブジェクトキーをURLで使用するときの構文は、次のようにオブジェクト名を二重括弧で囲みます。例:https://myURLimage.com/{{context.entities.imageName}}。 - レンダリングサイズセクションで、画像サイズの名前を指定します。例として、iPhoneやタブレットの場合、 幅 と高さ をピクセル単位で入力し、+追加をクリックして別のサイズを追加するか、追加をクリックし、ダイアログを保存して閉じます。
- 保存をクリックすると、サービスノードに対するリクエストが保存され、リクエストの定義<サービスノード名 >ダイアログが閉じます。
画像変換向けのHTMLの定義
- サービスタイプで画像向けのHTMLを選択した場合、 タイプ の設定は読み取り専用となります。
- リクエストの定義セクションでは、リクエストの定義 をクリックして、 サービスタイプで 画像向けのHTMLを選択した場合の設定を指定します。下図に、リクエストの定義<サービスノード名 >ダイアログが表示されます。
- 変換向けのHTMLフィールドに、画像のHTMLを入力します。
- レンダリングサイズセクションで、画像サイズの名前を指定します。例として、iPhoneやタブレットの場合、 幅 と高さ をピクセル単位で入力し、+追加をクリックして別のサイズを追加するか、追加をクリックし、ダイアログを保存して閉じます。
以下は、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>
アラートサブスクリプションサービスの定義
ボットユーザーを自動的に登録し、ダイアログ世界の一環として、コンテキストに応じた適切なアラートを送信できるようになりました。例として、特定の日付の航空券を予約した人は、目的地の都市の天気予報を定期的に受け取るように自動登録されます。アラートサブスクリプションサービスを設定するには、以下の手順に従います。
- アラートを関連付けたいサービスノードのコンポーネントプロパティタブを開きます。
- 一般設定セクションで、サービスタイプドロップダウンリストから自動サブスクリプションサービスを選択します。
- リクエストの定義をクリックします。メモ:アラートサブスクリプションサービスを作成するには、既存のアラートタスクに基づく必要があります。ユーザーは、ダイアログ内の関連するサービスノードに到達すると、アラートタスクに自動登録されます。
- スマート/自動アラートダイアログボックスで、 アラートの選択ドロップダウンリストからアラートタスクを選択します。リストには、Myボットに関連する公開されたアラートタスクのみが表示されます。
- 以下の説明にあるように、必要な情報を入力します。
アラートサブスクリプション(スマートアラート)の設定
一般的なアラートセットアップでは、アラートのパラメータ、フィルター、その他必要な詳細などは、ボットユーザーが入力します。これはアラートの自動サブスクリプションなので、開発者としてその詳細を設定する必要があります。
アラートパラメータ
これらは、選択したアラートによって異なります。アラートサブスクリプションサービスに使用するデフォルトのパラメータ値を提供します。この例では、アラートに定義されているパラメータはトピック名とニュースの地域です。目的地の都市の天気予報をユーザーに送信することが目的なので、パラメータ値をそれぞれ天気予報と context.entity.destinationcity に設定することができます。
フィルター
これらは、選択したアラートによって異なります。アラートサブスクリプションサービスに使用するフィルター基準を提供します。
アラートの頻度
アラート通知の送信頻度を提供します。スキーム、周波数、期間を選択する必要があります。
- スキームの選択のドロップダウンリストから、アラートを送信するタイミングに応じて、「毎日」、「週日」、「週末」のいずれかを選択します。
- 頻度の選択のドロップダウンリストから、1日のうち一定の時間間隔で複数のアラートを送信する場合は 「毎」を、1日のうち特定時間に1回のアラートを送信する場合は 「~に」 を選択します。
- 時間ノード選択ドロップダウンリストから、上記で選択した頻度に応じて、間隔の時間値または1日のうちの時刻を選択します。
この例では、「Daily At 6 a.m.」を選択しています。これは、毎日午前6時にユーザーにアラートが送信されることを意味します。
スマートアラートの有効期限
以下のオプションのいずれかを選び、ユーザーへのアラートの送信を終了するタイミングを設定します。
- 期間:サブスクリプションの日付から入力した日数が経過すると、通知の送信を停止します。
- 通知の回数:入力された回数の通知が送信されると、アラートの送信を停止します。
アラートアップグレード
基礎となるアラートタスク(最初に選択して公開されたアラート)のアップグレード版が公開された場合に、このアラートに想定される動作を定義します。
- 既存インスタンスの削除 このスマートアラートの既存サブスクリプションはすべて削除され、ユーザーは通知を受け取らなくなります。ユーザーは、ダイアログを実行してダイアログ世界のサービスノードに到達したときにのみ、アップグレードされたアラートタスクに自動登録されます。
- ユーザーがサブスクリプションを手動でアップグレードできるようにする ユーザーは、選択したチャネルでアップグレード通知を受け取りますが、その通知は自動サブスクリプションのアップグレードを案内するリンクです。アップグレードが成功すると、ユーザーに成功の通知が届きます。
データサービスの定義
- サービスタイプで データサービス を選択した場合、 タイプ の設定では2つのオプションが提供されています。
- テーブル – データテーブルでCRUD操作を行う場合は、このオプションを選択します。
- ビュー – テーブルビューからデータを取得する場合は、このオプションを選択します。
メモ:Myボットは、テーブル/ビューにアクセスする許可を得ている必要があります。テーブル/ビューの所有者はこの許可を与えなければなりません。許可の方法はこちらをご覧ください。
- 定義のリクエストセクションで、リクエストの定義 をクリックして、実行したいオペレーションを指定します。詳細はこちらをクリックしてください。
次のステップセットアップしたサービスノードについて、以下のことをしたいと考えます。
- カスタム認証の実装については、こちらをご参照ください。
- 双方向SSLを有効にするには、 こちらをご参照ください。