サービスノードは、サードパーティのWebサービスにRESTやSOAPリクエストを行えるようAPIサービスを追加するのに使用できるダイアログタスク内のコンポーネントタイプです。エンティティなどのノードでAPIリクエストに必要なパラメータを収集し、ユーザーの入力を取り込む場合に使用します。
サービスタイプは次のいずれかで定義することができます。
- カスタムサービス − サードパーティのWebサービスへのAPIリクエストを定義します。これはデフォルトの設定です。
- HTMLから画像 − JavaScript を使用して、画像としてレンダリングするHTMLを定義します。たとえば、HTMLや、画像に変換したいHTMLマークアップが文字列として含まれるWebサービスのレスポンスのキーの値を構成する場合などです。
- URLから画像 − 画像をレンダリングするために読み込むWebページのURLを定義します。
- カスタム認証サービス
- アラートサブスクリプションサービス − 一連のダイアログの一部としてユーザーに積極的に送信される、文脈に沿ったアラートを定義します。
- データテーブルサービス − ボットに割り当てられた任意のデータテーブル/テーブルビューのデータを照会および操作するためのCRUD 操作を定義します。
サービスノードの作成
- 新規のサービスノードを追加する箇所でプラスアイコンをします。
- サービスを選択し、新規のサービスコール作成をクリックします。事前に定義されたサービスノードのリストから選択することもできます。
- 新規デフォルトのサービスノードが追加され、コンポーネントプロパティパネルが表示されます。
- 一般設定で、たとえば、FetchWeatherのようにサービスノードの名前と表示名を入力してください。
- サービスタイプを選択します。
- カスタムサービス − サードパーティのWebサービスへのAPIリクエストを定義します。これはデフォルトの設定です。
- HTMLから画像 − JavaScript を使用して画像としてレンダリングするHTMLを定義します。たとえば、HTMLを構成したい場合や、Webサービスのレスポンスキーの値にHTMLマークアップが文字列として含まれていて、それを画像に変換したい場合などに使用します。
- URLから画像 − 画像をレンダリングするために読み込むWebページのURLを定義します。
- カスタム認証サービス − タスクフローに必要な認証サービスを提供するサードパーティアプリケーションへのURLを定義します。詳細を見る。
- アラートサブスクリプションサービス − コンテキスト的に関連のアラートを定義し、一連のダイアログの一部としてユーザーに積極的に送信される、文脈に沿ったアラートを定義します。
- 選択されたサービスタイプに基づき、タイプ/サブタイプまたは Auth URL を入力します。
- リクエストの定義のセクションで、 >リクエストの定義をクリックします。
- リクエスト< サービスeXXXX >の定義 ダイアログが表示されます。選択された サービスタイプに応じて、このトピックの次のセクションのいずれかを参照してください:
注意:カスタム認証サービスの場合、リクエスト定義セクションは適用されず、代わりにレスポンスセクションが表示されます。詳細を見る。 - ノードの 接続パネルから、次に実行するダイアログタスクのノードを決定できます。条件文は、ダイアログタスク内の任意のエンティティオブジェクトまたはコンテキストオブジェクトの値に基づいて書くことができ、また遷移にインテントを使用することもできます。コンポーネント遷移を設定するには、次のステップを実行します。
- デフォルト接続で利用可能なノードから選択できます。
- 条件付きフローを構成するには、IFを追加をクリックします。
- 次のいずれかの基準に基づいて条件式を設定します。
- エンティティ:これらの演算子のいずれかを使用して、ダイアログ内のエンティティノードを特定の値と比較します。存在する、等しい、より大きいか等しい、より小さいか等しい、等しくない、より大きい、より小さい。エンティティ、演算子をその対応のドロップダウンリストにより選択し値ボックスに数値を入力します。たとえば、PassengerCount (エンティティ) が5 (指定された値) よりも大きい (演算子) 場合。
- コンテキスト:これらの演算子のいずれかを使用して、ダイアログ内のコンテキストオブジェクトを特定の値と比較します。存在する、等しい、より大きいか等しい、より小さいか等しい、等しくない、より大きい、より小さい。例: Context.entity.PassengerCount (コンテキストオブジェクト) が5 (指定された値) より大きい (演算子)
- インテント:次のユーザーの発言と一致するインテントを選択します。
- ドロップダウンリストのThen go to で、条件式が成功した場合のダイアログフローで実行する次のノードを選択します。たとえば、PassengerCount (エンティティ) が5 (指定された値) よりも大きい場合、次に (Then go to) Offers (サブダイアログ) に進みます。
- Elseのドロップダウンリストで、条件式が失敗した場合に実行するノードを選択します。
注意: 複数のIf条件を書く場合は、 最後のIf条件付きの条件式の下でElse Ifを追加をクリックしてください。
カスタムサービスの定義
- サービスタイプでカスタムサービスがが選択されている場合、サブタイプフィールドで、次のいずれかを選択します。
- REST − API WebサービスはRESTのサービスを使用しています。
- SOAP − API WebサービスはSOAPのサービスを使用しています。
- リクエストの定義のセクションで、リクエストの定義 をクリックして、Webサービスタイプの設定を指定します。
- 以下の図のように、サービスノード名のリクエストの定義> ダイアログが表示されます。
- リクエストURLフィールドの最初のフィールドで、リクエストに使用する下記のいずれかのHTTPメソッドを選択します。
- POST – サーバーにデータを送信したり、たとえば、HTMLフォームを使用して、サーバーに顧客情報やファイルのアップロードなどのデータを送信するために使用します。
- PUT − ターゲットリソースの内容を送信された内容に置き換えます。
- PATCH − 既存のターゲットリソースのコンテンツに送信されたコンテンツを追加します。
- DELETE − 既存のターゲットリソースの内容を削除します。
- GET − 既存のターゲットリソースの内容を返します。
注意:SOAPサービスの場合、POSTメソッドを使用してXMLペイロードを’body’に渡すことができます。
- 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 }}
を使用してください。詳細については、コンテキスト オブジェクトを参照してください。 - オプションで、アドバンス表示をクリックし、選択します。
- Kore.aiボットのアクセスがKore.aiコネクターエージェントを使用している場合は、「コネクタを使用してアクセスする」フィールドに、「はい」と入力してください。詳細については、Kore.ai コネクタの使用を参照してください。
- PII データの非識別化で、ユーザーがボットと共有する機密性の高い情報タイプを編集することができます。詳細については、個人識別情報の編集を参照してください。
- Authタブで、このサービスノードの呼び出しに必要な認証タイプを選択するか、必要に応じて新しい認証タイプを定義します。詳細については、認証の設定を参照してください。
- 指定されたリクエストURLにアクセスする必要がある場合は、ヘッダータブでヘッダーをキー/値のペアとして指定します。 認証ヘッダーは、Authタブで指定された認証タイプに基づいて自動生成されます。たとえば、Content-type、Acceptなどの他の標準ヘッダーやカスタムヘッダーを定義する必要があります。 ここで定義されたヘッダーは、このサービスノードにのみ適用されます。
- ボディタブで、ボディのコンテンツタイプのいずれかを選択します。
- 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 }}
を使用してください。詳細については、コンテキストオブジェクトを参照してください。
- テストリクエストタブで、テストをクリックして、指定したAuthタイプ、HTTP ヘッダー、ボディパラメータ (定義されている場合) を使用して、オプションでAPI リクエストURL を送信します。レスポンスがテキストエリアに表示されます。サンプルレスポンスを保存 をクリックして、テストレスポンスをこのノードのサンプルレスポンスとして保存します。
- サービスノードのリクエストを保存するには、保存をクリックし、サービスノードのリクエストを保存して< サービスノード名の >リクエスト定義 ダイアログを閉じます。
- サンプルレスポンス セクションで、オプションで サンプルレスポンスを追加 をクリックして、サンプルレスポンスを手動で入力または貼り付けるために使用できる サンプルレスポンスを追加 ダイアログを表示します。
- オプションとして、サンプルレスポンスを追加のドロップダウンリストで次のいずれかを選択します。
- JSON − リクエスト URL レスポンスで利用可能な JSON キー/値のペアのリストで、他のノードで変数として使用することができます。
- RAW − 他のノードで変数として使用できるキー/値のペアのリス
トです。
- コンポーネントプロパティ セクションの コンポーネント で、サービスコールを終了するためのタイムアウトを設定できます。初期設定では20秒に設定されていますが、5秒から20秒の間で任意の値を選択できます。
画像に変換するURLの定義
- サービスタイプにURLから画像が選択されている場合、タイプの設定は読み取り専用です。
- リクエストの定義セクションで、サービスタイプにURLから画像が選択されている場合の設定を指定するには、リクエストの定義をクリックします。< サービスノード名 >のリクエストの定義のダイアログは下図のように表示されます。
- 変換するURLフィールドに画像のURLを入力します。URL で
Context
オブジェクトキーを使用する場合の構文では、たとえば、https://myURLimage.com/{{context.entities.imageName}}のようにオブジェクト名を二重括弧で囲みます。”” - レンダリングサイズのセクションで、画像サイズの名前を指定します。たとえばiPhoneまたはタブレットの場合、幅と高さをピクセル単位で入力し、さらにサイズを追加するには+追加をクリックします。保存してダイアログを閉じるには追加をクリックします。
- サービスノードのリクエストを保存するには保存をクリックし、< サービスノード名 >のリクエストの定義のダイアログを閉じます。
画像に変換するHTMLの定義
- サービスタイプでHTMLから画像が選択されている場合、タイプの設定は読み取り専用です。
- リクエストの定義のセクションで、リクエストを定義をクリックして、サービスタイプでHTMLから画像が選択されている場合の設定を指定します。< サービスノード名 >リクエストの定義ダイアログが以下の図のように表示されます。
- HTMLを変換 フィールドに、画像の HTML を入力します。
- レンダリングサイズ セクションで、画像サイズの名前を指定します。たとえば、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の例では、テーブルの行が例に追加されると、エンドユーザーに以下のような画像をレンダリングすることができます。
アラートサブスクリプションサービスの定義
ボットユーザーを自動的に登録して、一連のダイアログの一部として文脈に沿ったアラートを送信することができるようになりました。たとえば、特定の日の航空券を予約した人が、目的地の天気予報の最新情報を定期的に受け取ることができるように自動登録することができます。
アラートサブスクリプションサービスを設定する
- アラートを設定したいサービスノードのプロパティパネルを開きます。
- サービスタイプ のドロップダウンリストで、自動サブスクリプションサービスを選択します。
- リクエストを定義をクリックします。スマート/自動アラートダイアログが開きます。
注意: アラートサブスクリプションサービスを作成するには、既存のアラートタスクをベースにする必要があります。ユーザーは、ダイアログ内の関連するサービスノードに到達した場合、アラートタスクに自動登録されます。 - アラートの選択ドロップダウンリストから、アラートタスクを選択します。リストは、ボットに関連する公開済みのアラートタスクのみで構成されています。
- 以下の説明を参考にして、必要な情報を入力します。
アラートサブスクリプション (スマートアラート) の設定
一般的なアラートの設定では、アラートのパラメータやフィルタ、その他必要な詳細をボットのユーザーが入力します。これはアラートの自動配信であるため、開発者がこれらの詳細を設定する必要があります。
アラートパラメータ
これらは、選択したアラートによって異なります。アラートサブスクリプションサービスで使用するデフォルトのパラメータ値を指定します。
この例では、アラートのために定義されるパラメータは、トピック名とニュースの地域です。対象都市の天気予報をユーザーに送信することを想定しているため、天気予報とcontext.entity.destinationcityにそれぞれパラメータ値を設定します。
フィルタ
これらは、選択したアラートによって異なります。アラートサブスクリプションサービスに使用するフィルタ基準条件を指定します。
アラート頻度
アラート通知を送信する頻度を指定します。日程、頻度、時間枠を選択する必要があります。
- 日程の選択 ドロップダウンから、毎日、平日、週末のいずれかを、アラートを送信するタイミングに応じて選択します。
- 頻度の選択ドロップダウンから、1 日に一定の間隔で複数回のアラートを送信する場合は [毎に] を、1 日に特定の時刻に1回のアラートを送信する場合は [時刻] を選択します。
- 時間の選択ドロップダウンから、上記で選択した頻度の値に応じて、間隔時間の値または一日の時間を選択します。
この例では、毎日午前6時にアラートがユーザーに送信されるように設定されました。
スマートアラートの期限
次のいずれかのオプションから、ユーザーへのアラート送信を終了するタイミングを設定します。
- 期間:サブスクリプションの日付から入力した日数が経過すると、通知の送信を停止します。
- 通知回数:入力された数の通知が送信されたあと、アラートの送信を停止します。
アラートアップグレード
基礎となるアラートタスク (最初に選択した公開アラート) のアップグレード版が公開された場合の、このアラートの期待される動作を定義します。
- 既存のインスタンスを削除
このスマートアラートの既存のサブスクリプションはすべて削除され、ユーザーは通知を受け取ることができなくなります。ユーザーは、ダイアログを実行して一連のダイアログのサービスノードに到達したときにのみ、アップグレードされたアラートタスクに自動登録されます。 - ユーザーが手動でサブスクリプションをアップグレードできるようにする
ユーザーは、自動サブスクリプションをアップグレードするためのリンクが表示されたアップグレード通知を、選択したチャネルで受け取ることができます。アップグレードが成功すると、ユーザーは成功の通知を受け取ります。
データサービスの定義
- サービスタイプでデータサービスが選択されると、タイプ設定で2つのオプションが与えられます。
- Table − データ テーブルでCRUD操作を実行するには、このオプションを選択します。
- View − テーブルビューからデータを取得するには、このオプションを選択します。
注意:ボットはTable/Viewにアクセスする権限をもっている必要があります。Table/Viewの管理者が、この権限を与えることができます。方法についてはこちらを参照してください。
- リクエストの定義セクションで、リクエストの定義をクリックして実行したい操作を指定します。詳細については、こちらを参照してください。