データアクションの URI (URL) フォームエンコーディング
一部の API、特にログイン API では、HTTP リクエストの URL フォーム エンコードが必要です。 Genesys Cloud データ アクションを URI エンコード用に設定するには:
-
作成する
Content-Type
リクエストヘッダーの値x-www-form-urlencoded
。 -
設定するリクエスト本文テンプレートUIで、または
requestTemplate
JSON または Terraform で、パラメータはアンパサンド (&) で区切られたキーと値のペアとして指定します。例えば、key1=value1&key2=value2
。注意: リクエストボディはJSONではなく、URLクエリ引数としてフォーマットされた文字列です。 -
使用
$esc.uriEncode()
URL予約文字(/など)を含む値または変数の前後? :@ – 。 _ ! ~ $ & ' ( ) * + , ; =。
JSONの例
"config": { "request": { "requestTemplate": "grant_type=client_credentials&scope=customers_read_write&audience=$esc.uriEncode(\"https://api.example.com/v1/customers\")", "headers": { "Authentication": "Basic $encoding.base64(\"${credentials.clientid}:${credentials.clientSecret}\"", "Content-Type": "application/x-www-form-urlencoded" }, "requestType": "POST", "requestUrlTemplate": "${credentials.loginUrl}" } }
次の例は、予約文字を持つユーザー入力値を示しています。
"config": { "request": { "headers": { "Content-Type": "application/x-www-form-urlencoded" }, "requestUrlTemplate": "https://api.example.com/v1/customers", "requestTemplate": "description=$esc.uriEncode(\"${input.DESCRIPTION}\")&email=$esc.uriEncode(\"${input.EMAIL}\")", "requestType": "POST" } }
$esc.uriEncode()
ユーザー入力で機能します。データ アクションでは特殊文字を使用してユーザー入力を自動的にエスケープできないため、セキュリティ上の目的で該当する場合は関数を使用する必要があります。データは、Architect または Script を含む呼び出されるエンティティから取得されますが、URL および URL フォームを処理するときにはエスケープを行う必要があります。 統合の詳細については、 データアクションの統合についてをご覧ください。