Codage du formulaire URI (URL) pour les actions sur les données

Remarque :  Cet article s'applique aux intégrations Genesys Cloud, Google, Microsoft Dynamics 365, Salesforce, aux services web et aux actions de données Zendesk.

Certaines API, en particulier les API de connexion, ont besoin d'un encodage de formulaire d'URL pour les requêtes HTTP. Pour configurer une action de données Genesys Cloud pour l'encodage URI :

  1. Créez un en-tête de requête Content-Type avec la valeur x-www-form-urlencoded.

  2. Définissez le modèle de corps de requête dans l'interface utilisateur, ou requestTemplate dans JSON ou Terraform avec les paramètres sous forme de paires clé-valeur séparées par une esperluette (&). Par exemple, clé1=valeur1&clé2=valeur2.

    Remarque : Le corps de la requête n'est pas JSON, c'est une chaîne formatée comme des arguments de requête URL.

  3. Utilisez $esc.uriEncode() autour des valeurs ou des variables qui contiennent des caractères réservés à l'URL, tels que / ? : @ - . _ ! ~ $ & ' ( ) * + , ; =.

Exemple 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}" 
       } 
   } 

L'exemple suivant montre les valeurs d'entrée de l'utilisateur qui ont les caractères réservés :

"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"
	}
}
Remarque :  Pour vous protéger contre les attaques par injection, utilisez toujours la fonction $esc.uriEncode() avec l'entrée de l'utilisateur. Étant donné que les actions de données ne peuvent pas échapper automatiquement à la saisie de caractères spéciaux par l'utilisateur, vous devez utiliser la fonction le cas échéant à des fins de sécurité. Bien que les données proviennent d'une entité qui est invoquée à l'aide d'Architect ou de Script, l'échappement doit être effectué lors de la manipulation des URL et des formulaires d'URL.

Pour plus d’informations sur l’intégration, voir À propos de l’intégration des actions de données Zendesk.