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:USDoderEUR.
In der folgenden Tabelle sind die Informationen aufgelistet, die jedes Attribut aus der Benutzereingabe erfasst.
| 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:
| 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-datezurückgegeben. Bei bestehenden Mehrdeutigkeiten wird das vergangene Datum als alternatives Datum gespeichert. Beispiel: Für die Eingabein Januarywird 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 EingabeAre 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 wienext(nächste/r/s),this(diese/r/s) oderlast(letze/r/s) enthalten, die in unterschiedlichen Ländereinstellungen verschiedene Bedeutungen haben können. Der Service 'watsonx Assistant' behandelt Datumsangaben mitlastundnextso, 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 Angabethis 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.GREGORIANist 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 wieThanksgiving,ChristmasundHalloweenzurü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 sindday(Tag),weekend(Wochenende),week(Woche),fortnight(vierzehn Tage),month(Monat),quarter(Quartal) undyear(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önneninterpretationin dem Ausdruck weglassen, mit dem Sie auf diese Felder Bezug nehmen. Sie können beispielsweise auf den Wert des Feldesfestivalim 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-datein der Bereichsbeziehung spielt. Das Anfangsdatum hat zum Beispiel den Rollentypdate_fromund das Enddatum den Rollentypdate_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 Eigenschaftrange_linknicht zurückgegeben, sondern es wird nur ein Rollentyp zurückgegeben. Zum Beispiel, wenn der BenutzerHave you been open since yesterdayfragt. Das gestrige Datum wird als Erwähnung@sys-dateerkannt und der Rollentypdate_fromwird 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 Modifikatorsince..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önnenyear,month,week,weekendoderdaysein..specific_{timeframe}: Erkennt und erfasst Erwähnungen spezifischer Datumseinheiten in der Eingabe des Benutzers. Die Einheiten {time frame} könnenyear,quarter,month,dayoderday_of_weeksein..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.
| 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-timegespeichert 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.GREGORIANist der einzige unterstützte Typ..granularity: Erkennt Erwähnungen von Zeitrahmen. Optionen sindhour,minute,secondundinstant..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önneninterpretationin dem Ausdruck weglassen, mit dem Sie auf diese Felder Bezug nehmen. Sie können beispielsweise auf den Wert des Feldesgranularityim 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) odernow(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 Objektrange_linkmit den Rollentypentime-fromundtime-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 Vormittag6:00:00bis12:00:00. Der Nachmittag ist12:00:00bis18:00:00. Der Abend ist18:00:00bis22:00:00. Die Nacht ist22:00:00bis23:59:59. Die Nacht endet kurz vor Mitternacht, da sie sich andernfalls mit einem neuen Tag überschneiden würde, der durch@sys-dategemessen 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-timein der Bereichsbeziehung spielt. Die Anfangszeit hat zum Beispiel den Rollentyptime_fromund die Endzahl den Rollentyptime_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 Eigenschaftrange_linknicht 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önnenhour(Stunde),minute(Minute) odersecond(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önnenhour(Stunde),minute(Minute) odersecond(Sekunde) angegeben werden.
In der folgenden Tabelle sind die Informationen aufgelistet, die jedes Attribut aus der Benutzereingabe erfasst.
| 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_linkangefü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.
| 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-numberin der Bereichsbeziehung spielt. Die Anfangszahl hat zum Beispiel den Rollentypnumber_fromund die Endzahl den Rollentypnumber_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.
| 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
nullfü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 == 0verwenden. 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<4allein, da@sys-numbernull 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-percentagein der Bereichsbeziehung spielt, bereitgestellt. Die Anfangszahl hat zum Beispiel den Rollentypnumber_fromund die Endzahl den Rollentypnumber_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.
| 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 Wertnullin 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 Werte1%und2%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.
| 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. |