データアクション用の速度マクロ


注意:この記事は、AWS Lambda、Microsoft Dynamics 365、PureCloud、Salesforce、Webサービス、およびZendeskデータアクション統合に適用されます。

データアクションの統合により、カスタムアクションを作成できます。これらのカスタムアクションには、Velocity テンプレート言語を使用するテンプレートによるリクエストの設定とレスポンスの設定が含まれます。これらのテンプレートは、Velocity マクロの範囲をサポートします。

Velocityテンプレートは、次のフィールドで有効です。

  • requestUrlTemplate
  • ヘッダー
  • requestTemplate
  • successTemplate

詳細については、 カスタムアクションを作成する, 要求の構成そして 応答構成.

注意:フォーマルとサイレント形式表記の比較

  • 正式表記 : ${変数}

    変数が null の場合、正式表記は変数名を出力します。

  • サイレント形式表記 : 変数

    変数が null の場合、サイレント表記は空の文字列を出力します。

数学ライブラリ

接頭辞: 数学

これらの算術マクロを使用して、基本的な算術演算を実行します。詳細については、 クラス MathTool Velocity のドキュメントで説明します。

文字列エスケープライブラリ

接頭辞: Esc キー

Velocity テンプレートで文字列をエスケープするには、EscapeTool を使用します。EscapeTool は、Java、JavaScript、HTML、XML、および SQL の出力をエスケープするメソッドを提供します。EscapeTool は、Velocity テンプレート言語の文字をエスケープするメソッドも提供します。詳細については、 クラス EscapeTool Velocity のドキュメントで説明します。

特に2つの方法が役に立ちます。

  • ます。 url (): UrlTemplate の引数の値をエスケープするには、このメソッドを使用します。それ以外の場合は、スペースまたはその他の非 URL 文字を含む Url は無効です。
  • . d (): URL にドル記号 ($) を含めるには、このメソッドを使用します。

次の表は、さまざまなマクロの入力と出力の例を示しています。

警告:JavaScript エンコードを使用しないでください。javascript () は、アクションを中断する無効な JSON を作成できます。

マクロ 入力 出力
。 java () 彼はしませんでした言う、 停止! 彼はしませんでしたtと言う、 \ \やめる! \ \
. html () パン & バター & ; quot ; パン & ; quot ;& ; アンプ ;& ; quot ; バター & ; quot ;
. xml () パン & バター & ; quot ; パン & ; quot ;& ; アンプ ;& ; quot ; バター & ; quot ;
. sql () マクヘイルs ネイビー マクヘイルs ネイビー
ます。 url () こんにちはここ & ; こんにちは + ここで + % 26 +
・ドル $
. ハッシュ #
. バックスラッシュ \
。引用
.singleQuote
. 感嘆符 !

エンコード。 base64

Base64 は指定した文字列をエンコードします。

テンプレートの例

Encoded field is $encoding.base64(\"${first} and ${second}\")

テンプレート例の結果

入力 解決済みテンプレート

最初の = = 猫

第二 = = 犬

エンコードされたフィールドは Y2F0IGFuZCBkb2c =

esc jsonString

POST、PUT、および PATH 要求のための JSON ボディを作成するときは、任意の文字列をエスケープする必要があります。このマクロは、JSON エンコード規則に基づいて引用符やその他の文字をエスケープします。

注意esc jsonString Unicode 文字を異なる方法で扱います。 EscapeTool () は。

テンプレートの例

$esc.jsonString(${input.json})

テンプレート例の結果

入力 解決済みテンプレート
これは {埋め込みタブ} を含む文字列です。 、{埋め込みの新しい行} とキリル文字のԂ これは文字列です。 \\t, \\\そして \\n、キリル文字のԂ
注意:文字列内の Unicode 文字は JSON エンコーディング仕様では 規格 or 標準 であるため、Unicode 文字は \u0000 フォーム。

successTemplateUtils.firstFromArray

このマクロは、提供された JSON 配列文字列から最初の要素を抽出し、2つのパラメータを持ちます。抽出された値の入力配列である最初のパラメーターが必要です。配列が空のときに返される応答を指定する2番目のパラメーターはオプションであり、デフォルトでは何も返しません。配列が空でない場合、2番目のパラメーターは無視されます。

の入力が firstFromArray translationMap JSONPath を通じて抽出されたデータであり、文字列のエスケープは必要ありません。以下のテンプレート例では、 Id などの translationMap エントリから来ることができます。 Id: $ idArrayに送信します。

テンプレートの例と結果

テンプレートの例 入力 解決済みテンプレート
${成功テンプレートユーティリティ.最初の差出人配列(${ids})} id = = [1、2、3] 1
id = = [{\id \ \{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}id \ \{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}id \ \{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}id \ \4] {\id \ \1
id = = []
id = = この入力はエラーになります。
${成功テンプレートユーティリティ.最初の差出人配列(\{"error" :{"code" :400000,"message" :"One of the request inputs is not valid."}}{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}{}\)} id = = [1、2、3] 1
id = = [{\id \ \{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}id \ \{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}id \ \{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}id \ \4] {\id \ \1
id = = [] {}
id = = この入力はエラーになります。
${成功テンプレートユーティリティ.最初の差出人配列(\{"error" :{"code" :400000,"message" :"One of the request inputs is not valid."}}{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}{"error" :{"code" :400000,"message" :"One of the request inputs is not valid."}})}* id = = [1、2、3] 1
id = = [{\id \ \{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}id \ \{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}id \ \{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}id \ \4] {\id \ \1
id = = []
id = = この入力はエラーになります。

* このテンプレート例では、EscapeTool を使用して文字をエスケープします。詳細については、 文字列エスケープライブラリ.

urlTool.optionalQueryParam

このマクロは、値が空でない限り、キーと値のペアをクエリパラメータとしてフォーマットします。それ以外の場合、マクロは空の文字列を返します。テンプレートにアンパサンド (& ;) を含めないでください。マクロは自動的にアンパサンドを追加します。テンプレートの結果の例を参照してください。 少なくとも1つの必須クエリパラメータの後にのみマクロを使用してください。次のテンプレートの例では、必要なクエリパラメーターは .

注意:サイレント形式表記を使用する : {変数}。
テンプレートの例

amount=${input.AMOUNT}$urlTool.optionalQueryParam(\"description\", $!{input.DESCRIPTION})

テンプレート例の結果

入力 解決済みテンプレート

input.AMOUNT == 30

入力。説明 = = ジャガイモ

金額 = 30 & ; 説明 = ジャガイモ

input.AMOUNT == 30

入力。説明 = =

金額 = 30

Java 文字列メソッドマクロ

値の大文字小文字の変更や文字列からの値の抽出など、文字列変数を操作するには、Velocity テンプレートで Java 文字列メソッドを使用します。詳細については、 クラス文字列 Java ドキュメントで説明します。

次の例では、 toUpperCase() メソッドは、変数の文字列値を大文字に変換します。は スプリット () メソッドは、変数を文字列の配列に分割します。変数連結は、変数、変数、および変数の配列の最初の項目から値を変更します。

テンプレートの例

#set($a = ${input1.string1} )
#set($a = $a.toUpperCase() )
#set($b = ${input1.string2} )
#set($c = $b.split("\+") )
#set($d = "We are using ""${a}"" ""${b}"" ""$c[1]"" to render this." )
$d

テンプレート例の結果

入力 解決済みテンプレート

入力 string1 = 値1

入力 string2 = 値 1 + 値2

使用してい 値1 値 1 + 値2 Value2 これをレンダリングします。

Microsoft Dynamics マクロ

msdynamics.fieldSearchFilter

このマクロは、検索対象の値とフィールドのリストを指定して、検索フィルタを作成します。マクロは、リスト内の各フィールドと値を比較します。

テンプレートの例

$msdynamics.fieldSearchFilter(\"$input.EMAIL_ADDRESS\", [\"emailaddress1\", \"emailadress2\"]

テンプレート例の結果

入力 解決済みテンプレート
入力。EMAIL_ADDRESS = TestMail @example.com emailaddress1 eq TestMail@example.com または emailaddress2 eq TestMail@example.com

msdynamics.phoneNumberFilter

このマクロは、電話番号と検索するフィールドのリストを指定して、検索フィルタを作成します。このマクロは、サポートされていない文字や、+ や括弧などの数字以外の値を電話番号から取り除き、各フィールドの間に \"or \" を追加します。この検索フィルタは、電話番号を取引先企業レコードの複数の電話番号と比較する場合に便利です。

テンプレートの例

$msdynamics.phoneNumberFilter(\"$input.PHONE_NUMBER\", [\"telephone1\", \"telephone2\"])

テンプレート例の結果

入力 解決済みテンプレート
入力。PHONE_NUMBER = + 1 (555) 555-0123 telephone1 eq + 1 (555) 555-0123 または telephone2 eq + 1 (555) 555-0123 または telephone1 eq 15555550123 または telephone2 eq 15555550123

Salesforce マクロ

Salesforce.escReserved

このマクロは、URL で作成された Salesforce SOQL/SOSL クエリからの予約文字をエスケープします。Salesforce は以下の文字を留保します。& | ! { } [ ] ( ) ^ ~ * : \ + -. このマクロは、文字が適切にエスケープされることを保証します。詳細については、 {SearchQuery} を検索します。 Salesforce のドキュメントを参照してください。

テンプレートの例

FIND {$salesforce.escReserved(${input.PHONE_NUMBER})} IN PHONE FIELDS

テンプレート例の結果

入力 解決済みテンプレート
入力。PHONE_NUMBER = = (555) 555-5555 電話フィールドで{ \ \(555 \ \)555 \ \ -5555}を見つける

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

統合について詳しくは、AWS Lambdaデータアクション統合についてMicrosoft Dynamics 365データアクション統合についてPureCloudデータアクション統合についてSalesforceデータアクション統合についてWeb サービス データアクションの統合について、そして Zendeskデータアクション統合についてを参照してください。