Konfiguration für Datenaktionen anfordern

Hinweis: Dieser Artikel gilt für die Datenaktionsintegrationen AWS Lambda, Genesys Cloud, Google, Microsoft Dynamics 365, Salesforce, Webdienste und Zendesk.

Sie können benutzerdefinierte Aktionen für die Integrationen von Datenaktionen erstellen. Eine benutzerdefinierte Aktion enthält eine Anfrage und eine Antwort in ihrer Konfiguration. Weitere Informationen finden Sie unter Erstellen einer benutzerdefinierten Aktion für Integrationen.

In diesem Artikel werden die Bestandteile des Antrags erläutert. Informationen über die Antwort finden Sie unter Antwortkonfiguration.

Benutzerdefinierte Aktionen verwenden Anforderungsvorlagen, um den Text von POST-, PUT- und PATCH-Anforderungen an Remote-Endpunkte oder an Ihre AWS Lambda-Funktionen zu definieren. Die entfernten Endpunkte werden durch requestUrlTemplatedefiniert. Diese Anforderungsvorlagen unterstützen die Verwendung von Makros. Weitere Informationen finden Sie unter Velocity macros for data actions.

Notizen:
  • GET-Anfragen verwenden keine Anfragevorlagen. Das Feld requestTemplate enthält den Standardwert "${input.rawRequest}"
  • Übermäßig verschachtelte JSON-Objekte können die Leistung des Datenaktionsdienstes beeinträchtigen. Um die Leistung zu erhalten, ist die Tiefe der JSON-Objekte auf 50 Ebenen begrenzt. Weitere Informationen finden Sie unter Limits im Genesys Cloud Developer Center.

Warnung: Jede Verwendung von Eingabe- oder Ausgabevariablen innerhalb von requestTemplate, successTemplate, oder requestUrlTemplateist zu vermeiden. Wenn Sie Variablen mit Sonderzeichen nicht richtig entschlüsseln, schlagen Ihre Datenaktionen bei der Ausführung fehl.
  • Verwenden Sie esc.jsonString , um Zeichenketten in JSON-Bodies zu entschlüsseln

    Weitere Informationen finden Sie im Abschnitt esc.jsonString unter Velocity macros.

  • Verwenden Sie esc.url() oder urlTool.optionalQueryParam() , um Pfad- oder Abfrageparameter für ein requestUrlTemplate oder requestTemplate richtig zu entschlüsseln, wenn x-www.form-urlencoded Werte verwendet werden.

    Weitere Informationen finden Sie im Abschnitt über die String-Escaping-Bibliothek unter Velocity-Makros und URL-Form-Codierung für Datenaktionen.

requestTemplate

Anforderungsvorlagen verwenden Velocity, um den Inhalt von POST-, PUT- und PATCH-Anforderungen zu definieren. Nachdem Sie eine Anforderungsvorlage gespeichert haben, referenziert die API-Antwort diese als requestTemplateUri.

  • Für die Integration von AWS Lambda-Datenaktionen sind alle Eingaben, die Sie unter requestTemplate angeben, im Parameter event der aufgerufenen AWS Lambda-Funktion verfügbar.
  • Für Google Cloud Functions wandelt das Makro $esc.jsonString Strings in einer Anfrage in JSON um

Kopfzeilen

Header sind Schlüssel-Wert-Paare, die der an den entfernten Endpunkt gesendeten Anfrage als HTTP-Header hinzugefügt werden. Die Kopfwerte unterstützen die Geschwindigkeitssubstitution.

Hinweis: Wenn Sie sich darauf verlassen, dass die API die Autorisierung übernimmt, nehmen Sie die Autorisierung nicht in die Kopfzeile der Anfrage auf. Die Integration wird die Kopfzeile automatisch ausfüllen. Andernfalls fügen Sie Ihre eigene Autorisierung in die Kopfzeile der Anfrage ein.

Die Integration von AWS Lambda-Datenaktionen fügt Schlüssel-Wert-Paare als clientContext Elemente zum Aufruf context Objekt hinzu. Wenn die Attribute vorhanden sind, werden die folgenden Attribute automatisch auf das Objekt context gesetzt:

  • ININ-Gesprächs-Id
  • ININ-Organisation-Id
  • ININ-Home-Organisation-Id
  • ININ-Korrelation-Id
  • ININ-Benutzer-Id
  • ININ-Integration-Id

Antragsart

requestType definiert den Typ der HTTP-Anfrage in Ihrer Datenaktion Zu den verfügbaren HTTP-Anforderungstypen gehören POST, PUT und PATCH.

Hinweis: Für die Integrationen von AWS Lambda und Google Data Actions verwenden Sie POST. Diese HTTP-Methode stellt sicher, dass ein beliebiger Request Body gesendet wird.

requestUrlTemplate

requestUrlTemplate ist der Remote-Endpunkt, auf den Ihre HTTP-Anfrage trifft, oder der ARN der AWS Lambda-Funktion, die die AWS Data Actions Integration aufruft. requestUrlTemplate verwendet Velocity-Vorlagen für die Variablensubstitution. 

Hinweis: Wenn das requestUrlTemplate auf einen HTTP-Endpunkt verweist, muss requestUrlTemplate auf einen sicheren HTTP-Endpunkt (HTTPS) verweisen

requestTemplateUri

requestTemplateUri ist ein Referenz-URI für Ihr requestTemplate Wenn Sie das requestTemplatespeichern, wird es von der Integration zusammengeklappt. Um den Inhalt Ihres requestTemplate zu sehen, nachdem Sie es gespeichert haben, führen Sie einen GET-Vorgang auf requestTemplateUridurch

Beispiel requestTemplate

Körper der Aktionsausführung

Der folgende REST-Aufruf löst die Aktion sampleAction123 aus und übergibt drei Eigenschaften, die im inputSchema definiert sind, an die Beispielaktion 

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

Der Aktionsdienst findet und ersetzt alle Werte, die auf diese drei Eigenschaften in der Beispielaktion verweisen, einschließlich requestUrlTemplate und requestTemplate 

requestTemplate

Die Aktion ist so konfiguriert, dass sie die folgende requestTemplatehat: 

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

Weitere Informationen zum Escaping finden Sie im Abschnitt esc.jsonString unter Velocity-Makros für Datenaktionen

Der Aktionsdienst ersetzt die Platzhalter der Velocity-Vorlage in der Beispielaktion, was zu folgendem Ergebnis führt:

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

requestTemplate wird zum Textkörper des HTTP POST, der an den entfernten Endpunkt gesendet wird 

Aufruf eines Webdienstes

Die geänderte Beispielaktion führt zu folgendem Webdienstaufruf:

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

Antrag auf Erstellung einer neuen Aktion

Es folgt eine Aktion, die so konfiguriert ist, dass ein POST an https://sample.com/users/${input.USER_ID}durchgeführt wird. inputSchema definiert drei Eigenschaften, die zum Aufbau einer Anfrage verwendet werden USER_ID, FIRST_NAME, LAST_NAME. Auf diese drei Eigenschaften wird in requestTemplate und requestUrlTemplateverwiesen

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

Ergebnis der Abfrage der Aktionsdefinition

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

Informationen über die Konfiguration in benutzerdefinierten Aktionen finden Sie unter Konfiguration hinzufügen und Konfiguration ändern

Weitere Informationen finden Sie unter Über benutzerdefinierte Aktionen für Integrationen.

Weitere Informationen zu den Integrationen finden Sie unter Über die Integrationen von Datenaktionen.