Systementitäten

Machen Sie sich mit Systementitäten vertraut, die von IBM zur sofortigen Verwendung bereitgestellt werden. Diese vordefinierten Dienstentitäten helfen Ihrem Assistenten, Begriffe und Verweise zu erkennen, die von Kunden in Dialogen allgemein verwendet werden, wie zum Beispiel Zahlen- und Datumsangaben.

Informationen darüber, wie Sie Systemelemente zu Ihrem Dialog hinzufügen können, finden Sie unter "Erstellen von Elementen ".

Entität '@sys-currency'

Die Systementität @sys-currency erkennt Erwähnungen von Währungswerten in der Benutzereingabe. Die Währung kann mit einem Währungssymbol oder mit den währungsspezifischen Bezeichnungen angegeben werden. In beiden Fällen wird ein numerischer Wert zurückgegeben.

Erkannte Formate

  • 20 Cent
  • Fünf Dollar
  • 10 USD

Attribute

  • .literal: Die exakte Wortfolge in der Eingabe, die als Erwähnung einer Währung interpretiert wird.
  • .numeric_value: Der kanonische numerische Wert als Zahl des Typs 'Integer' oder 'Double' in Basiseinheiten.
  • .location: Listet die Indexelementwerte der ersten und letzten Buchstaben in der Textzeichenfolge für die Wortfolge auf, die als Erwähnung einer Währung interpretiert wird.
  • .unit: Grundeinheit einer Währung, die durch einen dreistelligen ISO-Währungscode angegeben wird. Beispiel: USD oder EUR.

In der folgenden Tabelle sind die Informationen aufgelistet, die jedes Attribut aus der Benutzereingabe erfasst.

Beispiele für '@sys-currency'
Attribut Typ Beispiel (Eingabe = twenty dollars) Beispiel (Eingabe = $1,234.56)
@sys-currency Zeichenfolge 20 1234.56
@sys-currency.literal Zeichenfolge twenty dollars $1,234.56
@sys-currency.numeric_value Anzahl 20 1234.56
@sys-currency.location array [0,14] [0,9]
@sys-currency.unit Zeichenfolge USD USD

Für den Input veinte euro ( twenty euro auf Spanisch) oder €1.234,56 gibt @sys-currency diese Werte zurück:

Weitere Beispiele für '@sys-currency'
Attribut Typ Eingabe ist veinte euro Eingabe ist €1.234,56
@sys-currency Zeichenfolge 20 1234.56
@sys-currency.literal Zeichenfolge veinte euro €1.234, 56
@sys-currency.numeric_value Anzahl 20 1234.56
@sys-currency.location array [0,11] [0,9]
@sys-currency.unit Zeichenfolge EUR EUR

Gleichwertige Ergebnisse werden für andere unterstützte Sprachen und Landeswährungen zurückgegeben.

Tipps zur Verwendung von '@sys-currency'

Falls Sie die Entität @sys-currency als Knotenbedingung verwenden und der Benutzer $0 als Wert angibt, wird der Wert korrekt als Währung erkannt, die Bedingung jedoch für die Zahl 0 und nicht für die Währung 0 ausgewertet. Im Ergebnis wird der Wert null in der Bedingung mit 'false' ausgewertet und der Knoten wird nicht verarbeitet. Wenn Währungswerte unter ordnungsgemäßer Verarbeitung von Nullen geprüft werden sollen, verwenden Sie stattdessen den Ausdruck @sys-currency OR @sys-currency == 0 in der Knotenbedingung.

Weitere Informationen zu Währungen, die je nach Sprache erkannt werden, finden Sie unter Währungsunterstützung.

@sys-date

Die Systementität @sys-date erkennt Erwähnungen von Datumsangaben in der Benutzereingabe. Der Datumswert wird als Zeichenfolge im Format yyyy-MM-dd gespeichert. Beispiel: Die Erwähnung May 8 ist im Format "2020-05-08" gespeichert. Das System erweitert fehlende Elemente eines Datums (z. B. die Jahresangabe für "May 8") mit den aktuellen Datumswerten.

Wenn Sie in der Benutzereingabe ein ungültiges Datum eingeben, erkennt die Systemeinheit @sys-date das Datum nicht und zeigt einen Invalid date-Fehler an.

Wenn Sie Englisch als Sprache auswählen, verwendet das System US-Englisch ( en-us ) als Gebietsschema. Nur für die Ländereinstellung 'US English' lautet das Format des Datums MM/DD/YYYY. Das Format des Datums wird nur dann in DD/MM/YYYY geändert, wenn die ersten beiden Ziffern einen Wert größer als '12' ergeben. Der gespeicherte Wert hat das Format yyyy-MM-dd.

Erkannte Formate

  • Freitag
  • heute
  • May 8

Attribute

  • .alternatives: Speichert alternative Datumswerte, wenn die Eingabe unterschiedlich interpretiert werden kann. Normalerweise wird das zukünftige Datum als Wert für @sys-date zurückgegeben. Bei bestehenden Mehrdeutigkeiten wird das vergangene Datum als alternatives Datum gespeichert. Beispiel: Für die Eingabe in January wird ein zukünftiges Datum zurückgegeben. Wenn jedoch momentan Februar ist (Januar des aktuellen Jahrs ist bereit vorüber), dann wird der vergangene Januar auch als alternatives Datum zurückgegeben. Ein alternatives Datum wird auch für Wochentage bereitgestellt, wenn der Wochentag ohne einen Modifikator angegeben ist. Beispiel: Für die Eingabe Are you open Wednesday? (Haben Sie am Mittwoch geöffnet?) wird das zukünftige Datum gespeichert, ein alternatives Datum (Datum des vorangegangenen Mittwochs) wird jedoch ebenfalls erstellt. Alternative Datumsangaben werden für Wortfolgen erstellt, die Modifikatoren wie next (nächste/r/s), this (diese/r/s) oder last (letze/r/s) enthalten, die in unterschiedlichen Ländereinstellungen verschiedene Bedeutungen haben können. Der Service 'watsonx Assistant' behandelt Datumsangaben mit last und next so, als ob der unmittelbar letzte oder nächste Tag referenziert wird, der entweder in derselben oder in einer vorherigen Woche liegen kann. Für bestimmte Modifikatoren wird ein alternatives Datum unabhängig vom aktuellen Tag der Woche erstellt. Beispiel: Die Eingabe enthält die Angabe this Wednesday (diesen Mittwoch). Wenn es momentan Montag ist, wird das zukünftige Datum gespeichert und es wird kein alternatives Datum erstellt. Wenn es jedoch Mittwoch ist, dann wird angenommen, dass das Datum den Mittwoch der kommenden Woche bezeichnet, das heutige Datum wird jedoch als alternatives Datum gespeichert. Alle alternativen Datumsangaben werden als Objekt gespeichert, das einen Wert und eine Konfidenz für jedes alternative Datum enthält. Die Objekte für alternative Datumsangaben werden in einem JSON-Array gespeichert. Zum Abrufen eines alternativen Werts verwenden Sie die folgende Syntax: @sys-date.alternative.
  • .calendar_type: Gibt den Kalendertyp für die verwendete Zeitzone an. GREGORIAN ist der einzige unterstützte Typ.
  • .datetime_link: Siehe Erwähnungen von Datum und Uhrzeit.
  • .day: Helper-Methode, die den Tag in der Datumsangabe zurückgibt.
  • .day_of_week: Gibt den Wochentag in der Datumsangabe als Zeichenfolge in Kleinbuchstaben zurück.
  • .festival: Erkennt ländereinstellungsspezifische Feiertagsnamen und kann das Datum des kommenden Feiertags wie Thanksgiving, Christmas und Halloween zurückgeben. Verwenden Sie nur Kleinbuchstaben, wenn Sie einen Feiertag in einer Bedingung angeben müssen, z. B. (@sys-date.festival == 'thanksgiving'). Weitere Informationen zu anerkannten Feiertagen finden Sie unter Festivals.
  • .granularity: Erkennt Erwähnungen von Zeitrahmen. Die Optionen sind day (Tag), weekend (Wochenende), week (Woche), fortnight (vierzehn Tage), month (Monat), quarter (Quartal) und year (Jahr).
  • .interpretation: Das Objekt, das von Ihrem Assistenten zurückgegeben wird und neue Felder enthält, die die Genauigkeit des System-Entity-Klassifikators erhöhen. Sie können interpretation in dem Ausdruck weglassen, mit dem Sie auf diese Felder Bezug nehmen. Sie können beispielsweise auf den Wert des Feldes festival im Interpretationsobjekt zugreifen, indem Sie die Kurzschreibweise <? @sys-date.festival ?> verwenden.
  • .literal: Die exakte Wortfolge in der Eingabe, die als Datum interpretiert wird.
  • .location: Listet Indexelementwerte der ersten und letzten Buchstaben in der Textzeichenfolge für die Wortfolge auf, die als Datum interpretiert wird.
  • .month: Helper-Methode, die den Monat in der Datumsangabe zurückgibt.
  • .range_link: Wenn vorhanden, gibt dieses Attribut an, dass die Eingabe des Benutzers einen Datumsbereich enthält. Der Anfangs- und der Endindexwert der Zeichenfolge, die den Datumsbereich enthält, werden als Teil des Linknamens gespeichert. Es werden zusätzliche Informationen bereitgestellt, wie zum Beispiel die Rolle, die jede Entität @sys-date in der Bereichsbeziehung spielt. Das Anfangsdatum hat zum Beispiel den Rollentyp date_from und das Enddatum den Rollentyp date_to. Zum Prüfen eines Rollenwerts können Sie die Syntax @sys-date.role?.type == 'date_from' verwenden. Wenn die Benutzereingabe einen Bereich impliziert, jedoch nur ein Datum angegeben wird, wird die Eigenschaft range_link nicht zurückgegeben, sondern es wird nur ein Rollentyp zurückgegeben. Zum Beispiel, wenn der Benutzer Have you been open since yesterday fragt. Das gestrige Datum wird als Erwähnung @sys-date erkannt und der Rollentyp date_from wird für die Erwähnung zurückgegeben. Ein Bereichsmodifikator (range_modifier), der das Wort in der Eingabe identifiziert, das die Erkennung als Bereich auslöst, wird ebenfalls zurückgegeben. In diesem Beispiel ist der Modifikator since.
  • .relative_{timeframe}: Erkennt und erfasst Erwähnungen von relativen Datumswerten in der Eingabe des Benutzers. Gibt eine Zahl zurück, die die Anzahl der Einheiten zwischen dem aktuellen Datum und dem angegebenen Datum anzeigt. Die Einheiten {time frame} können year, month, week, weekend oder day sein.
  • .specific_{timeframe}: Erkennt und erfasst Erwähnungen spezifischer Datumseinheiten in der Eingabe des Benutzers. Die Einheiten {time frame} können year, quarter, month, day oder day_of_week sein.
  • .year: Helper-Methode, die das Jahr in der Datumsangabe zurückgibt.

In der folgenden Tabelle sind die Informationen aufgelistet, die jedes Attribut aus der Benutzereingabe erfasst.

Attribute für '@sys-date'
Attribut Typ Beispiel
@sys-date Zeichenfolge Wenn die Eingabe May 13, 2020 (13. Mai 2020) lautet, wird 2020-05-13 zurückgegeben.
@sys-date.alternatives array Wenn das heutige Datum beispielsweise 10 March 2019 ist und der Benutzer on March 1 eingibt, wird 1st für das nächste Jahr als @sys-date ( 2020-03-01 ) gespeichert. Der Benutzer könnte jedoch 1st meinen. Das System speichert auch das Datum dieses Jahres (2019-03-01) als alternativen Datumswert. Weiteres Beispiel: Wenn der heutige Tag Dienstag ist und ein Benutzer this Tuesday (diesen Dienstag) oder next Tuesday (nächsten Dienstag) eingibt, wird @sys-date auf das Datum von Dienstag der nächsten Woche gesetzt und kein alternatives Datum erstellt.
@sys-date.calendar_type Zeichenfolge Gibt für jede Datumserwähnung GREGORIAN zurück.
@sys-date.datetime_link Zeichenfolge Nicht zutreffend
@sys-date.day Zeichenfolge Wenn die Eingabe 13 May 2020 (13. Mai 2020) lautet, wird 13 zurückgegeben.
@sys-date.day_of_week Zeichenfolge Wenn die Eingabe 13 May 2020 (13. Mai 2020) lautet und wenn dieses Datum auf einen Mittwoch fällt, wird wednesday (Mittwoch) zurückgegeben.
@sys-date.festival Zeichenfolge Wenn die Eingabe Thanksgiving Day enthält, wird 2020-11-26 zurückgegeben.
@sys-date.granularity Zeichenfolge Wenn in der Eingabe next year (nächstes Jahr) erwähnt wird, gibt das System year (Jahr) zurück.
@sys-date.literal Zeichenfolge Wenn die Eingabe I plan to leave on Saturday. (Ich plane, am Samstag abzureisen) lautet, dann wird on Saturday (am Samstag) zurückgegeben.
@sys-date.location array Wenn die Eingabe My vacation starts tomorrow. (13. Mai 2020) lautet, wird [19, 27] zurückgegeben.
@sys-date.month Zeichenfolge Wenn die Eingabe 13 May 2020 (13. Mai 2020) lautet, wird 5 zurückgegeben.
@sys-date.range_link Zeichenfolge Die Eingabe könnte zum Beispiel wie folgt lauten: I will travel from March 15 to March 22. Jede erkannte Entität @sys-date verfügt über eine Eigenschaft range_link in ihrer Ausgabe mit dem Namen date_range_14_39, wobei die Position des Datumsbereichstextes [14,39] lautet. Das Startdatum (2020-05-15) weist den Rollentyp date_from auf. Das Enddatum (2020-05-22) weist den Rollentyp date_to auf.
@sys-date.relative_{timeframe} Anzahl Wenn die Eingabe two weeks ago (13. Mai 2020) lautet, wird relative_week = -2 zurückgegeben. Wenn die Eingabe this weekend (dieses Wochenende) lautet, wird relative_weekend = 0 zurückgegeben. Wenn die Eingabe today (heute) lautet, wird relative_day = 0 zurückgegeben.
@sys-date.specific_{timeframe} Zeichenfolge Gibt für 2020 den Wert specific_year = 2020 zurück. Gibt für Q2 2020 oder second quarter 2020 (zweites Quartal 2020) die Angabe specific_quarter = 2 zurück. Für March (März) wird specific_month = 3 zurückgegeben. Für Monday (Montag) wird specific_day_of_week = monday zurückgegeben. Für May 3rd (3. Mai) wird specific_day = 3 zurückgegeben.
@sys-date.year Zeichenfolge Wenn die Eingabe 13 May 2020 (13. Mai 2020) lautet, wird 2020 zurückgegeben.

@sys-time

Die Systementität @sys-time erkennt Erwähnungen von Zeitangaben in der Benutzereingabe. Sie gibt die in der Benutzereingabe angegebene Zeit im Format HH:mm:ss zurück. Beispiel: "13:00:00" für 1pm.

Erkannte Formate

  • 2pm
  • at 4
  • 15:30

Attribute

  • .alternatives: Erfasst andere Zeiten als die, die als Wert für @sys-time gespeichert sind und die der Benutzer möglicherweise meint, wenn die Zeit nicht eindeutig angegeben ist. Die alternativen Werte werden als Objekt gespeichert, das einen Wert und eine Konfidenz für jede alternative Zeit enthält und in einem JSON-Array gespeichert wird. Zum Abrufen eines alternativen Werts verwenden Sie die folgende Syntax: @sys-time.alternative.
  • .calendar_type: Gibt den Kalendertyp für die verwendete Zeitzone an. GREGORIAN ist der einzige unterstützte Typ.
  • .granularity: Erkennt Erwähnungen von Zeitrahmen. Optionen sind hour, minute, second und instant.
  • .hour: Helper-Methode, die die in der Zeitangabe festgelegte Stunde als numerischen Wert zurückgibt.
  • .interpretation: Das Objekt, das von Ihrem Assistenten zurückgegeben wird und neue Felder enthält, die die Genauigkeit des System-Entity-Klassifikators erhöhen. Sie können interpretation in dem Ausdruck weglassen, mit dem Sie auf diese Felder Bezug nehmen. Sie können beispielsweise auf den Wert des Feldes granularity im Interpretationsobjekt zugreifen, indem Sie die Kurzschreibweise <? @sys-time.granularity ?> verwenden.
  • .literal: Exakter Ausdruck in der Eingabe, der als Uhrzeit interpretiert wird.
  • .location: Listet die Indexelementwerte der ersten und letzten Buchstaben in der Textzeichenfolge für die Wortfolge auf, die als Erwähnung einer Zeitangabe interpretiert wird.
  • .minute: Helper-Methode, die den Minutenwert zurückgibt, der in der Zeitangabe angegeben wurde.
  • .part_of_day: Erkennt Ausdrücke, die die Tageszeit darstellen, z. B. morning (Morgen), afternoon (Nachmittag), evening (Abend), night (Nacht) oder now (jetzt). Legt außerdem einen Zeitraum für jeden Teil des Tages fest. Die Antwort enthält zwei Werte für @sys-time, nämlich einen für den Beginn und einen für das Ende des Zeitraums. Das Entitätsarray enthält ein Objekt range_link mit den Rollentypen time-from und time-to. Die Zeitbereiche für verschiedene Abschnitte des Tages können abhängig von der Ländereinstellung unterschiedlich sein. Für amerikanisches Englisch lautet der Vormittag 6:00:00 bis 12:00:00. Der Nachmittag ist 12:00:00 bis 18:00:00. Der Abend ist 18:00:00 bis 22:00:00. Die Nacht ist 22:00:00 bis 23:59:59. Die Nacht endet kurz vor Mitternacht, da sie sich andernfalls mit einem neuen Tag überschneiden würde, der durch @sys-date gemessen wird.
  • .range_link: Wenn vorhanden, gibt dieses Attribut an, dass die Eingabe des Benutzers einen Zeitbereich enthält. Der Anfangs- und der Endindexwert der Zeichenfolge, die den Zeitbereich enthält, werden als Teil des Linknamens gespeichert. Es werden zusätzliche Informationen bereitgestellt, wie zum Beispiel die Rolle, die jede Entität @sys-time in der Bereichsbeziehung spielt. Die Anfangszeit hat zum Beispiel den Rollentyp time_from und die Endzahl den Rollentyp time_to. Zum Prüfen eines Rollenwerts können Sie die Syntax @sys-time.role?.type == 'time_from' verwenden. Wenn die Benutzereingabe einen Bereich impliziert, jedoch nur eine Zeit angegeben wird, wird die Eigenschaft range_link nicht zurückgegeben, sondern es wird nur ein Rollentyp zurückgegeben. Ein Bereichsmodifikator (range_modifier), der das Wort in der Eingabe identifiziert, das die Erkennung als Bereich auslöst, wird ebenfalls zurückgegeben.
  • .relative_{timeframe}: Erkennt relative Erwähnungen von Zeitangaben und gibt eine Zahl zurück, die die Anzahl der Einheiten zwischen dem aktuellen Zeitpunkt und dem angegebenen Zeitpunkt anzeigt. Als Zeitrahmeneinheiten ({timeframe}) können hour (Stunde), minute (Minute) oder second (Sekunde) angegeben werden.
  • .second: Helper-Methode, die den Sekundenwert zurückgibt, der in der Zeitangabe angegeben wurde.
  • .specific_{timeframe}: Erkennt und erfasst Erwähnungen spezifischer Zeiteinheiten in der Eingabe des Benutzers. Als Zeitrahmeneinheiten ({timeframe}) können hour (Stunde), minute (Minute) oder second (Sekunde) angegeben werden.

In der folgenden Tabelle sind die Informationen aufgelistet, die jedes Attribut aus der Benutzereingabe erfasst.

Attribute für '@sys-time'
Attribut Typ Beispiel
@sys-time Zeichenfolge Für die Eingabe 6:30 PM wird 18:30:00 zurückgegeben.
@sys-time.alternatives array Wenn ein Benutzer The meeting is at 5 (Das Meeting findet um 5 Uhr statt) sagt, berechnet das System die Zeit als 5:00:00 oder 5 AM und speichert diese Angabe als Wert für @sys-time. Der Benutzer könnte jedoch 17:00:00 oder 5 PM meinen. Das System speichert außerdem die spätere Zeitangabe als alternativen Zeitwert. Wenn der Benutzer The meeting is at 5pm (Das Meeting findet um 5 Uhr nachmittags statt) eingibt, wird @sys-time auf den Wert 17:00:00 gesetzt und es wird kein alternativer Wert erstellt, weil keine Unklarheit über AM (vormittags) und PM (nachmittags) besteht.
@sys-time.calendar_type Zeichenfolge Gibt für jede Zeiterwähnung GREGORIAN zurück.
@sys-time.granularity Zeichenfolge Wenn die Eingabe now (13. Mai 2020) lautet, wird instant zurückgegeben. Für 3 o'clock (3 Uhr) oder noon (Mittag) wird hour (Stunde) zurückgegeben. Für 17:00:00 (März) wird second zurückgegeben.
@sys-time.hour Anzahl Enthält die Eingabe den Wert 5:30:10 PM, wird zur Darstellung von '5 PM' der Wert 17 zurückgegeben.
@sys-time.literal Zeichenfolge Für die Eingabe The store closes at 8PM (Das Geschäft schließt um 8 Uhr abends) wird at 8PM (um 8 Uhr abends) zurückgegeben.
@sys-time.location array Für die Eingabe The store closes at 8PM (Das Geschäft schließt um 8 Uhr abends) wird [17, 23] (um 8 Uhr abends) zurückgegeben.
@sys-time.minute Anzahl Enthält die Eingabe eine Erwähnung der Uhrzeit 5:30:10 PM, wird 30 zurückgegeben. Wenn keine Minuten angegeben wurden, gibt dieser Helper 0 zurück.
@sys-time.part_of_day Zeichenfolge Für die Eingabe this morning (heute Morgen) werden zwei Werte für '@sys-time' zurückgegeben: 6:00:00 und 12:00:00. Außerdem gibt das System ein Objekt range_link mit den Rollentypen time-from und time-to zurück.
@sys-time.range_link Zeichenfolge Für die Eingabe Are you open from 9AM to 11AM (Haben Sie zwischen 9 und 11 Uhr morgens geöffnet) werden zwei Entitäten von @sys-time erkannt. Jede der beiden Entitäten von @sys-time, die erkannt werden, verfügt über eine Eigenschaft range_link in der Ausgabe. Wenn ein Bereich eingeschlossen ist, jedoch nur ein Zeitwert bereitgestellt wird, gibt das System nur einen Wert für @sys-time zurück. Für die Eingabe Are you open until 9PM (Haben Sie bis 9 Uhr abends geöffnet) wird '9PM' als Erwähnung von @sys-time erkannt und der Rollentyp time_to dafür zurückgegeben. Der Wert für range_modifier in diesem Beispiel ist until.
@sys-time.relative_{timeframe} Anzahl Gibt für 5 hours ago den Wert relative_hour = -5 zurück. Für in two minutes (in zwei Minuten) wird relative_minute = 2 zurückgegeben. Für in a second (in einer Sekunde) wird relative_second = 1 zurückgegeben.
@sys-time.second Anzahl Enthält die Eingabe eine Erwähnung der Uhrzeit 5:30:10 PM, wird 10 zurückgegeben. Wenn kein Sekundenwert angegeben wurde, gibt dieser Helper 0 zurück.
@sys-time.specific_{timeframe} Zeichenfolge Gibt für at 5 o'clock den Wert specific_hour = 5 zurück. Für at 2:30 (in zwei Minuten) wird specific_minute = 30 zurückgegeben. Für 23:30:22 (in einer Sekunde) wird specific_second = 22 zurückgegeben.

Erwähnungen von Datum und Uhrzeit

Bestimmte Benutzereingaben enthalten Informationen, die sowohl Datums- als auch Zeitangaben enthalten. Ihr Assistent erfasst beide Werte und speichert sie als zwei separate Entitätserwähnungen (eine Erwähnung von @sys-date und eine Erwähnung von @sys-time).

Die Beziehung zwischen den Datums- und Zeitwerten wird auf zwei Arten festgelegt:

  • Jede Entität, die an der Beziehung teilnimmt, enthält das gleiche Attribut datetime_link.
  • Die Literalzeichenfolge, die die vollständige Erwähnung von Datum und Uhrzeit umfasst, wenn beide zusammen in der Eingabe erwähnt werden, ist für beide Entitäten identisch. Die Positionsinformationen werden an den Namen für datetime_link angefügt.

Erkannte Formate

  • now
  • two hours from now
  • on Monday at 4pm

Attribute

  • .datetime_link: Falls vorhanden, bedeutet dies, dass in der Eingabe des Benutzers Datum und Uhrzeit zusammen erwähnt werden, was darauf hindeutet, dass Datum und Uhrzeit miteinander in Zusammenhang stehen. Der Anfangs- und der Endindexwert der Zeichenfolge, die das Datum und die Uhrzeit enthält, werden als Teil des Linknamen gespeichert.

In der folgenden Tabelle sind die Informationen aufgelistet, die jedes Attribut aus der Benutzereingabe erfasst.

Attribute für Datum und Uhrzeit
Attribut Typ Beispiel
@sys-date.datetime_link und @sys-time.datetime_link Zeichenfolge Wenn die Eingabe Are you open today at 5? lautet, wird today als Datumsangabe ( 2020-05-21 ) an der Stelle [13,18] und at 5 als Zeitangabe ( 05:00:00 ) an der Stelle [19,23] erkannt. Der Positionswert [13,23], der die Datums- und die Uhrzeiterwähnung umfasst, wird an die resultierende Eigenschaft datetime_link angefügt. Die Eigenschaft erhält den Namen datetime_link_13_23 und wird in die Ausgabe der Entitäten @sys-date und @sys-time eingeschlossen, die an der Beziehung beteiligt sind.

Zeitzonen

Angaben eines Datums oder einer Uhrzeit, die sich auf die aktuelle Uhrzeit beziehen, werden für eine ausgewählte Zeitzone aufgelöst. Als Zeitzone gilt standardmäßig GMT (Greenwich Mean Time, mittlere Greenwich-Zeit). REST-API-Clients, die sich in anderen Zeitzonen befinden, erhalten daher den aktuellen Wert in UTC (Coordinated Universal Time, koordinierte Weltzeit), wenn die Eingabe now enthält.

Optional kann der REST-API-Client die lokale Zeitzone als Kontextvariable $timezone hinzufügen. Diese Kontextvariable muss mit jeder Clientanforderung gesendet werden. Als Wert für $timezone kann beispielsweise America/Los_Angeles, EST oder UTC verwendet werden. Eine vollständige Liste der unterstützten Zeitzonen finden Sie im Abschnitt Unterstützte Zeitzonen.

Wenn die Variable $timezone angegeben wird, werden die Werte der relativen @sys-date- und @sys-time-Erwähnungen auf der Grundlage der Zeitzone des Kunden anstelle der koordinierten Weltzeit berechnet.

Informationen zur Verarbeitung von Datums- und Zeitwerten enthalten die Referenzinformationen zu Methoden für Datum und Uhrzeit.

Entität '@sys-number'

Die Systementität @sys-number erkennt Erwähnungen von numerischen Angaben in der Benutzereingabe. Die Zahl kann in Form von Ziffern oder Zahlwörtern geschrieben werden. In beiden Fällen wird ein numerischer Wert zurückgegeben.

Erkannte Formate

  • 21
  • einundzwanzig
  • 3.13

Attribute

  • .literal: Die exakte Wortfolge in der Eingabe, die als numerischer Wert interpretiert wird.
  • .location: Listet Indexelementwerte der ersten und letzten Buchstaben in der Textzeichenfolge auf, die als numerischer Wert interpretiert wird.
  • .numeric_value: Der kanonische numerische Wert als Zahl des Typs 'Integer' oder 'Double'.
  • .range_link: Wenn vorhanden, gibt dieses Attribut an, dass die Eingabe des Benutzers einen Zahlenbereich enthält. Der Positionswert des Texts, der den Bereich angibt, wird an den Linknamen angefügt. Es werden zusätzliche Informationen bereitgestellt, wie zum Beispiel die Rolle, die jede Entität @sys-number in der Bereichsbeziehung spielt. Die Anfangszahl hat zum Beispiel den Rollentyp number_from und die Endzahl den Rollentyp number_to. Zum Prüfen eines Rollenwerts können Sie die Syntax @sys-number.role?.type == 'number_from' verwenden.

In der folgenden Tabelle sind die Informationen aufgelistet, die jedes Attribut aus der Benutzereingabe erfasst.

Beispiele für '@sys-number'
Attribut Typ Beispiel
@sys-number Zeichenfolge Wenn die Eingabe twenty (13. Mai 2020) lautet, wird 20 zurückgegeben. Wenn die Eingabe 1,234.56 (dieses Wochenende) lautet, wird 1234.56 zurückgegeben.
@sys-number.literal Zeichenfolge Für die Eingabe twenty (zwanzig) wird twenty zurückgegeben. Für die Eingabe 1,234.56 wird 1,234.56 zurückgegeben.
@sys-number.location array Wenn die Eingabe twenty ist, wird [0,6] ausgegeben. Wenn die Eingabe 1,234.56 ist, wird [0,8] ausgegeben.
@sys-number.numeric_value Anzahl Wenn die Eingabe twenty (13. Mai 2020) lautet, wird 20 zurückgegeben. Wenn die Eingabe 1,234.56 (dieses Wochenende) lautet, wird 1234.56 zurückgegeben.
@sys-number.range_link Zeichenfolge Für die Eingabe I'm interested in 5 to 7. (Mich interessiert der Bereich zwischen 5 und 7) verfügt jede der beiden Systementitäten @sys-number, die erkannt werden, über ein Vorkommen von range_link mit number_range_18_24 in der Ausgabe. Die erste Entität @sys-number (5) verfügt über den Rollentyp number_from. Die letzte Entität @sys-number (7) verfügt über den Rollentyp number_to.

Tipps zur Verwendung von '@sys-number'

  • Falls Sie die Entität '@sys-number' als Knotenbedingung verwenden und der Benutzer 0 als Wert angibt, wird der Wert 0 korrekt als Zahl erkannt. Der Wert 0 wird jedoch als Wert null für die Bedingung interpretiert, was zur Folge hat, dass der Knoten nicht verarbeitet wird. Wenn Zahlenwerte unter ordnungsgemäßer Verarbeitung von Nullen geprüft werden sollen, können Sie in der Knotenbedingung auch den Ausdruck @sys-number == 0 verwenden. Der vollständige Ausdruck lautet @sys-number OR @sys-number == 0.

  • Falls Sie die Entität '@sys-number' zum Vergleichen von Zahlenwerten in einer Bedingung verwenden, müssen Sie unbedingt eine separate Überprüfung auf das Vorhandensein einer Zahl aufnehmen. Wenn keine Zahl gefunden wird, wird '@sys-number' mit null ausgewertet. Ihr Vergleich wird möglicherweise auch dann mit 'true' ausgewertet, wenn keine Zahl vorhanden ist.

    Verwenden Sie beispielsweise nicht @sys-number<4 allein, da @sys-number null ergibt, wenn keine Zahl gefunden wird. Da null kleiner als 4 ist, wird die Bedingung in diesem Fall mit 'true' ausgewertet, obwohl keine Zahl vorhanden ist.

    Verwenden Sie stattdessen (@sys-number OR @sys-number == 0) AND @sys-number < 4. Falls keine Zahl vorhanden ist, wird die erste Bedingung mit 'false' ausgewertet. Dies führt dazu, dass die gesamte Bedingung mit 'false' ausgewertet wird.

Weitere Informationen zur Verarbeitung von Zahlenwerten enthalten die Referenzinformationen zu Methoden für Zahlen.

Entität '@sys-percentage'

Die Systementität @sys-percentage erkennt Erwähnungen von Prozentangaben in der Benutzereingabe. Der Prozentsatz kann in einer Äußerung mit dem Prozentzeichen oder mit dem Wort percent geschrieben sind. In beiden Fällen wird ein numerischer Wert zurückgegeben.

Erkannte Formate

  • 15%
  • 10 Prozent

Attribute

  • .literal: Die exakte Wortfolge in der Eingabe, die als Prozentangabe interpretiert wird.
  • .location: Listet Indexelementwerte der ersten und letzten Buchstaben in der Textzeichenfolge auf, die als Erwähnung eines Prozentwertes interpretiert wird.
  • .numeric_value: Der kanonische numerische Wert als Zahl des Typs 'Integer' oder 'Double'.
  • .range_link: Wenn vorhanden, gibt dieses Attribut an, dass die Eingabe des Benutzers einen Bereich (z. B. from 2 to 3 percent) enthält. Der Positionswert des Texts, der den Bereich angibt, wird an den Linknamen angefügt. Es werden zusätzliche Informationen wie zum Beispiel die Rolle, die jede Entität @sys-percentage in der Bereichsbeziehung spielt, bereitgestellt. Die Anfangszahl hat zum Beispiel den Rollentyp number_from und die Endzahl den Rollentyp number_to. Zum Prüfen eines Rollenwerts können Sie die Syntax @sys-percentage.role?.type == 'number_from' verwenden.

In der folgenden Tabelle sind die Informationen aufgelistet, die jedes Attribut aus der Benutzereingabe erfasst.

Beispiele für '@sys-percentage'
Attribut Typ Beispiel
@sys-percentage Zeichenfolge Wenn die Eingabe den Wert 1,234.56% enthält, wird 1234.56 zurückgegeben.
@sys-percentage.literal Zeichenfolge Wenn die Eingabe den Wert 50 percent (50 Prozent) enthält, wird 50 percent zurückgegeben.
@sys-percentage.location array Wenn die Eingabe den Wert from 2 to 3 percent enthält, wird [0,19] zurückgegeben.
@sys-percentage.numeric_value Anzahl Wenn die Eingabe 50 percent enthält, wird 50 zurückgegeben.
@sys-percentage.range_link Zeichenfolge Wenn die Eingabe den Wert from 2 to 3 percent enthält, wird number_range_0_19 zurückgegeben.

Tipps zur Verwendung von '@sys-percentage'

  • Wenn Sie die Entität @sys-percentage als Knotenbedingung verwenden und der Benutzer 0% als Wert angibt, wird der Wert ordnungsgemäß als Prozentsatz erkannt, aber die Bedingung wird auf die Zahl 0 und nicht auf den Prozentsatz 0% ausgewertet. Im Ergebnis wird der Wert null in der Bedingung mit 'false' ausgewertet und der Knoten wird nicht verarbeitet. Wenn Prozentsatzwerte unter ordnungsgemäßer Verarbeitung von Nullprozentwerten geprüft werden sollen, verwenden Sie in der Knotenbedingung stattdessen den Ausdruck @sys-percentage OR @sys-percentage == 0.

  • Falls Sie einen Wert wie 1-2% eingeben, werden die Werte 1% und 2% als Systementitäten zurückgegeben.

Systementitäten in Bedingungen verwenden

In einem Knoten, der eine Bedingung für die Absicht #Customer_Care_Store_Hours testet, können Sie bedingte Antworten hinzufügen, die Eigenschaften der neuen Systementitäten verwenden, um je nach Benutzerfrage leicht unterschiedliche Antworten zu Geschäftszeiten zurückzugeben.

Es ist unwahrscheinlich, dass Sie alle diese bedingten Antworten in einem realen Dialog verwenden wollen. Sie werden nur beschrieben, um zu zeigen, was möglich ist.

Systementitäten in bedingten Antworten
Bedingungssyntax für bedingte Antwort Beschreibung Beispiel für Antworttext
@sys-date.festival == 'thanksgiving' Prüft, ob der Kunde nach Stunden speziell am Thanksgiving-Tag fragt. Wir verteilen kostenlose Essen an Bedürftige am Thanksgiving-Tag.
@sys-date.festival Prüft, ob der Kunde nach Stunden an einem bestimmten Feiertag fragt. Wir haben am Weihnachtstag, am 4. Juli und am Präsidententag geschlossen. An anderen Feiertage haben wir von 10:00 bis 17:00 Uhr geöffnet.
@sys-time.part_of_day == 'night' Prüft, ob der Benutzer Begriffe in die Eingabe einschließt, die Nacht als Tageszeit erwähnen. Wir haben nicht bis spät in die Nacht geöffnet. Wir schließen an den meisten Tagen um 21:00 Uhr.
@sys-date.datetime_link && input.text.contains('today') && now().sameOrAfter(@sys-time) Prüft, ob die Eingabe eine Phrase wie today at 8 enthält. Außerdem wird geprüft, ob die erkannte @sys-time vor der aktuellen Uhrzeit liegt. Sie können eine Kontextvariable zur bedingten Antwort hinzufügen, die eine $new_time-Variable mit dem Wert <? @sys-time.plusHours(12) ?> erstellt. Sie können diesen Ansatz verwenden, um eine Datumsvariable zu erstellen, die die wahrscheinlichere Zeit erfasst, die von einem Benutzer gemeint ist, der am Mittag nach Are you open today at 8 fragt. Das System geht davon aus, dass der Benutzer 8AM statt 8PM meint. Sie meinen heute um $new_time oder?
@sys-time.range_link && entities[0].role?.type == 'time_from' && entities[1].role?.type == 'time_to' Prüft, ob die Eingabe einen Zeitbereich enthält. Die Bedingung stellt außerdem sicher, dass die erste @sys-time-Systemeinheit, die im Array der Entitäten aufgeführt ist, die Startzeit und die zweite die Endzeit ist, bevor sie in die Antwort aufgenommen werden. Sie möchten wissen, ob wir zwischen <? entities[0] ?> und <? entities[1] ?> geöffnet haben, ist das richtig?
@sys-time && entities.size() < 2 && entities[0].role?.type == 'time_to' Prüft, ob die Eingabe eine Erwähnung @sys-time enthält, die den Rollentyp time_to hat. Wenn die Benutzereingabe dieser Bedingung entspricht, weist dies darauf hin, dass der Benutzer die Endzeit eines offenen Zeitbereichs angegeben hat. Zum Beispiel würde die Antwort durch die Eingabe Are you open until 9pm? ausgelöst werden. Diese Eingabe erfüllt die Bedingung, weil sie nur eine Zeit in einem Zeitraum angibt und die Erwähnung die Rolle time_to hat. Meinen Sie von jetzt (<? now().reformatDateTime('h:mm a') ?>) bis <? @sys-time.reformatDateTime('h:mm a') ?>?
@sys-date.day_of_week == 'sunday' Prüft, ob ein bestimmtes Datum, zu dem der Benutzer eine Frage stellt, auf einen Sonntag fällt. Wie haben an Sonntagen geschlossen.
@sys-date.specific_day_of_week == 'monday' && @sys-date.alternative Prüft, ob der Benutzer den Wochentag Monday in der Anfrage erwähnt hat. Beispiel: Are you open Monday. Die Bedingung prüft außerdem, ob alternative Datumsangaben gespeichert wurden. Alternative Datumsangaben werden erstellt, wenn sich der Assistent nicht ganz sicher ist, welchen Montag der Benutzer meint, sodass er auch die Datumangaben alternativer Montage speichert. Wenn ein Benutzer einen Wochentag angibt, nimmt der Assistent an, dass der Benutzer das künftige Vorkommen des Tages (den kommenden Montag) meint. Sie können eine Antwort hinzufügen, die das beabsichtigte Datum gegenprüft, indem Sie den erkannten alternativen Wert verwenden. In diesem Fall ist das alternative Datum das Datum des vorherigen Montags. Meinten Sie @sys-date oder @sys-date.alternative?
true Reagiert auf alle anderen Anforderungen von Informationen zu Öffnungszeiten. Wir haben montags bis samstags von 9 bis 17 Uhr geöffnet.