Demander la configuration pour les actions de données

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

Vous pouvez créer des actions personnalisées pour les intégrations d’actions de données. Une action personnalisée inclut une demande et une réponse dans sa configuration. Pour plus d’informations, voir Créer une action personnalisée pour les intégrations.

Cet article explique les différentes parties de réponse. Pour plus d’informations sur les demandes, voir Demander une configuration.

Les actions personnalisées utilisent des modèles de demande pour définir le corps des demandes POST, PUT et PATCH aux points de terminaison distants ou à vos fonctions AWS Lambda. Les points de terminaison distants sont définis par requestUrlTemplate. Ces modèles de demande prennent en charge l’utilisation de macros. Pour plus d’informations, voir Macros Velocity pour les actions de données.

Remarques:
  • Les demandes GET n’utilisent pas de modèles de demande. le requestTemplate le champ affiche une par défaut de "$ {Input.rawRequest}".
  • Des objets JSON trop imbriqués peuvent affecter les performances du service d'action sur les données. Pour maintenir les performances, la profondeur des objets JSON est limitée à 50 niveaux. Pour plus d'informations, voir Limits dans le Genesys Cloud Developer Center.

Avertissement : Échapper à toute utilisation des variables d’entrée ou de sortie dans requestTemplate, successTemplate, ou requestUrlTemplate. Si vous n'échappez pas correctement les variables avec des caractères spéciaux, vos actions de données échouent à l'exécution.
  • Utilisation esc.jsonString pour échapper aux chaînes à l’intérieur des corps JSON.

    Pour plus d’informations, consultez la section esc.jsonString sur Macros de vitesse.

  • Utilisation esc.url () ou urlTool.optionalQueryParam () pour échapper correctement les paramètres de chemin ou de requête pour un requestUrlTemplate ou requestTemplate si vous utilisez x-www.form-urlencoded valeurs.

    Pour plus d'informations, voir la section relative à la bibliothèque d'encodage des chaînes de caractères à l'adresse Macros de vélocité et Encodage des formes d'URL pour les actions de données.

Modèle requestTemplate

Les modèles de requête utilisent Velocity pour définir le corps des requêtes POST, PUT et PATCH. Une fois que vous avez enregistré un modèle de demande, la réponse de l'API le référence comme requestTemplateUri.

  • Pour l’intégration des actions de données AWS Lambda, toutes les entrées que vous spécifiez sous requestTemplatesera disponible dans leun événementparamètre de la fonction AWS Lambda appelée.
  • Pour les fonctions Google Cloud, le $esc.jsonString la macro convertit les chaînes d'une requête en JSON.

En-têtes

Les en-têtes sont des paires de valeur clé qui sont point de terminaison ajoutées en tant qu’en-têtes HTTP sur la demande qui est envoyée à la télécommande. Les valeurs d’en-tête s’appuient sur la substitution Velocity.

Remarque :  Si vous comptez sur l’API pour gérer l’autorisation, n’incluez pas l’autorisation dans l’en-tête de demande. L’intégration remplira automatiquement l’en-tête. Sinon, incluez votre propre autorisation dans l’en-tête de demande.

L’intégration des actions de données AWS Lambda ajoute des paires clé-valeur comme clientContext éléments sur l’invocation le contexte objet. Si les attributs existent, les attributs suivants sont automatiquement définis sur l'objet context:

  • ININ-ID de conversation
  • ININ-ID-organisation
  • ININ-Home-Organization-Id
  • ID de corrélation ININ
  • ID d'utilisateur ININ
  • ID d'intégration ININ

requestType

type de demande définit le type de requête HTTP dans votre action de données. Les types de requêtes HTTP disponibles incluent POST, PUT et PATCH.

Remarque :  Pour les intégrations d'actions de données AWS Lambda et Google, utilisez POST. Cette méthode HTTP garantit que tout corps de requête est envoyé.

le modèle requestUrlTemplate

requestUrlTemplate est le point de terminaison que votre requête HTTP atteint ou l’ARN de la fonction AWS Lambda que l’intégration des actions de données AWS appelle. requestUrlTemplate utilise des modèles Velocity pour la substitution de variables. 

Remarque :   Remarque: Si le requestUrlTemplate fait référence à un point de terminaison HTTP, requestUrlTemplatedoit faire référence à un point de terminaison HTTP Secure (HTTPS).

modèle requestTemplateUri

requestTemplateUri est un URI de référence pour votre requestTemplate. Lorsque vous Sauvegarder le requestTemplate, l’intégration l’effondre. Pour voir le contenu de votre requestTemplate après l’avoir enregistré, lancez une opération GET sur requestTemplateUri.

Exemple requestTemplate

Corps d’exécution d’action

L’appel REST suivant déclenche l’action sampleAction123 et transmet trois propriétés définies dans le inputSchema dans l’exemple d’action. 

curl -X POST https://api.mypurecloud.com/api/v2/integrations/actions/sampleAction123/execute \
  -H 'authorization: bearer *****' \
  -d '{
    "USER_ID": 123,
    "FIRST_NAME":"John",
    "LAST_NAME": "Smith"
}'

Le service d’action recherche et remplace toutes les valeurs qui font référence à ces trois propriétés dans l’exemple d’action, notamment requestUrlTemplate et requestTemplate

Modèle requestTemplate

L’action est configurée pour avoir les éléments suivants requestTemplate

"{"firstName": "$esc.jsonString(${input.FIRST_NAME})","lastName": "$esc.jsonString(${input.LAST_NAME})"},

Pour plus d’informations sur l’échappement, consultez le esc.jsonString section à Macros de vitesse pour les actions de données.

Le service d’action remplace les détenteurs de places de modèle Velocity dans l’action de l’échantillon, ce qui donne les éléments suivants :

{
  "firstName": "John",
  "lastName": "Smith"
}

requestTemplate devient le corps du HTTP POST envoyé au point de terminaison. 

Appel de service Web

L’action de l’exemple modifié donne lieu à l’appel web suivant :

curl -X POST \
  https://sample.com/users/123 \
  -H 'content-type: application/json' \
  -H 'UserAgent: GenesysCloudIntegrations/1.0' \
  -H 'Company: My company' \
  -d '{
  "firstName": "John",
  "lastName": "Smith"}'

Demande de création d’une nouvelle action

Ce qui suit est une action configurée pour effectuer un POST pour https ://sample.com/users/${input.USER_ID}.inputSchema définit trois propriétés utilisées pour construire une requête : USER_ID, FIRST_NAME, LAST_NAME. Ces trois propriétés sont référencées dans requestTemplate et requestUrlTemplate.

{
  "category": "Sample",
  "contract": {
    "input": {
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "description": "Update user's first and/or last name",
        "properties": {
          "USER_ID": {
            "description": "User Id",
            "type": "number"
          },
          "FIRST_NAME": {
            "description": "Users first name",
            "type": "string"
          },
          "LAST_NAME": {
            "description": "User last name",
            "type": "string"
          }
        },
        "required": [
          "USER_ID",
          "FIRST_NAME",
          "LAST_NAME"
        ],
        "title": "Update name request",
        "type": "object"
      }
    },
    "output": {
      ...
    }
  },
  "config": {
    "request": {
      "headers": {
        "Content-Type": "application/json",
        "UserAgent": "GenesysCloudIntegrations/1.0",
        "Company": "My company"
      },
      "requestTemplate" : "{\"firstName\": \"${input.FIRST_NAME}\",\"lastName\": \"${input.LAST_NAME}\"}",
      "requestType": "POST",
      "requestUrlTemplate": "https://sample.com/users/${input.USER_ID}"
    },
    "response": {
      ...
    }
  },
  "name": "Sample Action",
  "secure": true
}

Résultat de l’obtention de la définition d’action

{
    "id": "<action ID>",
    "name": "Sample Action", 
    ...
    "config: {
        "request": {
            "requestUrlTemplate": "https://sample.com/users/${input.USER_ID}",
            "requestTemplateUri": "/api/v2/integrations/actions/<action ID>/templates/requesttemplate.vm",
            "requestType": "POST",
            "headers": {
                "Content-Type": "application/json",
        	    "UserAgent": "GenesysCloudIntegrations/1.0",
        	    "Company": "My company"
         },
         "response": {
             ...
         }
    },
    "category": "Sample",
    "version": 1,
    "secure": true,
    "selfUri": "/api/v2/integrations/actions/<action ID>"
}

Pour plus d’informations sur la configuration dans les actions personnalisées, voir Ajouter la configuration et Modifier la configuration.

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.