D Apache FreeMarker-Referenz

Integrierte FreeMarker-Zeichenfolgenvorgänge

In der folgenden Tabelle wird dargestellt, wie einige der integrierten Zeichenfolgenvorgänge mit einer Zeichenfolgevariablen mit dem Namen tester verwendet werden, deren Wert an "hello world " gesendet wird (mit drei abschließenden Leerzeichen).
Hinweis

Der folgende Ausdruck lässt zu, dass der Bot entweder den Wert tester oder no string found ausgibt, wenn kein Wert für die Variable festgelegt wurde.
${tester.value!'no string found'}
Integrierter Vorgang Verwendung Ausgabe
capitalize ${tester.value?capitalize} Hello World
last_index_of ${tester.value?last_index_of('orld')} 7
left_pad ${tester.value?left_pad(3,'_')} ___hello world
length ${tester.value?length} 14
lower_case ${tester.value?lower_case} hello world
upper_case ${tester.value?upper_case} HELLO WORLD
replace ${tester.value?replace('world', 'friends')} hello friends
remove_beginning ${tester.value?remove_beginning('hello')} world
trim ${tester.value?trim} hello world (die drei angehängten Leerzeichen werden entfernt)
ensure_starts_with ${tester.value?ensure_starts_with('brave new ')} brave new hello world
ensure_ends_with ${tester.value?ensure_ends_with(' my friend')}$ hello world my friend
contains ${tester.value?contains('world')?string ('You said world', 'You did not say world')} You said world

Der Ausdruck contains('world') gibt entweder true oder false zurück. Diese booleschen Werte werden mittels der Funktion string ('string1','string2') durch eine Zeichenfolge ersetzt.

ends_with ${tester.value?ends_with('world')?string ('Ends with world', 'Doesn't end with world')} Ends with world
starts_with ${tester.value?starts_with('world')?string ('Starts with world', 'Doesn't start with world')} Doesn't start with world
matches (regulärer Ausdruck gibt "true" oder "false" zurück) ${tester.value?matches('^([^0-9]*)$')} Der reguläre Ausdruck gibt true oder false zurück, je nachdem, ob der Wert eine Zahl enthält (in diesem Fall wird der boolesche Wert als false zurückgegeben). Der Wert tester gibt true zurück.
matches (regulärer Ausdruck gibt eine Zeichenfolge zurück) ${tester.value?matches('^([^0-9]*)$')?} Wie oben, gibt nun aber true als Zeichenfolge zurück. Die Funktion matches('regulärer Ausdruck') gibt true oder false als boolesche Typen zurück. Um true oder false in einer System.Output-Komponente zu drucken, verwenden Sie ?string, um eine Konvertierung in eine Zeichenfolge durchzuführen.

Hinweis: Sie können keine regulären Ausdrücke verwenden, um eine Gruppe von Werten zurückzugeben. Verwenden Sie diese, um einen einzelnen übereinstimmenden Wert (oder keine Übereinstimmung) zurückzugeben.

Beispiel: Umwandlung der Groß- und Kleinschreibung mit der Switch-Komponente

Stellen Sie sich einen Fall vor, in dem verschiedene Status aufgerufen werden, abhängig von der Benutzereingabe (wine oder beer), die in der Variablen choice gespeichert ist.

Die Groß- und Kleinschreibung der Benutzereingabe kann inkonsistent sein, selbst innerhalb eines Wortes (WiNE). Statt alle möglichen Variationen zur Komponentendefinition hinzuzufügen, verwenden Sie einen FTL-Vorgang wie upper_case, um die Groß- und Kleinschreibung zu vereinheitlichen:
${choice.value?upper_case}

Beispiel: FTL-Ausdrücke verketten

Sie können FTL-Vorgänge auch in einem einzigen Ausdruck verketten.

Im folgenden Beispiel würden die Flugnummern der Fluggesellschaften (repräsentiert durch die Variable flight.value) von UA1234 und UA 1234 in 1234 umgewandelt.
${flight.value?trim?lower_case?remove_beginning('ua ')?remove_beginning('ua')}"

Integrierte FreeMarker-Zahlenvorgänge

In der folgenden Tabelle sind die integrierten Zahlenvorgänge aufgelistet, und es wird gezeigt, wie sie den für die Variablen negativeValue (-2.5) und positiveValue (0.5175) festgelegten Wert ausgeben:
Vorgang Beispiel Ausgabe
abs ${negativeValue.value?abs} 2.5

Der Operator wandelt den negativen numerischen Wert in einen positiven Wert um.

string (wird mit einem numerischen Wert verwendet) ${negativeValue.value?abs?string.percent} 250%

Der Operator wandelt zuerst den negativen Wert in einen positiven Wert um. Anschließend wird der Wert in Prozent konvertiert, also implizit mit 100 multipliziert.

string (mit dem Dezimalformatwert und verschiedenen Währungen)

Tipp: Prüfen Sie die Charbase auf weitere Währungssymbole.

${positiveValue.value?string['###.##']} 0.51
${positiveValue.value?string['###.##%']} 51%

Der Operator fügt ein Prozentzeichen hinzu, nachdem der Wert mit 100 multipliziert wurde.

${positiveValue.value?string['##.###\u00A4']} 0.51 $
${positiveValue.value?string['##.###\u20AC']} 0.51 €
${positiveValue.value?string['##.###\u00A3']} 0.51 £
round ${negativeValue.value?round} -2

Der Operator rundet auf die nächste Ganzzahl. Wenn die Zahl mit ".5" endet, wird aufgerundet.

${positiveValue.value?round} 1

Der Operator rundet auf die nächste Ganzzahl. Wenn die Zahl mit ".5" endet, wird aufgerundet.

floor ${positiveValue.value?floor} 0

Der Operator rundet ab.

ceiling ${positiveValue.value?ceiling} 1

Der Operator rundet auf.

lower_abc ${negativeValue.value?abs?round?lower_abc} c

Der Operator wandelt den negativen Wert in einen positiven Wert um und rundet ihn auf 3. Er gibt c zurück, den dritten Buchstaben des Alphabets.

upper_abc ${negativeValue.value?abs?round?upper_abc} C

Der Operator wandelt den negativen Wert in einen positiven Wert um und rundet ihn auf 3. Er gibt C zurück, den dritten Buchstaben des Alphabets.

is_infinite ${positiveValue.value?is_infinite?string} false

Der Operator gibt "false" zurück, weil ein Gleitkommawert gemäß IEEE 754 (Standard für Gleitkommazahlarithmetik) nicht unendlich ist.

Hinweis: Der zurückgegebene Wert wäre ein boolescher Wert ohne ?string.

Integrierte FreeMarker-Arrayvorgänge

Mit Arrayvorgängen (oder Sequenzen ) kann der Bot unter anderen Objekten die Größe eines Arrays bestimmen, Arrays sortieren oder Inhalte innerhalb eines Arrays finden.

Mit Arrays können Sie Pseudodaten zum Testen erstellen oder Datenstrukturen definieren, die über Benutzersessions hinaus bestehen bleiben. Sie können ein Array in einer benutzerdefinierten Komponente, in einem Ablauf oder einer globalen Variable speichern. Im Folgenden finden Sie Arrays für die Variablen person bzw. colors.
[
  {
    "firstName" : "Frank",
    "lastName" : "Normal"
  },
  {
    "firstName" : "Grant",
    "lastName" : "Right"
  },
  {
    "firstName" : "Geoff",
    "lastName" : "Power"
  },
  {
    "firstName" : "Marcelo",
    "lastName" : "Jump"
  }
]
[
    "yellow", "blue", "red", "black", "white", "green"
  ]
Diese Arrays werden verwendet, um die Arrayvorgänge in der folgenden Tabelle und im Beispiel: Arrays iterieren zu veranschaulichen.
Operator Beispiel Ausgabe
size ${person.value?size?number} 4 - Die Größe (vier Elemente) des Arrays person.
array index ${person.value[1].firstName} Grant - Der Wert der zweiten Eigenschaft firstName im Array person.
${person.value[1].firstName !'unbekannt'} Wie oben, in diesem Fall gibt der Bot jedoch unbekannt aus, wenn die zweite Eigenschaft firstName keinen Wert aufweist.
first ${person.value?first.firstName} Frank - Der erste Eintrag des Personenarrays. Dieser Vorgang verwendet den Arrayindex nicht.
last ${person.value?last.firstName} Marcelo - Der letzte lastName-Wert im Personenarray.
sort_by ${person.value?sort_by('lastName') [0].firstName} Marcelo
Dieser Operator sortiert das person-Array nach der Eigenschaft lastName in aufsteigender Reihenfolge. Anschließend wird der Wert der entsprechenden Eigenschaft firstName für den letzten Eintrag im Personenarray ausgegeben:
  • Jump, Marcelo

  • Normal, Frank

  • Power, Geoff

  • Right, Grant

Hinweis: Wenn Sie das sortierte Array nicht mit System.SetVariable in einer Variablen speichern, bleiben die Daten nur für eine einzelne Anforderung sortiert.

${person.value?sort_by('lastName')?reverse[0].firstName} Grant - Die Werte werden in absteigender Reihenfolge sortiert:
  • Right, Grant

  • Power, Geoff

  • Normal, Frank

  • Jump, Marcelo

seq_index_of ${colors.value?seq_index_of('red')} 2 - Der Indexwert für Rot im Farbarray.
seq_last_index_of ${colors.value?seq_last_index_of('red')} 2 - Der letzte Indexwert für Rot im
join ${colors.value?join(',')} Gibt das colors-Array als durch Komma getrennte Zeichenfolge zurück: yellow, blue, red, black, white, green
seq_contains ${colors.value?seq_contains('red')?string('Yes', 'No') Gibt Yes zurück, da das Array "red" (rot) enthält.

Hinweis: ?seq_contains gibt einen booleschen Wert zurück. Dieser Wert wird dann mit dem Ausdruck ?string('…','…') durch eine Zeichenfolge ersetzt.

sort ${colors.value?sort?join(',')} Gibt das Farbarray als durch Komma getrennte Zeichenfolge in aufsteigender Reihenfolge zurück: black, blue, green, red, white, yellow
reverse ${colors.value?sort?reverse?join(',')} Gibt das colors-Array als durch Komma getrennte Zeichenfolge in absteigender Reihenfolge zurück: yellow, blue, red, black, white, green

Intents und Scores zurückgeben

Mit Arrayvorgängen können Sie die Ergebnisse aus der Intent- und Entityverarbeitung zurückgeben. Beispiel:
  • ${skill.system.nlpresult.value.entityMatches[‘name of entity’]} gibt ein Array von Entitys zurück, das in einer Benutzerzeichenfolge gefunden wird, die an die Intent Engine übergeben wird, die in der Variablen nlpresult gespeichert ist.

  • ${skill.system.nlpresult.value.intentMatches.summary[n].intent} gibt den Namen des Intents zurück, das ein Konfidenzranking von n aufweist, wobei 0 das Intent mit der höchsten Priorität, 1 das Intent mit der zweiten Rangfolge usw. darstellt.

  • ${skill.system.nlpresult.value.intentMatches.summary[n].score} gibt den Vertrauensscore für das angegebene Intent zurück.
Für diese beiden Ausdrücke ist n der Index des Elements, das Sie suchen möchten. Beispiel: Der Ausdruck zur Rückgabe des Intent-Namens mit höchster Auflösung lautet:
${skill.system.nlpresult.value.intentMatches.summary[0].intent}
Für den Score des Top-Intents lautet der Ausdruck:
${skill.system.nlpresult.value.intentMatches.summary[0].score}

Sie können diese Ausdrücke für Intents verwenden, die über dem Konfidenzgrenzwert bewertet wurden. Sie können sie jedoch auch verwenden, um Intents zurückzugeben, deren Score unter dem Konfidenzgrenzwert liegt. Diese Ausdrücke hängen nicht vom Konfidenzschwellenwert ab, der auf der Seite Einstellungen des Skills konfiguriert ist, sodass Sie damit die Kandidaten-Intents und deren Scores zurückgeben können, auch wenn kein Intent aufgelöst werden konnte und eine unresolvedIntent-Aktion ausgelöst wurde. In diesem Fall können Sie z.B. diese Ausdrücke verwenden, um die drei Top-Intents und deren Schwellenwerte für das Unterbewusstsein zurückzugeben.

Hinweis

Wenn Sie auf das Intent verweisen müssen, das ein Benutzer nach der Aufforderung zur Klärung ausgewählt hat, können Sie ${system.intent.name} verwenden. (${skill.system.nlpresult.value.intentMatches.summary[0].intent} gibt immer das Intent mit der höchsten Punktzahl zurück. Dies ist möglicherweise nicht das Intent, das der Benutzer bei der Klärung auswählt.

Beispiel: Arrays iterieren

Arrays bestimmen die Anzahl der Entitys in der Benutzereingabe.

Im folgenden Snippet aus der Metadateneigenschaft einer Komponente "Allgemeine Antwort" wird dargestellt, wie die Größe des Arrays bestimmt wird, das in der Variablen person gespeichert ist, und dann über die Elemente iteriert wird, sodass der Skill etwa Folgendes ausgibt:


responseItems:
- type: "text"
  text: "${person?index+1}. ${person.firstName} ${person.lastName}"
  name: "Sorry"
  separateBubbles: true
  iteratorVariable: "person"
Hinweis

Die in diesem Code beschriebene Ausgabe ist nicht sortiert (d.h. es wird kein sort_by-Vorgang verwendet).

Integrierte FreeMarker-Datumsvorgänge

Der folgende Ausdruck leitet das aktuelle Datum mit der speziellen Variablenreferenz FreeMarker, .now und dem integrierten date-Operator ab.
${.now?date}
In der folgenden Tabelle werden einige der integrierten Datumsvorgänge aufgeführt, mit denen Sie Eigenschaften definieren und Entitywerte bearbeiten können.
Vorgänge Beispiel Ausgabe
date ${.now?date} Das aktuelle Datum
time ${.now?time} Die Uhrzeit, z.B. 5:46:09 PM
datetime ${.now?datetime} Gibt das aktuelle Datum und die aktuelle Uhrzeit aus, z.B. Jan 17, 2018 5:36:13 PM.
long und number_to_date ${(.now?long + 86400000)?number_to_date } Fügt 24 Stunden zum aktuellen Datum hinzu. Wenn der Aufruf am 17. Januar 2018 erfolgt, gibt FreeMarker den 18. Januar 2018 aus.
string (mit Formatierungsstilen) ${.now?string.full} Konvertiert das aktuelle Datum in eine Zeichenfolge, die als Wednesday, January 17, 2018 6:35:12 PM UTC formatiert ist.
${.now?string.long} Konvertiert das Datum in eine Zeichenfolge mit der wie folgt formatierten Ausgabe: January 17, 20186:36:47 PM UTC.
${.now?string.short} Konvertiert das Datum in eine Zeichenfolge mit der wie folgt formatierten Ausgabe: 1/17/18 6:37 PM
${.now?string.medium} Konvertiert das Datum in eine Zeichenfolge mit der wie folgt formatierten Ausgabe: Jan 17, 2018 6:38:35.
${.now?string.iso}

Gibt das Datum im ISO-8601-Standard aus, z.B. 2018-01-17T18:54:01.129Z.

string (mit angegebenen Ausgabeformaten) ${.now?string['dd.MM.yyyy, HH:mm']}

Gibt das aktuelle Datum in einem benutzerdefinierten Format aus, z.B. 17.01.2018, 18:58.

${.now?string['yyyy']}

2018

datetime (mit string und Formatierungsstil) ${date_variable?datetime?string.short} Konvertiert das Datum in eine Zeichenfolge im Format 1/17/18 6:37 PM.

Mit dem datetime-Operator kann FreeMarker erkennen, ob die Variable ein Datum enthält, das sowohl Datums- als auch Zeitinformationen enthält. Ebenso können Sie mit den Operatoren date oder time angeben, ob der Datumswert nur das Datum oder nur die Zeit enthält, aber mit datetime?string können Fehler vermieden werden.

Konvertierung des Entitywertes in eine Zeichenfolge mit folgenden Elementen:
  • date

  • long

  • number_to_date

  • Formatierungsstile

  • benutzerdefinierte Datumsformate

${dateVar.value.date?long?number_to_date?date?string.short} Konvertiert das Datum aus der Entityextraktion in eine Zeichenfolge, die als 11/17/18 formatiert ist.

Der Datumsoperator weist FreeMarker an, dass die Variable nur ein Datum und keine Zeitinformationen enthält. Durch die Verwendung dieses Formats werden Fehler vermieden.

${dateVar.value.date?long?number_to_date?string.medium} Konvertiert das Datum, das aus der Entityextraktion abgeleitet wird, in eine als Jan 17, 2018 formatierte Zeichenfolge.

Hinweis: Alle anderen Formate wie full, short, long und iso funktionieren gleichermaßen mit Datumsangaben, die aus der Entityextraktion abgeleitet werden.

${dateVar.value.date?long?number_to_date?string['dd.MM.yyyy']} Gibt das Datum im benutzerdefinierten Format aus. Beispiel: 17.01.2018, 18:58.
${dateVar.value.date?long?number_to_date?string['yyyy']} Gibt das von der Entity abgeleitete Datum in einem benutzerdefinierten Format aus.

Beispiel: Daten aus Benutzereingaben extrahieren

Die folgenden Beispiele stammen von einem Skill, der Termine verwaltet. Wenn ein Benutzer ihn fragt Kannst du eine Besprechung mit Mr. Higgs einen Tag später als morgen ausmachen?, verwendet der Bot eine komplexe Entity, DATE, um morgen aus der Anforderung zu extrahieren. Das angeforderte Datum wird mit ${(theDate.value.date?long + 86400000)?number_to_date} ausgegeben, um 24 Stunden (oder 86.400.000 Millisekunden) zu "morgen" hinzuzufügen.
Text mit Ausdruck Ausgabe
"Today is: ${.now}"
  • Heute ist: 18.01.18, 8:31 Uhr
"Date found is: ${theDate.value.date}"
  • Gefundenes Datum: 19. Jan. 2018

"A day later is ${(theDate.value.date?long + 86400000)?number_to_date}"
  • Ein Tag später: 20. Jan. 2018

Beispiel: Standarddatum festlegen (wenn kein Datumswert festgelegt ist)

Wenn die Benutzernachricht keine Datumsinformationen enthält, kann der Skill Benutzer zur Eingabe des Datums auffordern oder ein Standarddatum angeben. Um das aktuelle Datum anzugeben, können Sie den folgenden Ausdruck verwenden:

${.now?datetime?string.long}

Von FreeMarker zugängliche Systemvariablen

Oracle Digital Assistant verfügt über eine Reihe von Systemvariablen, über die Sie nützliche Informationen in Ihren Dialogabläufen über FreeMarker-Ausdrücke abrufen können.

In ihrer einfachsten Form haben diese Ausdrücke die folgende Form:

${system.variableName}

Einige Variablen können Objekte mit verschachtelten Eigenschaften enthalten, auf die mit der Punktnotation nach dem Variablennamen in folgender Form zugegriffen werden kann.

${system.variableName.propertyName}

Darüber hinaus können die verschachtelten Eigenschaftswerte auch Objekte mit verschachtelten Eigenschaften sein.

Nachfolgend finden Sie die Systemvariablen, die über FreeMarker-Ausdrücke verfügbar sind.

Variable Beschreibung
system.actualState Name des Status, zu dem der Benutzer navigiert ist, indem auf eine ältere, nicht mehr funktionsfähige Schaltfläche getippt wurde. Wenn die Postback-Payload eine Eigenschaft system.state enthält, navigiert die Dialog-Engine zu diesem Status und setzt diese Variable auf den Namen dieses Status. Siehe auch Dialogablauf für unerwartete Aktionen konfigurieren.
system.authorizedUsers Eine Liste aller Benutzer, die für einen bestimmten Gruppenchat autorisiert wurden.
system.channelType Der Kanaltyp der aktuellen Benutzersession. Die zulässigen Werte: facebook, androidsdk, iossdk, websdk, slack, twilio, msteams, cortana, webhook und test.

Wenn die Session im Tester ausgeführt wird, entspricht der Wert dem simulierten Kanaltyp.

system.entityToResolve Das Objekt, das das aktuelle Mischentityelement darstellt, das in der Komponente "Gemeinsame Antwort" aufgelöst werden soll, wenn die Variableneigenschaft der Komponente auf ein Mischentityobjekt entity.The verweist, weist die folgenden Eigenschaften auf:
  • nextRangeStart - Indexnummer der zulässigen Werteliste der Entity, zu der navigiert wird, wenn auf die Schaltfläche Mehr anzeigen getippt wird.
  • updatedEntities - Liste der Mischentityelemente, die basierend auf der letzten Benutzernachricht aktualisiert wurden.
  • needShowMoreButton - Boolesche Eigenschaft, die als expression für die Eigenschaft visible verwendet werden kann, um bedingt die Schaltfläche Mehr anzeigen anzuzeigen, um zur nächsten Gruppe von Entitywerten zu navigieren.
  • outOfOrderMatches - Liste der Mischentityelemente, die mit einem Wert basierend auf der letzten Benutzernachricht gefüllt wurden, als der Benutzer nach einem anderen Mischentityelement gefragt wurde.
  • rangeStartVar - Name der Variablen, die den Beginn des aktuellen Bereichs der Entitywerte enthält.
  • validationErrors - Liste der Fehlermeldungen für das aktuelle Mischentityelement, die durch einen ungültigen Wert verursacht wurden, der in der letzten Benutzernachricht angegeben wurde.
  • allMatches - Liste der Mischentityelemente, die neue oder aktualisierte Werte basierend auf der letzten Benutzernachricht erhalten haben.
  • resolvingField - Name des aktuellen Mischentityelements, nach dem der Benutzer gefragt wird.
  • userInput - Die letzte Benutzernachricht.
  • skippedItems - Liste der Mischentityelemente, bei denen die maximale Anzahl von Prompts für einen Wert überschritten wird.
  • disambiguationValues - Liste der zulässigen Entitywerte, die in der letzten Benutzernachricht Übereinstimmungen aufweisen.
  • enumValues - Liste der zulässigen Entitywerte für das aktuelle Mischentityelement.

Unter Die Variable "system.entityToResolve" finden Sie Beispiele zur Verwendung der Variablen system.entityToResolve.

system.errorAction Fehlermeldungstext eines unerwarteten Fehlers, der während der Ausführung des Status ausgelöst wurde.
system.errorState Name des Status, der während der Ausführung einen unerwarteten Fehler ausgelöst hat.
system.expectedState Wenn der Benutzer durch die Nachrichtenhistorie scrollt und auf eine ältere, nicht mehr funktionsfähige Schaltfläche tippt, wird diese Variable mit dem Namen des Status gefüllt, der hätte ausgeführt werden sollen, jedoch niemals ausgeführt wurde, weil der Benutzer auf diese nicht mehr funktionsfähige Schaltfläche getippt hat. Siehe auch Dialogablauf für unerwartete Aktionen konfigurieren.
system.intent.name Wird verwendet, um auf das Intent zu verweisen, das ein Benutzer ausgewählt hat, nachdem er aufgefordert wurde, es eindeutig zu machen. (
${iResult.value.intentMatches.summary[0].intent}
Gibt immer das Intent mit der höchsten Punktzahl zurück. Dies ist möglicherweise nicht das Intent, das der Benutzer bei der Klärung auswählt.)
system.invalidUserInput Der boolesche Wert wird auf true gesetzt, wenn die Benutzereingabe nicht mit dem angeforderten Variablentyp übereinstimmt.
system.message Letzte von Oracle Digital Assistant empfangene Nachricht. Diese Variable hat die folgenden Eigenschaften:
  • channelConversation - Das Kanalunterhaltungsobjekt, das die folgenden Eigenschaften besitzt:
    • botId
    • channelType - Bei der Ausführung im Tester wird hierfür test zurückgegeben. Wenn Sie den Namen des Kanals abrufen möchten, der im Tester simuliert wird, verwenden Sie stattdessen system.channelType.
    • channelName
    • channelCategory - Gibt den Kanaltyp zurück. Für DA-Agent-Kanäle wird botAsAgent zurückgegeben.
    • groupConversation: Gibt true zurück, wenn die Unterhaltung ein Gruppenchat ist.
    • userId: Gibt die Benutzer-ID zurück. Für DA-Agent-Kanäle wird die Engagement-ID zurückgegeben.
    • sessionId: Gibt die Session-ID zurück. Für DA-Agent-Kanäle wird die Engagement-ID zurückgegeben.
    • sessionExpiryDuration
  • messagePayload - Die tatsächliche vom Benutzer gesendete Nachricht. Die Eigenschaften, auf die Sie zugreifen können, hängen vom Nachrichtentyp ab:
    • Textnachricht: Die Eigenschaft text gibt die vom Benutzer tatsächlich eingegebene Nachricht zurück.
    • Postback-Nachricht: Die Eigenschaften des Postback-Objekts, normalerweise action und variables, wenn die Komponente "Allgemeine Antwort" verwendet wird. Beispiel: Wenn der Benutzer auf eine Schaltfläche tippt, mit der die Variable pizzaSize festgelegt wird, kann dieser Wert mit dem folgenden Ausdruck abgerufen werden: ${system.message.messagePayload.variables.pizzaSize}
    • Standortnachricht: Die Eigenschaft location, die ein Standortobjekt mit den folgenden Eigenschaften enthält:
      • title
      • url
      • latitude
      • longitude
  • stateCount - Die Anzahl der Status, die zur Verarbeitung der letzten Benutzernachricht ausgeführt wurden.
  • platformVersion - Die aktuelle Version der Laufzeitplattform.
system.requestedState Wenn Benutzer einer Unterhaltung in einem Status beitreten, der eine Autorisierung erfordert, und der Benutzer nicht in der in system.authorizedUsers gespeicherten Benutzerliste enthalten ist, speichert die Dialog-Engine den Status, der ausgeführt werden sollte, in dieser Variable.
system.selectedCardIndex Diese Variable enthält den Index der ausgewählten Karte, wenn mit der Funktion das Kartenrendering für reine Textkanäle wie Twilio optimiert wird. Mit dieser Optimierung kann der Benutzer eine Karte in einem Prozess mit zwei Schritten auswählen: Zuerst wird eine Kartenliste angezeigt, dann kann der Benutzer die Nummern der Karten eingeben, die er auswählen möchte. Die entsprechende Indexnummer dieser Karte wird in dieser Variablen gespeichert.
Hinweis

Die Systemvariablen in der obigen Tabelle sind die einzigen Variablen, die Sie in FreeMarker-Ausdrücken verwenden können. Andere Systemvariablen sind nicht öffentlich und ihre Verwendung unterliegt Änderungen, was bedeutet, dass sich Ihre Fähigkeiten nicht auf sie verlassen können.

Beispiel: Die Variablen system.routingFromSkill, system.routingToSkill, system.routingFromIntent und system.routingToIntent sind nur für bestimmte Einstellungen des digitalen Assistenten verfügbar. Siehe Systemvariablen für digitale Assistenten.