仮想エージェント API の要求と応答の変換
仮想エージェント API で提供されるスクリプト化された拡張ポイントを通じて、仮想エージェント API の要求と応答をサポートされている形式に変換できます。
始める前に
必要なロール:admin
手順
-
次のように移動する。 All (すべて) > システム拡張ポイント > スクリプト済みの拡張点
- sn_va_as_service.va_api_payload_transformation 拡張ポイントは、要求を処理する前に、プライマリボットペイロードを標準の仮想エージェント API でサポートされている形式に変換します。sn_va_as_service.va_api_output_transformation 拡張ポイントは、仮想エージェント API 応答を、プライマリボットでサポートされている形式に変換します。
- どちらのスクリプト済み拡張ポイントにも、shouldTransform と transform の 2 つのパラメーターがあります。shouldTransform は、実装が実行されるかどうかを決定するために使用されます。transform は、要求または応答を変換するために使用されます。
-
要求ペイロードを変換する場合は、次の手順を実行します。
- sn_va_as_service.va_api_payload_transformation 拡張ポイントを選択
- [関連リンク] セクションで、[実装を作成] を選択します。
-
要件に従って拡張ポイントスクリプトを更新します。
sn_va_as_service.va_api_payload_transformation 拡張ポイントでは、要求パラメーターは payload と headers の 2 つのキーを持つオブジェクトです。payload はプライマリボットから受信した要求ペイロードで、headers は要求ペイロードで送信されたヘッダーです。実装例を次に示します。
var va_api_payload_transformation = Class.create(); va_api_payload_transformation.prototype = { initialize: function() {}, shouldTransform: function(request) { return request.payload.caller === "examplebot"; }, /* return object for transform function should be in the following format transformedRequest = { payload: request.payload, headers: request.headers }; */transform: function(request) { var payload = request.payload; var headers = request.headers; var vaAPIPayload = { "userId": payload.userId, "emailId": payload.email, "message": { "text": payload.message, "typed": true }, "contextVariables": { "requester_session_language": payload.user_language }, "appInboundId": "custom_1" }; return { payload: vaAPIPayload, headers: headers }; },図 : 1. sn_va_as_service.va_api_payload_transformation 拡張ポイント - [更新] をクリックします。
-
応答ペイロードを変換する場合は、次の手順を実行します。
- sn_va_as_service.va_api_output_transformation 拡張ポイントを選択
- [関連リンク] セクションで、[実装を作成] を選択します。
-
要件に従って拡張ポイントスクリプトを更新します。
sn_va_as_service.va_api_output_transformation 拡張ポイントでは、応答パラメーターは inputPayload と responsePayload の 2 つのキーを持つオブジェクトです。inputPayload は仮想エージェント API から受信した要求ペイロードで、responsePayload は変換された応答のビルドに使用できる仮想エージェント API からの応答です。要求ペイロードの appInboundId フィールドを使用して、true または false を返すかどうかを決定します。実装例を次に示します。
var va_api_output_transformation = Class.create(); va_api_output_transformation.prototype = { initialize: function() {}, shouldTransform: function(response) { return (response.inputPayload.appInboundId === 'custom_1'); }, /* input object param for transform function should be in the following format response = { inputPayload: response.inputPayload, responsePayload: response.responsePayload }; */ transform: function(response) { //return only transformed payload return { 'custom_structure': response.responsePayload }; }, type: 'va_api_output_transformation' };図 : 2. sn_va_as_service.va_api_output_transformation 拡張ポイント - [更新] をクリックします。