データアクションの応答設定

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

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

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

カスタムアクションは、トランスレーションマップと成功テンプレートを使用して、リモートWebサービスまたはAWS Lambda関数からの生の応答を、定義された成功スキーマに準拠する解決済み応答に変換します。 これらの成功テンプレートはマクロの使用をサポートしています。 詳細については、 データアクション用の速度マクロ

生の回答

データアクションの統合のためのアクションの実行は、全体の場合は応答生と呼ばれている応答 。 ただし、生の応答が必ずしもアクションの成功スキーマで定義されている形式と一致するとは限りません。 生の応答が一致しない場合は、変換マップと成功テンプレートを使用してデータを再フォーマットできます。

 メモ:   Google Cloud Functionsは、変換マップを処理する前にアクションがJSONに変換する文字列化されたJSON 応答を返します。

翻訳マップ

変換マップには、JSONPath式の評価から返された値(またはオブジェクト)にプロパティ名をマッピングするキーと値のペアが含まれています。

変換マップのデフォルト

トランスレーションマップのデフォルトには、トランスレーションマップのキーをデフォルト値に設定するキーと値のペアが含まれています。 変換マップで構成されたJSONPath式が値の解決に失敗した場合は、デフォルト値が使用されます。 ヌル値はデフォルトにフォールバックしません。

成功テンプレート

成功テンプレートは、速度テンプレート言語からの変数表記法を使用します。 成功テンプレートは、トランスレーションマップからのプロパティ名を使用して、JSONPath式によって返されたデータを挿入します。 一般に、成功テンプレート内のすべてのデータは、出力ではリテラルとして扱われます。 $ {}内の項目は、トランスレーションマップからの値への参照です。{} 詳細については、以下を参照してください。 Apache Velocityプロジェクト 文書化。

解決された回答

成功テンプレートは、成功スキーマに準拠しなければならない解決済みの応答を作成します。 そうでなければ、エラーが発生します。

成功スキーマ

成功スキーマは、アクションの応答に必要な形式を定義します。 

ユースケース

次のような状況では、翻訳マップと成功テンプレートを使用して未加工の回答を変換することがよくあります。

  • 生の応答には複数のオブジェクトが含まれています。 解決された出力が成功スキーマと一致するには、複数のオブジェクトを別のオブジェクトのメンバーとして返す必要があります。
  • 生の応答には、離散値に変換する値や配列などの変換型が含まれています。
  • 特定のデータのサブセットのみを返します。
  • 返された属性の順序を保証する必要があります。

サードパーティーからの応答が成功スキーマと一致する場合は、何も操作せずに生の応答を返します。 この場合は、デフォルトの要求テンプレートを使用してください。 他の値が提供されない場合、 デフォルト要求テンプレートは組み込みを使用します rawResult コンテキスト値。 成功テンプレートは、値を抽出するために変換マップを使用せずに結果全体を渡します。

$ {rawResult}

Salesforce GetContactByPhoneNumberアクションの例

生の反応

以下は、Salesforce GetContactByPhoneNumberアクションが実行されたときのSalesforceからの生の応答の例です。

{{
 "searchRecords": [
 {{
 「属性」: {{
 "タイプ": "コンタクト"、
 "url": "/services/data/v37.0/sobjects/Contact/003G000001LrjlTIAR"
 }、
 "Eメール": ヌル、
 "ファーストネーム": 「ジャック」、
 "自宅の電話": ヌル、
 "電話": "(317)555-0123"、
 "Id": 「003G000001LrjlTIAR」、
 "苗字": 「テラー」、
 "携帯電話": ヌル、
 「OtherPhone」: ヌル、
 "MailingStreet": ヌル、
 「MailingCity」: ヌル、
 "MailingState": ヌル、
 "MailingCountry": ヌル、
 "MailingPostalCode": Null
    }
  ]
}

生の応答にはルートノード(searchRecords)が含まれています。 searchRecordsオブジェクトは、Salesforceから返された連絡先情報を表します。

翻訳マップ

変換マップは、生の応答からデータのセグメントを引き出します。 この場合、ノード全体のsearchRecordsを取得します。 

ノート:  
  • 変換マップ内のプロパティ名は、英字(az、AZ)で始まり、英字、数字(0-9)、ハイフン( - )、または下線(_)のみを含める必要があります。 
  • 値の名前にスペースが含まれている場合は、名前の前後に角かっこと一重引用符を追加します(例:“ contact”)。 「$。['検索レコード']」

"translationMap": {{
 "コンタクト": "$ .searchRecords"
 }

JSONPath式 $.searchRecords 抽出原料からsearchRecordsオブジェクトに応答し、割り当てることがエイリアス &quot ;連絡先&quot ;. 成功テンプレートは別名を使用します。

成功テンプレート

成功テンプレートはエイリアスを参照します &quot ;連絡先&quot ; 翻訳マップで作成されました。 別名は、成功スキーマと一致するために必要なすべての値を含む生の応答内のオブジェクトを指します。

$ {お問い合わせ}

解決された応答

成功テンプレートは、アクションに対する解決された応答を作成します。 解決された応答は、アクションが返す応答です。 

[
 {{
 「属性」: {{
 "タイプ": "コンタクト"、
 "url": "/services/data/v37.0/sobjects/Contact/003G000001LrjlTIAR"
 }、
 "Eメール": ヌル、
 "ファーストネーム": 「ジャック」、
 "自宅の電話": ヌル、
 "電話": "(317)555-0123"、
 "Id": 「003G000001LrjlTIAR」、
 "苗字": 「テラー」、
 "携帯電話": ヌル、
 「OtherPhone」: ヌル、
 "MailingStreet": ヌル、
 「MailingCity」: ヌル、
 "MailingState": ヌル、
 "MailingCountry": ヌル、
 "MailingPostalCode": Null
    }
]		

支払いプロバイダで使用するためのアクション例

生の反応

以下は、クレジットカードに請求したときのアクションに対する未処理のレスポンスの例です。

{{
 「id」: "ch_1AS7Iv2eZvKYlo2CmgEX0bHw"、
 "物体": "充電"、
 "額": 999、
 "amount_refunded": 0、
 "応用": ヌル、
 "申込み費用": ヌル、
 "balance_transaction": "txn_1AS7Iv2eZvKYlo2CjrARHR6C"、
 「キャプチャされた」: NS、
 "作成した": 1496854005、
 "通貨": "米ドル"、
 "お客様": "cus_AFEwvtMn3H17af"、
 "説明": ヌル、
 "行き先": ヌル、
 "紛争": ヌル、
 "failure_code": ヌル、
 "failure_message": ヌル、
 "fraud_details": {{
 }、
 "請求書": "in_1AS6Mf2eZvKYlo2C9QEibbxz"、
 「ライブモード」: NS、
 「メタデータ」: {{
 }、
 "代表して": ヌル、
 "注文": ヌル、
 "結果": {{
 "network_status": "authorized_by_network"、
 "理由": ヌル、
 "risk_level": "正常"、
 "seller_message": 「支払いが完了しました。」、
 "タイプ": 「承認済み」
 }、
 「有料」: NS、
 "receipt_email": ヌル、
 "受付番号": ヌル、
 「返金済み」: NS、
 「払い戻し」: {{
 "物体": "リスト"、
 "データ": [

 ]、
 "has_more": NS、
 "総数": 0、
 "url": "/ v1 / Charges / ch_1AS7Iv2eZvKYlo2CmgEX0bHw / refunds"
 }、
 "レビュー": ヌル、
 "運送": ヌル、
 "ソース": {{
 「id」: "card_19ukSY2eZvKYlo2CHlYUs1DM"、
 "物体": "カード"、
 "address_city": ヌル、
 "address_country": ヌル、
 "住所1": ヌル、
 "address_line1_check": ヌル、
 "住所2": ヌル、
 "address_state": ヌル、
 "address_zip": 「94301」、
 "address_zip_check": "合格"、
 "ブランド": "ビザ"、
 "国": "我ら"、
 "お客様": "cus_AFEwvtMn3H17af"、
 "cvc_check": ヌル、
 "dynamic_last4": ヌル、
 "exp_month": 12、
 "exp_year": 2018、
 "指紋": 「Xt5EWLLDS7FJjR1c」、
 「資金」: "クレジット"、
 「last4」: 「4242」、
 「メタデータ」: {{
 }、
 "名前": ヌル、
 "tokenization_method": Null
  }、
 "source_transfer": ヌル、
 "statement_descriptor": ヌル、
 "状態": 「成功した」、
 "transfer_group": Null
}

翻訳マップ

変換マップは、生の応答からデータのセグメントを引き出します。 この場合、生の応答から4つのフィールドを取り出します。

"translationMap": {{
 "idValue": "$ .id"、
 "paidValue": 「$ .paid」、
 "outcomeValue": "$ .outcome"、
 "sourceValue": 「$ .source」
 }

JSONPath式 $.id, $.paid, $.outcome、そして $.source raw 応答から値を抽出し、それらをエイリアスに割り当てます idValue, 支払額, 結果値、そして sourceValue. 変換マップのデフォルト値は設定デフォルトの値を sourceValue. 成功テンプレートは、これらすべてのエイリアスを使用します。

変換マップのデフォルト

トランスレーションマップのデフォルトは、トランスレーションマップのキーをデフォルト値に設定します。 この場合、 応答 didにはソースプロパティが含まれていないため、 sourceValue デフォルト値に &quot ;わからない&quot ;.

"translationMapDefaults": {{
 "sourceValue": "\"わからない\""
 }

支払プロバイダからの応答は、翻訳マップにソースプロパティを含めることも、含めないこともあります。 私たちは、ソースプロパティを使用することを確実にするために場合は応答 、それを含んでおり、場合、エラーをスローしません応答 、それを含んでいない、セット sourceValue 翻訳マップのデフォルトは &quot ;わからない&quot ;.

応答に翻訳マップの他のフィールドが含まれていない場合、アクションは失敗します。

成功テンプレート

成功テンプレートは、エイリアスを参照する有効なJSON 応答を作成します idValue, 支払額、そして 結果値 翻訳マップで作成されたもの。 別名は、成功スキーマと一致するために必要な生の応答内の値を指します。

{{
 「id」: $ {idValue}、
 "結果": $ {outcomeValue}、
 「有料」: $ {paidValue}、
 "ソース": $ {sourceValue}
 }
 メモ:   $ {}の外側のテキストはリテラルとして扱われます。{}

解決された応答

成功テンプレートは、アクションに対する解決された応答を作成します。 解決された応答は、アクションが返す応答です。

{{
 「id」: "ch_1AS7Iv2eZvKYlo2CmgEX0bHw"、
 "結果": {{
 "network_status": "authorized_by_network"、
 "理由": ヌル、
 "risk_level": "正常"、
 "seller_message": 「支払いが完了しました。」、
 "タイプ": 「承認済み」
 }、
 「有料」: NS、
 "ソース": "わからない"
 }

カスタムアクションの設定については、 設定を追加 そして 構成を変更するを参照してください。

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

統合の詳細については、 データアクションの統合について.