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

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

  1. 创建一个值为 x-www-form-urlencoded 的内容类型请求标头

  2. 在用户界面中设置请求正文模板,或者在 JSON 或 Terraform 中设置请求模板,参数为键值对,由 & 符号 (&) 分隔。 例如,key1=valu e1&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 表单时必须进行转义。

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