メモ:   この記事は、AWS Lambda、Genesys Cloud、Google、Microsoft Dynamics 365、Salesforce、Web サービス、Zendesk データ アクションの統合に適用されます。

データアクション統合用のカスタムアクションを作成できます。 カスタムアクションは、その設定にリクエストとレスポンスを含みます。 詳細については、 インテグレーション用のカスタムアクションを作成する.

この記事では、回答の一部について説明します。 要求については、設定を要求するを参照してください。

カスタムアクションでは、リクエストテンプレートを使用して、リモートエンドポイントまたは AWS Lambda 関数に対する POST、PUT、パッチリクエストの本文を定義します。 リモートエンドポイントはによって定義されます requestUrlTemplate. これらの要求テンプレートは、マクロの使用をサポートします。 詳細については、 データアクション用の速度マクロ

メモ: 
  • GET 要求は、要求テンプレートを使用しません。 の requestTemplate フィールドはデフォルト値を示します 「$ {input.rawRequest}」.
  • 過度にネストされたJSONオブジェクトは、データアクションサービスのパフォーマンスに影響を与える可能性があります。 パフォーマンスを維持するため、JSONオブジェクトの深さは50レベルに制限されている。 詳しくは、Genesys Cloud Developer Center のLimits をご覧ください。

警告:  内の入力変数または出力変数の使用をエスケープします requestTemplate, successTemplate、または requestUrlTemplate. 変数を特殊文字で適切にエスケープしないと、データアクションは実行時に失敗します。

requestTemplate

リクエストテンプレートは、Velocityを使用して、POST、PUT、およびPATCHリクエストの本体を定義します。 リクエストテンプレートを保存すると、APIレスポンスはそれを次のように参照します requestTemplateUri

  • AWS Lambdaデータアクション統合の場合、指定したすべての入力 requestTemplateで利用可能になります出来事 呼び出されたAWS Lambda関数のパラメーター。
  • Google Cloud Functionsでは、 $ esc.jsonString マクロは、リクエスト内の文字列をJSONに変換します。

ヘッダー

ヘッダーは、リモートエンドポイントに送信される要求に HTTP ヘッダーとして追加されるキーと値のペアです。 ヘッダー値は、速度置換をサポートします。

 メモ:   認証を処理するために API に依存している場合は、要求ヘッダーに承認を含めないでください。 統合によってヘッダーが自動的に設定されます。 それ以外の場合は、要求ヘッダーに独自の権限を含めます。

AWS Lambdaデータアクション統合は、キーと値のペアを次のように追加します clientContext 呼び出しの項目 環境 オブジェクト。 属性が存在する場合、コンテキスト オブジェクトに以下の属性が自動的に設定されます:

  • ININ-会話ID
  • ININ-組織ID
  • ININ-Home-Organization-Id
  • ININ-相関ID
  • ININ-ユーザーID
  • ININ-統合ID

requestType

リクエストの種類 データデータ アクションでHTTPリクエストのタイプを定義します。 使用可能な HTTP 要求の種類には、POST、PUT、および PATCH があります。

 メモ:   AWS LambdaとGoogleデータアクションの統合には、POSTを使用します。 このHTTPメソッドは、すべての要求本文が送信されることを保証します。

requestUrlTemplate

requestUrlTemplate は、HTTPリクエストがヒットするリモートエンドポイントポイント、またはAWSデータアクション統合が呼び出すAWS Lambda関数のARNです。 requestUrlTemplate 変数置換にVelocityテンプレートを使用します。 

 メモ:   注意:requestUrlTemplate参照する場合HTTP エンドポイント 、 requestUrlTemplateHTTPセキュア(HTTPS) エンドポイント参照する必要があります。

requestTemplateUri

requestTemplateUri は、参照URIです requestTemplate. 保存するとき requestTemplate、統合により崩壊します。 の内容を表示するには requestTemplate 保存した後、GET操作を発行します requestTemplateUri.

例 requestTemplate

アクション実行ボディ

次のREST呼び出しは、アクションsampleAction123をトリガーし、 inputSchema サンプルアクションで。 

curl -X POST https://api.mypurecloud.com/api/v2/integrations/actions/sampleAction123/execute \
  -H 'authorization: bearer *****' \
  -d '{
    "USER_ID": 123,
    "FIRST_NAME":"John",
    "LAST_NAME": "Smith"
}'

アクションサービスは、サンプルアクション内の次の3つのプロパティを参照する値を見つけて置き換えます。 requestUrlTemplate そして requestTemplate

requestTemplate

アクションは次のように構成されます requestTemplate

"{"firstName": "$esc.jsonString(${input.FIRST_NAME})","lastName": "$esc.jsonString(${input.LAST_NAME})"},

エスケープの詳細については、 esc.json文字列 セクションでの データ アクションの速度マクロ.

アクションサービスは、サンプルアクションの Velocity テンプレートプレースホルダーを置き換え、次のようになります。

{
  "firstName": "John",
  "lastName": "Smith"
}

requestTemplate リモートエンドポイント送信されるHTTP POSTの本文になります。 

Web サービス呼び出し

変更されたサンプルアクションにより、次の web サービスコールが発生します。

curl -X POST \
  https://sample.com/users/123 \
  -H 'content-type: application/json' \
  -H 'UserAgent: GenesysCloudIntegrations/1.0' \
  -H 'Company: My company' \
  -d '{
  "firstName": "John",
  "lastName": "Smith"}'

新しいアクションを作成する要求

以下は、POSTを実行するように構成されたアクションです。 https ://sample.com/users/${input.USER_ID}inputSchema リクエストの作成に使用される3つのプロパティを定義します。 USER_ID, FIRST_NAME, LAST_NAME. これらの3つのプロパティは、 requestTemplate そして requestUrlTemplate.

{
  "category": "Sample",
  "contract": {
    "input": {
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "description": "Update user's first and/or last name",
        "properties": {
          "USER_ID": {
            "description": "User Id",
            "type": "number"
          },
          "FIRST_NAME": {
            "description": "Users first name",
            "type": "string"
          },
          "LAST_NAME": {
            "description": "User last name",
            "type": "string"
          }
        },
        "required": [
          "USER_ID",
          "FIRST_NAME",
          "LAST_NAME"
        ],
        "title": "Update name request",
        "type": "object"
      }
    },
    "output": {
      ...
    }
  },
  "config": {
    "request": {
      "headers": {
        "Content-Type": "application/json",
        "UserAgent": "GenesysCloudIntegrations/1.0",
        "Company": "My company"
      },
      "requestTemplate" : "{\"firstName\": \"${input.FIRST_NAME}\",\"lastName\": \"${input.LAST_NAME}\"}",
      "requestType": "POST",
      "requestUrlTemplate": "https://sample.com/users/${input.USER_ID}"
    },
    "response": {
      ...
    }
  },
  "name": "Sample Action",
  "secure": true
}

アクション定義を取得した結果

{
    "id": "<action ID>",
    "name": "Sample Action", 
    ...
    "config: {
        "request": {
            "requestUrlTemplate": "https://sample.com/users/${input.USER_ID}",
            "requestTemplateUri": "/api/v2/integrations/actions/<action ID>/templates/requesttemplate.vm",
            "requestType": "POST",
            "headers": {
                "Content-Type": "application/json",
        	    "UserAgent": "GenesysCloudIntegrations/1.0",
        	    "Company": "My company"
         },
         "response": {
             ...
         }
    },
    "category": "Sample",
    "version": 1,
    "secure": true,
    "selfUri": "/api/v2/integrations/actions/<action ID>"
}

カスタムアクションの設定の詳細については、 構成を追加 そして 構成の変更.

詳細については、 統合のカスタムアクションについて

統合の詳細については、 データアクションの統合についてをご覧ください。