Macros Velocity pour les actions de données
Les intégrations d’actions de données vous permettent de créer des actions personnalisées. Ces actions personnalisées incluent réponse des configurations de demande et des configurations avec des modèles qui utilisent le langage Velocity Template. Ces modèles prennent en charge une gamme de macros Velocity.
- Utilisez esc.jsonEncode pour échapper aux chaînes de caractères dans les corps JSON. Voir esc.jsonEncode.
- Utilisez esc.url() ou urlTool.optionalQueryParam() pour échapper au chemin d'accès ou aux paramètres de requête pour un requestUrlTemplate ou requestTemplate si vous utilisez x-www.form-urlencoded valeurs. Voir String-escaping library et URL form encoding for data actions.
Les modèles Velocity sont valides pour les champs suivants :
- le modèle requestUrlTemplate
- En-têtes
- Modèle requestTemplate
- successTemplate
Pour plus d’informations, voir Créer une action personnalisée, Configuration de la demandeet Configuration de réponse.
Remarque : Notation formelle vs silencieuse
- Notation formelle : $ {variable}
Si la variable est nulle, la notation formelle produit le nom variable.
- Notation formelle silencieuse : $!$ {variable}
Si la variable est nulle, la notation silencieuse produit une chaîne vide.
- mathématiquesbibliothèque
- Évasion de cordesbibliothèque
- Encoding. base64
- esc.jsonEncode
- esc.jsonDecode
- successTemplateUtils. firstFromArray
- à la réussiteTemplateUtils.moveKeysIntoArrayOfObjects
- urlTool.optionalQueryParam
- Macros de méthodes de chaîne Java
- Macros Microsoft Dynamics
- SalesforceMacros
mathématiquesbibliothèque
Préfixe : mathématiques
Utilisez ces macros mathématiques pour effectuer une opération mathématique de base. Pour plus d’informations, voir Classe MathTool dans la documentation Velocity.
Évasion de cordesbibliothèque
Préfixe : Esc
Utilisez EscapeTool pour échapper aux chaînes dans les modèles Velocity. EscapeTool fournit des méthodes pour échapper aux sorties pour Java, JSON, JavaScript, HTML, XML et SQL. EscapeTool fournit également des méthodes pour échapper à des caractères de langage de modèle de vélocité. Pour plus d’informations, voir EscapeTool de classe dans la documentation Velocity.
Les méthodes suivantes, en particulier, sont très utiles :
- $esc.urlFormEncode(): Utilisez cette méthode pour échapper aux caractères afin de respecter les règles de codage des URL. Notez que les espaces sont encodés comme "+" par cette méthode. Il est très probable qu'il ne soit pas utilisé pour l'urlTemplate. Voir la méthode $esc.uriEncode().
- . URL (): Alias de $esc.urlFormEncode() avec la même fonctionnalité.
- $esc.uriEncode(): Utilisez cette méthode pour échapper aux caractères afin de respecter les règles de l'URI, par exemple l'URL. Cette méthode doit être utilisée pour échapper aux caractères dans l'urlTemplate. Notez que les espaces sont codés comme "%20" par cette méthode.
- $esc.jsonEncode(): Utilisez cette méthode pour échapper aux caractères réservés de JSON dans la sortie. Il permet de stocker JSON sous la forme d'une chaîne de caractères.
- $esc.jsonString(): Alias de $esc.jsonEncode() avec les mêmes fonctionnalités.
- $esc.jsonDecode(): Utilisez cette méthode pour désencapsuler les caractères réservés de JSON, ce qui permet d'obtenir le JSON d'origine.
- . d (): Utilisez cette méthode pour inclure le signe du dollar ($).
Le tableau suivant montre des entrées et des extrants de différentes macros.
Macros | Entrées | Sorties |
---|---|---|
. Java () | Il n'a pas'dis pas, "Arrêter!" | Il n'a pas'ne dis pas, \"Arrêter!\" |
. html () | "pain" & "Beurre" | "Pain au beurre" |
. XML () | "pain" & "Beurre" | "Pain au beurre" |
. SQL () | McHale'Marine | McHale''Marine |
$esc.urlFormEncode($input) ou . URL () |
bonjour ici et là~ | bonjour+ici+%26+là~ |
$esc.uriEncode($input) |
bonjour ici et là~ | hello%20here%20%26%20there%7E |
dollar américain | — | $ |
. Hash | # | |
. backslash | \ | |
. quote | " | |
. singleQuote | ' | |
$esc.exclamation | ! |
Encoding. base64
Base64 encode les chaînes de caractères que vous fournissez.
Exemple de modèle
The encoded field is $encoding.base64(\"${first} and ${second}\")
Exemple de modèle de résultats
Entrées | Modèles résolus |
---|---|
First = = chat second = = chien |
Le champ codé est Y2F0IGFuZCBkb2c = |
esc.jsonEncode
Lorsque vous créez des corps JSON pour les requêtes POST, PUT et PATH, vous devez échapper les caractères réservés dans toutes les chaînes. Cette macro échappe les guillemets et autres caractères en fonction des règles de codage JSON.
Exemple de modèle
$esc.jsonEncode(${input.json})
Exemple de codage
Entrée | Sortie |
---|---|
{ "foo" : "bar" } |
{\n\t\”foo\”:\”bar\”\n} |
Nul |
Nul |
""(chaîne vide) |
""(chaîne vide) |
esc.jsonDecode
Lorsque vous disposez d'une chaîne encodée en JSON et que vous souhaitez en obtenir la forme JSON, vous pouvez utiliser la macro esc.jsonDecode(). Cette macro décapsule les guillemets et autres caractères en fonction des règles d'encodage JSON.
Exemple de modèle
$esc.jsonDecode(${input.escapedjson})
Exemple de décodage
Entrée | Sortie |
---|---|
{\n\t\”foo\”:\”bar\”\n} |
{ "foo" : "bar" } |
successTemplateUtils. firstFromArray
Cette macro extrait le premier élément de la chaîne de tableau JSON fournie et a deux paramètres. Le premier paramètre, qui est le tableau d’entrée pour la valeur extraite, est requis. Le deuxième paramètre, réponse qui spécifie le qui est retourné lorsque le tableau est vide, est facultatif et par défaut ne retourne rien. Si le tableau n’est pas vide, le deuxième paramètre est ignoré.
Si l’entrée pour firstFromArray (en) est des données extraites par le biais de la translationMap JSONPath, alors aucune chaîne s’échappant n’est nécessaire. Dans les exemples de modèles suivants, Id pourrait provenir d’une entrée translationMap, telle que "$.idArray".
Exemples de modèles et résultats
Exemples de modèles | Entrées | Modèles résolus |
---|---|---|
$ {successTemplateUtils.firstFromArray ( | identifiants == "[1, 2, 3]" | 1 |
identifiants == "[{\"identifiant\":1}, {\"identifiant\":2}, {\"identifiant\":3}, {\"identifiant\":4}]" | {\"identifiant\":1} | |
identifiants == "[]" | ||
identifiants == "" | Cette entrée entraîne une erreur. | |
${successTemplateUtils.firstFromArray(\"${id}\", \"{}\")} | identifiants == "[1, 2, 3]" | 1 |
identifiants == "[{\"identifiant\":1}, {\"identifiant\":2}, {\"identifiant\":3}, {\"identifiant\":4}]" | {\"identifiant\":1} | |
identifiants == "[]" | {} | |
identifiants == "" | Cette entrée entraîne une erreur. | |
${successTemplateUtils.firstFromArray(\"${id}\", \"$esc.quote $esc.quote\")}* | identifiants == "[1, 2, 3]" | 1 |
identifiants == "[{\"identifiant\":1}, {\"identifiant\":2}, {\"identifiant\":3}, {\"identifiant\":4}]" | {\"identifiant\":1} | |
identifiants == "[]" | « » | |
identifiants == "" | Cette entrée entraîne une erreur. |
* Cet exemple de modèle utilise EscapeTool pour échapper aux caractères. Pour plus d’informations, voir Évasion de cordesbibliothèque.
à la réussiteTemplateUtils.moveKeysIntoArrayOfObjects
Cette macro convertit les données dans un format compatible avec Architect et a deux paramètres requis. Le premier paramètre est l’entrée de la réponse d’origine. Le deuxième paramètre est le nom de clé que la macro ajoute à un objet et la valeur est le champ dynamique de la réponse d’origine.
Pour renvoyer les données converties, configurez translationMap et successTemplate dans votre action de données en fonction de l’exemple suivant.
Exemple d’action de données
"config": { "request": { "requestUrlTemplate": "https://some.website.com/with/normalized/data", "requestType": "GET", "headers": { }, "requestTemplateDefault": true }, "response": { "translationMap": { "entitySegmentMembershipUps": "$.*.path.to.dynamic.key" }, "translationMapDefaults": {}, "successTemplate": "{\"segments\": ${successTemplateUtils.moveKeysIntoArrayOfObjects(${entitySegmentMembershipUps})},\"segmentId\")}}" } }
Dans la réponse d’origine, vous ne pouvez pas accéder au GUID, car il s’agit d’une clé dynamique qui ne peut pas être aplatie correctement.
Réponse d’origine renvoyée
"segmentMembership": { "ups": { "a959c128-d6d9-4a42-a307-c5d278cfcbe2": { "lastQualificationTime": "2020-11-16T03:23:31Z", "status": "realized" } } }
La macro déplace l’ID dans un objet et le renvoie en tant que segmentId.
Macro a renvoyé une réponse
"segments": [ { "lastQualificationTime": "2020-11-16T03:23:31Z", "status": "realized", "segmentId": "a959c128-d6d9-4a42-a307-c5d278cfcbe2" } ]
urlTool.optionalQueryParam
Cette macro formate une paire clé-valeur comme paramètre de requête, sauf si la valeur est vide. Sinon, la macro retourne une chaîne vide. N’incluez pas l'esperluet (&) dans votre template ; la macro ajoute automatiquement l’esperluet. Voir les résultats de l'exemple de modèle. N'utilisez la macro qu'après au moins un paramètre de requête requis. Dans l’exemple de modèle suivant, le paramètre de requête requis est ${input.AMOUNT}.
amount=${input.AMOUNT}$urlTool.optionalQueryParam(\"description\", $!{input.DESCRIPTION})
Exemple de modèle de résultats
Entrées | Modèles résolus |
---|---|
réaction. MONTANT = = 30 réaction. DESCRIPTION - pommes de terre |
montant de 30’description’pommes de terre |
réaction. MONTANT = = 30 réaction. DESCRIPTION - |
montant = 30 |
Macros de méthodes de chaîne Java
Utilisez les méthodes de chaîne Java dans les modèles Velocity pour manipuler les variables de chaîne, telles que la modification du cas d’une valeur ou l’extraction d’une valeur à partir d’une chaîne. Pour plus d'informations, voir Class String dans la documentation de Java 17.
Dans l'exemple suivant, la méthode toUpperCase() convertit la valeur de la chaîne de la variable $a en majuscules. le Split () la méthode fractionne la variable en un tableau de chaînes. La variable concatine les valeurs de variable, variable et le premier élément dans le tableau pour la variable.
Exemple de modèle
#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
Exemple de modèle de résultats
Entrées | Modèles résolus |
---|---|
Input. chaîne u003d = Input. chaîne u003d = |
Nous utilisons "VALEUR1" "valeur1+valeur2" "valeur2" pour rendre cela. |
Macros Microsoft Dynamics
msdynamics.fieldSearchFilter (en)
Cette macro construit rechercher un filtre donné une valeur et rechercher une liste de champs que vous voulez. La macro compare la valeur à chacun des champs de la liste.
Exemple de modèle
$msdynamics.fieldSearchFilter(\"$input.EMAIL_ADDRESS\", [\"emailaddress1\", \"emailadress2\"]
Exemple de modèle de résultats
Entrées | Modèles résolus |
---|---|
input.EMAIL_ADDRESS = TestMail@example.com | adresse e-mail1 eq 'TestMail@example.com' ou adresse e-mail2 eq 'TestMail@example.com' |
msdynamics. phoneNumberFilter
Cette macro construit rechercher un filtre donné un numéro de téléphone rechercher et une liste de champs que vous voulez. La macro supprime les caractères non pris en charge et toutes les valeurs non chiffrées, telles que + et parenthèses, du numéro de téléphone et ajoute « ou» entre chaque champ. Ce rechercher filtre est utile pour comparer un numéro de téléphone à plusieurs numéros de téléphone dans un enregistrement de compte.
Exemple de modèle
$msdynamics.phoneNumberFilter(\"$input.PHONE_NUMBER\", [\"telephone1\", \"telephone2\"])
Exemple de modèle de résultats
Entrées | Modèles résolus |
---|---|
réaction. PHONE_NUMBER = + 1 (555) 555-0123 | telephone1 eq '+1 (555) 555-0123' ou telephone2 eq '+1 (555) 555-0123' ou telephone1 eq '15555550123' ou telephone2 eq '15555550123' |
SalesforceMacros
salesforce.escReserved (en)
Cette macro échappe aux Salesforce caractères réservés des requêtes SOQL/SOSL faites dans une URL. Salesforceréserve les personnages suivants : ? ? & | ! { } [ ] ( ) ^ ~ * : \ " ' + -. Cette macro garantit que les caractères sont correctement échappés. Pour plus d’informations, voir FIND’SearchQuery’ dans Salesforce la documentation.
Exemple de modèle
FIND {$salesforce.escReserved(${input.PHONE_NUMBER})} IN PHONE FIELDS
Exemple de modèle de résultats
Entrées | Modèles résolus |
---|---|
réaction. PHONE_NUMBER = = (555) 555-5555 | {"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}} |
Pour plus d’informations, voir A propos des actions personnalisées pour les intégrations.
Pour plus d’informations sur l’intégration, voir À propos de l’intégration des actions de données Zendesk.