Entités système
Découvrez les entités système fournies par IBM que vous pouvez utiliser immédiatement. Ces entités utilitaires intégrées aident votre assistant à reconnaître les termes et les références couramment utilisés par les clients dans les conversations, tels que les chiffres et les dates.
Pour plus d'informations sur l'ajout d'entités système à votre dialogue, voir Création d'entités.
Entité @sys-currency
L'entité système @sys-currency détecte des mentions de valeurs de devise dans les entrées utilisateur. La devise peut être exprimée par un symbole monétaire ou des termes spécifiques aux devises. Dans les deux cas, une valeur numérique
est renvoyée.
Formats reconnus
- 20 cents
- Five dollars
- 10 $
Attributs
.literal: expression exacte dans une entrée qui est interprétée comme mention de devise..numeric_value: valeur numérique canonique sous la forme d'un entier ou d'un double dans des unités de base..location: répertorie les valeurs d'élément d'index des première et dernière lettres de la chaîne de texte pour la phrase qui est interprétée comme mention de devise..unit: Unité de base de la monnaie qui est spécifiée sous la forme d'un code monétaire ISO à 3 lettres. Par exemple,USDouEUR.
Le tableau ci-après présente les informations capturées par chaque attribut à partir de l'entrée utilisateur.
| Attribut | Type | Exemple (entrée = twenty dollars) |
Exemple (entrée = $1,234.56) |
|---|---|---|---|
| @sys-currency | chaîne | 20 |
1234.56 |
| @sys-currency.literal | chaîne | twenty dollars |
$1,234.56 |
| @sys-currency.numeric_value | number | 20 |
1234.56 |
| @sys-currency.location | array | [0,14] |
[0,9] |
| @sys-currency.unit | chaîne | USD |
USD |
Pour l'entrée veinte euro ( twenty euro en espagnol) ou €1.234,56, @sys-currency renvoie ces valeurs :
| Attribut | Type | L'entrée est veinte euro |
L'entrée est €1.234,56 |
|---|---|---|---|
| @sys-currency | chaîne | 20 | 1234.56 |
| @sys-currency.literal | chaîne | veinte euro | 1.234€, 56 |
| @sys-currency.numeric_value | number | 20 | 1234.56 |
| @sys-currency.location | array | [0,11] | [0,9] |
| @sys-currency.unit | chaîne | EUR | EUR |
Des résultats équivalents sont renvoyés pour d'autres langues et devises nationales prises en charge.
Conseils relatifs à l'utilisation de @sys-currency
Si vous utilisez l'entité @sys-currency comme condition de noeud et que l'utilisateur spécifie $0 comme valeur, la valeur est correctement reconnue en tant que devise, mais la condition renvoie le nombre zéro et non
la devise zéro. Par conséquent, la valeur null dans la condition est évaluée à false et le noeud n'est pas traité. Pour vérifier les valeurs de devise d'une manière qui gère correctement les zéros, utilisez à la place l'expression
@sys-currency OR @sys-currency == 0 dans la condition de noeud.
Pour plus d'informations sur les devises reconnues par langue, voir Support de devise.
@sys-date
L'entité système @sys-date détecte des mentions de dates dans les entrées utilisateur. La valeur de date est stockée sous la forme d'une chaîne au format yyyy-MM-dd. Par exemple, la mention May 8 est stockée
sous la forme "2020-05-08". Le système complète les éléments manquants d'une date (par exemple, l'année pour "May 8") avec les valeurs de date en cours.
Si vous saisissez une date non valide dans l'entrée utilisateur, l'entité système @sys-date ne reconnaît pas la date et affiche une erreur Invalid date.
Si vous sélectionnez l'anglais comme langue, le système utilise l'anglais américain ( en-us ) comme paramètre local. Pour l'environnement local anglais américain uniquement, le format de la date est MM/DD/YYYY. Le format
de la date est remplacé par DD/MM/YYYY uniquement si les deux premiers nombres sont supérieurs à 12. La valeur stockée a le format yyyy-MM-dd.
Formats reconnus
- Vendredi
- aujourd'hui
- May 8
Attributs
.alternatives: permet de sauvegarder les valeurs de date de remplacement lorsque l'entrée est ouverte pour interprétation. En général, la date ultérieure est renvoyée en tant que valeur@sys-date. En cas d'ambiguïté, la date passée est sauvegardée en tant que date de remplacement. Par exemple, pour l'entréein January, une date ultérieure est renvoyée. Toutefois, s'il s'agit de Février (le mois de janvier est passé pour cette année), le mois de janvier dernier est également renvoyé comme date de remplacement. Une date de remplacement est également fournie pour les jours de la semaine lorsque le jour de la semaine est spécifié sans modificateur. Par exemple, pour l'entréeAre you open Wednesday?, la date ultérieure est stockée, mais une date de remplacement avec la date du mercredi précédent est également renvoyée. Des dates de remplacement sont créées pour des phrases contenant des modificateurs, tels quenext,thisoulast, qui peuvent avoir différentes significations dans différents environnements locaux. Le service watsonx Assistant interprète les éléments de datelastetnextcomme un renvoi au jour suivant ou précédent le plus proche du jour référencé, ce qui peut correspondre à la même semaine ou à la semaine précédente. Pour certains modificateurs, une date de remplacement est créée ou non selon le jour de la semaine. Par exemple, l'entrée peut contenirthis Wednesday. S'il s'agit d'un lundi, la date ultérieure est stockée et aucune date de remplacement n'est créée. Toutefois, s'il s'agit d'un mercredi, la date est considérée comme étant le mercredi de la semaine à venir, mais la date du jour est stockée comme une date de remplacement. Chaque date de remplacement est sauvegardée en tant qu'objet qui contient une valeur et une confiance pour chaque date de remplacement. Les objets de date de remplacement sont stockés dans un tableau JSON. Pour obtenir une valeur alternative, utilisez la syntaxe suivante :@sys-date.alternative..calendar_type: Spécifie le type de calendrier pour le fuseau horaire utilisé.GREGORIANest le seul type pris en charge..datetime_link: voir Mentions de date et d'heure..day: méthode d'auxiliaire qui renvoie le jour dans la date..day_of_week: renvoie le jour de la semaine dans la date sous la forme d'une chaîne en minuscule..festival: reconnaît les noms de fête spécifiques à l'environnement local et peut renvoyer la date du jour férié à venir, tel queThanksgiving,ChristmasetHalloween. Utilisez toutes les lettres minuscules si vous devez indiquer un nom de congé, dans une condition, par exemple (@sys-date.festival == 'thanksgiving'). Pour plus d'informations sur les congés reconnus, voir Festivals..granularity: reconnaît les mentions de délais. Les options sontday,weekend,week,fortnight,month,quarteretyear..interpretation: L'objet renvoyé par votre assistant, qui contient de nouveaux champs qui augmentent la précision du classificateur d'entités du système. Vous pouvez omettreinterpretationdans l'expression que vous utilisez pour faire référence à ses zones. Par exemple, vous pouvez accéder à la valeur du champfestivaldans l'objet d'interprétation en utilisant la syntaxe abrégée<? @sys-date.festival ?>..literal: expression exacte dans une entrée qui est interprétée comme date..location: répertorie les valeurs d'élément d'index des première et dernière lettres de la chaîne de texte pour la phrase qui est interprétée comme date..month: méthode d'auxiliaire qui renvoie le mois dans la date..range_link: si présent, indique que l'entrée de l'utilisateur contient une plage de dates. Les valeurs d'index de début et de fin de la chaîne incluant la plage de dates sont sauvegardées dans le nom du lien. Des informations supplémentaires sont fournies, notamment le rôle joué par chaque entité@sys-datedans la relation de plage. Par exemple, la date de début a un type de rôledate_fromet la date de fin a un type de rôledate_to. Pour vérifier une valeur de rôle, vous pouvez utiliser la syntaxe@sys-date.role?.type == 'date_from'. Si l'entrée utilisateur implique une plage, mais qu'une seule date est spécifiée, la propriétérange_linkn'est pas renvoyée, mais un type de rôle est renvoyé. Par exemple, si l'utilisateur demandeHave you been open since yesterday. La date d'hier est reconnue comme mention@sys-dateet un rôle de typedate_fromest renvoyé pour cette date. Un élémentrange_modifierqui identifie le mot dans l'entrée qui déclenche l'identification d'une plage est également renvoyé. Dans cet exemple, le modificateur estsince..relative_{timeframe}: reconnaît et capture des mentions de valeurs de date relatives dans l'entrée de l'utilisateur. Renvoie un nombre correspondant au nombre d'unités entre maintenant et la date spécifiée. Les unités de {time frame} peuvent êtreyear,month,week,weekend, ouday..specific_{timeframe}: reconnaît et capture des mentions d'unités de date spécifiques dans l'entrée de l'utilisateur. Les unités de {time frame} peuvent êtreyear,quarter,month,day, ouday_of_week..year: méthode d'auxiliaire qui renvoie l'année dans la date.
Le tableau ci-après présente les informations capturées par chaque attribut à partir de l'entrée utilisateur.
| Attribut | Type | Example |
|---|---|---|
| @sys-date | chaîne | Si l'entrée est May 13, 2020, 2020-05-13 est renvoyé. |
| @sys-date.alternatives | array | Par exemple, si la date du jour est 10 March 2019 et que l'utilisateur saisit on March 1, la date du 1st mars de l'année prochaine est enregistrée sous la forme @sys-date ( 2020-03-01 ). Cependant, l'utilisateur pourrait vouloir dire 1st mars 2019. Le système enregistre également la date de cette année (2019-03-01) en tant que valeur de date de remplacement. Autre exemple, si aujourd'hui est mardi et
qu'un utilisateur entre this Tuesday ou next Tuesday, @sys-date est défini sur la date du mardi de la semaine prochaine et aucune date de remplacement n'est créée. |
| @sys-date.calendar_type | chaîne | Pour toutes les mentions de date, GREGORIAN est renvoyé. |
| @sys-date.datetime_link | chaîne | N/A |
| @sys-date.day | chaîne | Si l'entrée est 13 May 2020, 13 est renvoyé. |
| @sys-date.day_of_week | chaîne | Si l'entrée est 13 May 2020 et qu'il s'agit d'un mercredi, wednesday est renvoyé. |
| @sys-date.festival | chaîne | Si l'entrée contient Thanksgiving Day, 2020-11-26 est renvoyé. |
| @sys-date.granularity | chaîne | Si l'entrée mentionne next year, year est renvoyé. |
| @sys-date.literal | chaîne | Si l'entrée est I plan to leave on Saturday., on Saturday est renvoyé. |
| @sys-date.location | array | Si l'entrée est My vacation starts tomorrow., [19, 27] est renvoyé. |
| @sys-date.month | chaîne | Si l'entrée est 13 May 2020, 5 est renvoyé. |
| @sys-date.range_link | chaîne | Par exemple, l'entrée peut être I will travel from March 15 to March 22. Chaque entité @sys-date détectée comporte une propriété range_link dans sa sortie, date_range_14_39, dans laquelle
l'emplacement du texte de plage de dates est [14,39]. La date de début (2020-05-15) a pour type de rôle date_from. La date de fin (2020-05-22) a pour type de rôle date_to. |
| @sys-date.relative_{timeframe} | number | Si l'entrée est two weeks ago, relative_week = -2 est renvoyé. Si l'entrée est this weekend, relative_weekend = 0 est renvoyé. Si l'entrée est today, relative_day = 0 est renvoyé. |
| @sys-date.specific_{timeframe} | chaîne | Pour 2020, specific_year = 2020 est renvoyé. Pour Q2 2020 ou second quarter 2020, specific_quarter = 2 est renvoyé. Pour March, specific_month = 3 est renvoyé. Pour Monday, specific_day_of_week = monday est renvoyé. Pour May 3rd, specific_day = 3 est renvoyé. |
| @sys-date.year | chaîne | Si l'entrée est 13 May 2020, 2020 est renvoyé. |
@sys-time
L'entité système @sys-time détecte des mentions d'heures dans les entrées utilisateur. L'heure qui est spécifiée dans l'entrée utilisateur est renvoyée au format HH:mm:ss. Par exemple, "13:00:00" for 1pm.
Formats reconnus
- 2pm
- at 4
- 15:30
Attributs
.alternatives: Capture des heures autres que celle enregistrée comme valeur@sys-timeque l'utilisateur pourrait vouloir dire lorsque l'heure n'est pas clairement indiquée. Les valeurs de remplacement sont sauvegardées en tant qu'objet qui contient une valeur et une confiance pour chaque heure de remplacement et qui est stocké dans un tableau JSON. Pour obtenir une valeur de remplacement, utilisez la syntaxe suivante :@sys-time.alternative..calendar_type: Spécifie le type de calendrier pour le fuseau horaire utilisé.GREGORIANest le seul type pris en charge..granularity: reconnaît les mentions de délais. Les options sonthour,minute,secondetinstant..hour: méthode d'auxiliaire qui renvoie l'heure spécifiée dans l'horodatage sous la forme d'une valeur numérique..interpretation: L'objet renvoyé par votre assistant, qui contient de nouveaux champs qui augmentent la précision du classificateur d'entités du système. Vous pouvez omettreinterpretationdans l'expression que vous utilisez pour faire référence à ses zones. Par exemple, vous pouvez accéder à la valeur du champgranularitydans l'objet d'interprétation en utilisant la syntaxe abrégée<? @sys-time.granularity ?>..literal: Phrase exacte dans l'entrée qui est interprétée comme étant l'heure..location: répertorie les valeurs d'élément d'index des première et dernière lettres de la chaîne de texte pour la phrase qui est interprétée comme mention d'heure..minute: méthode d'auxiliaire qui renvoie la valeur de minute spécifiée dans l'horodatage dans l'heure..part_of_day: reconnaît les termes qui représentent le moment de la journée, par exemple,morning,afternoon,evening,nightounow. Définit également une plage horaire pour chaque partie de la journée. La réponse contient deux valeurs@sys-time: une pour le début et une pour la fin de la plage horaire. Le tableau des entités contient l'objetrange_linkavec les types de rôletime-fromettime-to. Les plages temporelles pour différentes parties de la journée peuvent varier d'un environnement local à l'autre. Pour l'anglais américain, le matin correspond à6:00:00to12:00:00. L'après-midi dure de12:00:00à18:00:00. Le soir dure de18:00:00à22:00:00. La nuit dure de22:00:00à23:59:59. La nuit prend fin juste avant minuit pour ne pas empiéter sur le jour suivant, qui est mesuré par@sys-date..range_link: si cette entité apparaît, cela indique que l'entrée utilisateur contient une plage temporelle. Les valeurs d'index de début et de fin de la chaîne incluant l'intervalle de temps sont sauvegardées dans le nom du lien. Des informations supplémentaires sont fournies, notamment le rôle joué par chaque entité@sys-timedans la relation de plage. Par exemple, l'heure de début a un type de rôletime_fromet l'heure de fin a un type de rôletime_to. Pour vérifier une valeur de rôle, vous pouvez utiliser la syntaxe@sys-time.role?.type == 'time_from'. Si l'entrée utilisateur implique une plage, mais qu'une seule heure est spécifiée, la propriétérange_linkn'est pas renvoyée, mais un type de rôle est renvoyé. Un élémentrange_modifierqui identifie le mot dans l'entrée qui déclenche l'identification d'une plage est également renvoyé..relative_{timeframe}: reconnaît les mentions relatives d'heure et renvoie un nombre correspondant au nombre d'unités entre maintenant et l'heure spécifiée. Les unités {timeframe} peuvent êtrehour,minuteousecond..second: méthode d'auxiliaire qui renvoie la seconde valeur spécifiée dans l'heure..specific_{timeframe}: reconnaît et capture des mentions d'unités de temps spécifiques dans l'entrée de l'utilisateur. Les unités {timeframe} peuvent êtrehour,minuteousecond.
Le tableau ci-après présente les informations capturées par chaque attribut à partir de l'entrée utilisateur.
| Attribut | Type | Example |
|---|---|---|
| @sys-time | chaîne | Pour l'entrée 6:30 PM, 18:30:00 est renvoyé. |
| @sys-time.alternatives | array | Si un utilisateur dit The meeting is at 5, le système calcule l'heure sous la forme 5:00:00 ou 5 AM et la sauvegarde en tant que @sys-time. Cependant, l'utilisateur peut vouloir dire
17:00:00 ou 5 PM. Le système sauvegarde également la dernière heure en tant que valeur d'heure de remplacement. Si l'utilisateur entre The meeting is at 5pm, @sys-time prend la valeur
17:00:00, et aucune valeur de remplacement n'est créée car il n'y a pas de confusion entre 5 heures et 17 heures. |
| @sys-time.calendar_type | chaîne | Pour toutes les mentions d'heure, GREGORIAN est renvoyé. |
| @sys-time.granularity | chaîne | Si l'entrée est now, instant est renvoyé. Pour 3 o'clock ou noon, hour est renvoyé. Pour 17:00:00, second est renvoyé. |
| @sys-time.hour | number | Si l'entrée contient 5:30:10 PM, 17 est renvoyé pour représenter 17 heures. |
| @sys-time.literal | chaîne | Pour l'entrée The store closes at 8PM, at 8PM est renvoyé. |
| @sys-time.location | array | Pour l'entrée The store closes at 8PM, [17, 23] est renvoyé. |
| @sys-time.minute | number | Si l'entrée mentionne l'heure 5:30:10 PM, 30 est renvoyé. Si aucune minute n'est spécifiée, cette valeur auxiliaire renvoie 0. |
| @sys-time.part_of_day | chaîne | Si l'entrée est this morning, deux valeurs @sys-time sont renvoyées, 6:00:00 et 12:00:00. L'objet range_link avec les types de rôle time-from et time-to sont
également renvoyés. |
| @sys-time.range_link | chaîne | Pour l'entrée Are you open from 9AM to 11AM, deux entités @sys-time sont détectées. Chaque entité @sys-time qui est détectée comporte une propriété range_link dans sa sortie. Si une
plage est impliquée mais qu'une seule valeur temporelle est fournie, une seule valeur @sys-time est renvoyée. Pour l'entrée Are you open until 9PM, 9PM est reconnu comme la mention @sys-time et
un rôle de type time_to est renvoyé. Dans cet exemple, range_modifier est until. |
| @sys-time.relative_{timeframe} | number | Pour 5 hours ago, relative_hour = -5 est renvoyé. Pour in two minutes, relative_minute = 2 est renvoyé. Pour in a second, relative_second = 1 est renvoyé. |
| @sys-time.second | number | Si l'entrée mentionne l'heure 5:30:10 PM, 10 est renvoyé. Si aucune valeur seconde n'est spécifiée, cette valeur auxiliaire renvoie 0. |
| @sys-time.specific_{timeframe} | chaîne | Pour at 5 o'clock, specific_hour = 5 est renvoyé. Pour at 2:30, specific_minute = 30 est renvoyé. Pour 23:30:22, specific_second = 22 est renvoyé. |
Mentions de date et d'heure
Certaines entrées utilisateur contiennent des informations qui incluent des informations de date et d'heure. Votre assistant capture les deux valeurs et les sauvegarde sous la forme de deux mentions d'entité distinctes, une mention @sys-date et une mention @sys-time.
La relation entre les valeurs de date et d'heure est établie de deux manières :
- Chaque entité qui participe à la relation contient le même attribut
datetime_link. - La chaîne littérale qui couvre la mention de date et d'heure complète, lorsqu'elles sont mentionnées ensemble dans une entrée, est la même pour les deux entités. Les informations d'emplacement sont ajoutées au nom
datetime_link.
Formats reconnus
- maintenant
- two hours from now
- on Monday at 4pm
Attributs
.datetime_link: Si elle est présente, elle indique que l'entrée de l'utilisateur mentionne une date et une heure ensemble, ce qui implique que la date et l'heure sont liées l'une à l'autre. Les valeurs d'index de début et de fin de la chaîne incluant la date et l'heure sont enregistrées dans le nom du lien.
Le tableau ci-après présente les informations capturées par chaque attribut à partir de l'entrée utilisateur.
| Attribut | Type | Example |
|---|---|---|
@sys-date.datetime_link et @sys-time.datetime_link |
chaîne | Si l'entrée est Are you open today at 5?, alors today est reconnu comme une mention de date ( 2020-05-21 ) à l'emplacement [13,18] et at 5 est reconnu comme une mention
de temps ( 05:00:00 ) à l'emplacement [19,23]. Une valeur d'emplacement [13,23], qui couvre à la fois les mentions de date et d'heure, est ajoutée au lien datetime_link résultant.
Elle se nomme datetime_link_13_23 et est incluse dans le résultat des entités @sys-date et @sys-time qui participent à la relation. |
Fuseaux horaires
Les mentions de date ou d'heure relatives à l'heure actuelle sont résolues par rapport à un fuseau horaire choisi. Par défaut, le fuseau horaire est l'heure GMT. Ainsi, les clients d'API REST situés dans des fuseaux horaires différents obtiennent
l'heure UTC actuelle lorsque now est mentionné dans l'entrée.
Le client d'API REST peut éventuellement ajouter le fuseau horaire local sous la forme de la variable contextuelle $timezone. Cette variable contextuelle doit être envoyée avec chaque demande du client. Par exemple, la valeur
de $timezone peut être America/Los_Angeles, EST ou UTC. Pour obtenir la liste complète des fuseaux horaires pris en charge, reportez-vous à la rubrique Fuseaux horaires pris en charge.
Lorsque la variable $timezone est fournie, les valeurs des mentions relatives @sys-date et @sys-time sont calculées en fonction du fuseau horaire du client et non du temps universel coordonné.
Pour plus d'informations sur le traitement des valeurs de date et d'heure, reportez-vous à la référence sur la méthode Date et heure.
Entité @sys-number
L'entité système @sys-number détecte des mentions de nombres dans les entrées utilisateur. Le nombre peut être composé de chiffres ou de mots. Dans les deux cas, une valeur numérique est renvoyée.
Formats reconnus
- 21
- twenty one
- 3.13
Attributs
.literal: expression exacte dans une entrée qui est interprétée comme nombre..location: répertorie les valeurs d'élément d'index des première et dernière lettres de la chaîne de texte qui est interprétée comme nombre..numeric_value: valeur numérique canonique sous la forme d'un entier ou d'un double..range_link: si cette entité apparaît, cela indique que l'entrée utilisateur contient une plage numérique. La valeur d'emplacement du texte qui spécifie la plage est ajoutée au nom de lien. Des informations supplémentaires sont fournies, notamment le rôle joué par chaque entité@sys-numberdans la relation de plage. Par exemple, le numéro de début a un type de rôlenumber_fromet le numéro de fin a un type de rôlenumber_to. Pour vérifier une valeur de rôle, vous pouvez utiliser la syntaxe@sys-number.role?.type == 'number_from'.
Le tableau ci-après présente les informations capturées par chaque attribut à partir de l'entrée utilisateur.
| Attribut | Type | Example |
|---|---|---|
| @sys-nombre | chaîne | Si l'entrée est twenty, 20 est renvoyé. Si l'entrée est 1,234.56, 1234.56 est renvoyé. |
| @sys-number.literal | chaîne | Si l'entrée est twenty, twenty est renvoyé. Si l'entrée est 1,234.56, 1,234.56 est renvoyé. |
| @sys-number.location | array | Si l'entrée est twenty, renvoie [0,6]. Si l'entrée est 1,234.56, renvoie [0,8] |
| @sys-number.numeric_value | number | Si l'entrée est twenty, 20 est renvoyé. Si l'entrée est 1,234.56, 1234.56 est renvoyé. |
| @sys-number.range_link | chaîne | Si l'entrée est I'm interested in 5 to 7., chacune des deux entités système @sys-number détectées comporte une propriété range_link number_range_18_24 dans sa sortie. La première entité
@sys-number (5) a un type de rôle number_from. La dernière entité @sys-number (7) a un type de rôle number_to. |
Conseils relatifs à l'utilisation de @sys-number
-
Si vous utilisez l'entité @sys-number en tant que condition de noeud et que l'utilisateur spécifie zéro comme valeur, la valeur 0 est reconnue comme un nombre. Toutefois, la valeur 0 est interprétée en tant que valeur
nullpour la condition, ce qui entraîne le non-traitement du noeud. Pour vérifier les nombres d'une manière qui gère correctement les zéros, utilisez également l'expression@sys-number == 0dans la condition de noeud. L'expression complète à utiliser est@sys-number OR @sys-number == 0. -
Si vous utilisez @sys-number pour comparer des valeurs numériques dans une condition, prenez soin d'inclure séparément une recherche de la présence d'un nombre proprement dit. Si aucun nombre n'est trouvé, @sys-number renvoie la valeur null. Votre comparaison peut renvoyer la valeur true même en l'absence de nombres.
Par exemple, n'utilisez pas
@sys-number<4uniquement car si aucun nombre n'est trouvé,@sys-numbera pour résultat la valeur null. La valeur null étant inférieure à 4, la condition renvoie la valeur true même si aucun nombre n'est présent.Utilisez
(@sys-number OR @sys-number == 0) AND @sys-number < 4à la place. Si aucun nombre n'est présent, la première condition renvoie la valeur false. Par conséquent, la condition entière renvoie la valeur false.
Pour plus d'informations sur le traitement des valeurs numériques, reportez-vous aux informations de référence sur la méthode des nombres.
Entité @sys-percentage
L'entité système @sys-percentage détecte des mentions de pourcentages dans l'entrée utilisateur. Le pourcentage peut être exprimé dans un énoncé par le symbole de pourcentage ou écrit à l'aide du mot percent. Dans les
deux cas, une valeur numérique est renvoyée.
Formats reconnus
- 15 %
- 10 percent
Attributs
.literal: expression exacte dans une entrée qui est interprétée comme pourcentage..location: répertorie les valeurs d'élément d'index des première et dernière lettres de la chaîne de texte qui est interprétée comme mention de pourcentage..numeric_value: valeur numérique canonique sous la forme d'un entier ou d'un double..range_link: si cette entité apparaît, cela indique que l'entrée utilisateur contient une plage, par exemple,from 2 to 3 percent. La valeur d'emplacement du texte qui spécifie la plage est ajoutée au nom de lien. Des informations supplémentaires sont fournies, notamment le rôle joué par chaque entité@sys-percentagedans la relation de plage. Par exemple, le numéro de début a un type de rôlenumber_fromet le numéro de fin a un type de rôlenumber_to. Pour vérifier une valeur de rôle, vous pouvez utiliser la syntaxe@sys-percentage.role?.type == 'number_from'.
Le tableau ci-après présente les informations capturées par chaque attribut à partir de l'entrée utilisateur.
| Attribut | Type | Example |
|---|---|---|
| @sys-pourcentage | chaîne | Si l'entrée contient 1,234.56%, 1234.56 est renvoyé. |
| @sys-percentage.literal | chaîne | Si l'entrée contient 50 percent, 50 percent est renvoyé. |
| @sys-percentage.location | array | Si l'entrée contient from 2 to 3 percent, [0,19] est renvoyé. |
| @sys-percentage.numeric_value | number | Si l'entrée contient 50 percent, 50 est renvoyé. |
| @sys-percentage.range_link | chaîne | Si l'entrée contient from 2 to 3 percent, number_range_0_19 est renvoyé. |
Conseils relatifs à l'utilisation de @sys-percentage
-
Si vous utilisez l'entité @sys-pourcentage en tant que condition de noeud et que l'utilisateur spécifie
0%comme valeur, la valeur est reconnue comme un pourcentage correctement, mais la condition est évaluée au nombre zéro non pas le pourcentage 0%. Par conséquent, la valeurnulldans la condition est évaluée à false et le noeud n'est pas traité. Pour vérifier les pourcentages d'une manière qui gère correctement les pourcentages zéro, utilisez à la place l'expression@sys-percentage OR @sys-percentage == 0dans la condition de noeud. -
Si vous entrez une valeur telle que
1-2%, les valeurs1%et2%sont renvoyées sous la forme d'entités système.
Utilisation d'entités système dans les conditions
Dans un noeud qui dépend de l'intention #Customer_Care_Store_Hours, vous pouvez ajouter des réponses conditionnelles qui utilisent de nouvelles propriétés d'entité système pour fournir des réponses légèrement différentes sur les
heures d'ouverture du magasin, en fonction de la demande de l'utilisateur.
Vous ne souhaitez probablement pas utiliser toutes ces réponses conditionnelles dans un dialogue réel ; elles sont décrites ici simplement pour illustrer ce qui est possible.
| Syntaxe de condition de réponse conditionnelle | Description | Exemple de texte de réponse |
|---|---|---|
@sys-date.festival == 'thanksgiving' |
Vérifie si le client demande les horaires d'ouverture le jour de Thanksgiving en particulier. | Nous distribuons des repas gratuits aux personnes dans le besoin le jour de Thanksgiving. |
@sys-date.festival |
Vérifie si le client demande des horaires d'ouverture pour un autre jour férié. | Nous sommes fermés le jour de Noël, le 4 juillet et le jour du Président. Pour les autres jours fériés, nous sommes ouverts de 10h à 17h. |
@sys-time.part_of_day == 'night' |
Vérifie si l'utilisateur inclut des termes qui mentionnent la nuit comme moment de la journée dans l'entrée. | Nous ne sommes pas ouverts tard ; nous fermons à 21 heures la plupart des jours. |
@sys-date.datetime_link && input.text.contains('today') && now().sameOrAfter(@sys-time) |
Vérifie si l'entrée contient une expression telle que today at 8. Il vérifie également si la @sys-time détectée est antérieure à l'heure actuelle. Vous pouvez ajouter une variable de contexte à la réponse conditionnelle
qui crée une variable $new_time avec la valeur <? @sys-time.plusHours(12) ?>. Vous pouvez utiliser cette approche pour créer une variable de date qui capture l'heure la plus probable définie par un utilisateur
qui, à midi, demande à Are you open today at 8. Le système suppose que l'utilisateur veut dire 8AM au lieu de 8PM. |
Vous voulez dire aujourd'hui à $new_time, n'est-ce pas ? |
@sys-time.range_link && entities[0].role?.type == 'time_from' && entities[1].role?.type == 'time_to' |
Vérifie si l'entrée contient une plage de temps. La condition vérifie également que la première entité du système @sys-time figurant dans le tableau des entités est l'heure de début et que la seconde est l'heure de fin avant
de les inclure dans la réponse. |
Vous voulez savoir si nous sommes ouverts entre <? entities[0] ?> et <? entities[1] ?>, est-ce correct ? |
@sys-time && entities.size() < 2 && entities[0].role?.type == 'time_to' |
Vérifie si l'entrée contient une mention @sys-time qui comporte un type de rôle time_to. Si l'entrée utilisateur correspond à cette condition, elle suggère que l'utilisateur a spécifié l'heure de fin d'une plage
de temps ouverte. Par exemple, la réponse est déclenchée par l'entrée Are you open until 9pm?. Cette entrée concorde, car elle n'identifie qu'une seule heure dans une plage temporelle, et la mention a le rôle time_to. |
Voulez-vous dire à partir de maintenant (<? now().reformatDateTime('h:mm a') ?>) jusqu'à <? @sys-time.reformatDateTime('h:mm a') ?> ? |
@sys-date.day_of_week == 'sunday' |
Vérifie si une date spécifique que demande l'utilisateur est un dimanche. | Nous sommes fermés le dimanche. |
@sys-date.specific_day_of_week == 'monday' && @sys-date.alternative |
Vérifie si l'utilisateur a mentionné le jour de la semaine Monday dans sa requête. Par exemple, Are you open Monday. La condition vérifie également si des dates de remplacement ont été stockées. Des dates de remplacement
sont créées lorsque votre assistant n'est pas tout à fait sûr du lundi demandé par l'utilisateur, il stocke donc les dates des autres lundis également. Lorsqu'un utilisateur spécifie un jour de la semaine, votre assistant part du principe
que l'utilisateur signifie l'occurrence future du jour (le lundi à venir). Vous pouvez ajouter une réponse qui vérifie à nouveau la date demandée, en utilisant la valeur de remplacement détectée. Dans ce cas, la date de remplacement
est celle du lundi précédent. |
Voulez-vous dire @sys-date ou @sys-date.alternative ? |
true |
Répond à toute autre demande d'informations sur les horaires d'ouverture du magasin. | Nous sommes ouverts de 9 heures à 21 heures du lundi au samedi. |