数据操作的 URI (URL) 形式编码

笔记本文适用于 Function、Genesys Cloud、Google、Microsoft Dynamics 365、Salesforce、Web 服务和 Zendesk 数据操作集成。

某些 API,尤其是登录 API,需要对 HTTP 请求进行 URL 形式编码。 要配置 URI 编码的 Genesys Cloud 数据操作:

  1. 创建一个Content-Type请求标头的值x-www-form-urlencoded

  2. 设置请求正文模板在用户界面中,或requestTemplate在 JSON 或 Terraform 中,参数为以与号 (&) 分隔的键值对。例如,key1=value1&key2=value2

    注意: 请求正文不是 JSON,它是一个格式化为 URL 查询参数的字符串。

  3. 使用$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 表单时必须进行转义。

有关集成的更多信息,请参阅 关于数据操作集成