Entidades del sistema
Obtenga más información sobre las entidades del sistema que IBM incluye de serie. Estas entidades de programa de utilidad incorporadas ayudan a su asistente a reconocer términos y referencias que son utilizados comúnmente por los clientes en conversaciones, como números y fechas.
Para obtener información sobre cómo añadir entidades de sistema a su diálogo, consulte Creación de entidades.
Entidad @sys-currency
La entidad del sistema @sys-currency detecta menciones de valores de moneda en la entrada de usuario. La moneda puede estar expresada con un símbolo de moneda o con términos específicos de moneda. En cualquiera de los casos, se
devuelve un número.
Formatos reconocidos
- 20 céntimos
- Cinco dólares
- 10 USD
Atributos
.literal: frase exacta en la entrada que se interpreta como una mención de moneda..numeric_value: valor numérico canónico como entero o doble, en unidades base..location: lista los valores de elementos de índice de la primera y última letras de la serie de texto para la frase que se interpreta como una mención de moneda..unit: Unidad monetaria de base que se especifica como un código monetario ISO de 3 letras. Por ejemplo,USDoEUR.
En la tabla siguiente se muestra la información que cada atributo captura de la entrada de usuario.
| Atributo | Tipo | Ejemplo (entrada = twenty dollars (veinte dólares)) |
Ejemplo (entrada = $1,234.56 (veinte dólares)) |
|---|---|---|---|
| @sys-currency | serie | 20 |
1234.56 |
| @sys-currency.literal | serie | twenty dollars |
$1,234.56 |
| @sys-currency.numeric_value | number | 20 |
1234.56 |
| @sys-currency.location | matriz | [0,14] |
[0,9] |
| @sys-currency.unit | serie | USD |
USD |
Para la entrada veinte euro ( twenty euro en español) o €1.234,56, @sys-currency devuelve estos valores:
| Atributo | Tipo | La entrada es veinte euro |
La entrada es €1.234,56 |
|---|---|---|---|
| @sys-currency | serie | 20 | 1234.56 |
| @sys-currency.literal | serie | veinte euros | 1.234€, 56 |
| @sys-currency.numeric_value | number | 20 | 1234.56 |
| @sys-currency.location | matriz | [0,11] | [0,9] |
| @sys-currency.unit | serie | EUR | EUR |
Se devuelven resultados equivalentes para otros idiomas y monedas nacionales soportados.
Consejos sobre el uso de @sys-currency
Si utiliza la entidad @sys-currency como condición de nodo y el usuario especifica $0 como valor, el valor se reconoce como moneda correctamente, pero la condición se evalúa en el número cero, no la moneda cero. Como
resultado, el null en la condición se evalúa como falso y el nodo no se procesa. Para comprobar los valores de moneda de forma que se haga un tratamiento correcto de los ceros, utilice en su lugar la expresión @sys-currency OR @sys-currency == 0 en la condición del nodo.
Para obtener más información sobre las monedas reconocidas por cada idioma, consulte Soporte de monedas.
@sys-date
La entidad del sistema @sys-date detecta menciones de fechas en la entrada de usuario. El valor de fecha se almacena como una serie con el formato yyyy-MM-dd. Por ejemplo, la mención May 8 se almacena como
"2020-05-08". El sistema cumplimenta los elementos que faltan de una fecha (como el año para "May 8") con valores de la fecha actual.
Si introduce una fecha no válida en la entrada del usuario, la entidad del sistema @sys-date no reconoce la fecha y muestra y Invalid date error.
Si selecciona Inglés como idioma, el sistema utiliza Inglés de EE.UU. ( en-us ) como configuración regional. Solo para el entorno local en inglés de Estados Unidos, el formato de la fecha es MM/DD/YYYY. El formato de
la fecha cambia a DD/MM/YYYY solo si los dos primeros números son mayores que 12. El valor que se almacena tiene el formato yyyy-MM-dd.
Formatos reconocidos
- Viernes
- hoy
- May 8 (8 de mayo)
Atributos
.alternatives: Guarda valores de fecha alternativos cuando la entrada puede tener distintas interpretaciones. Normalmente, la fecha futura se devuelve como el valor@sys-date. Si hay ambigüedad, se guarda la fecha pasada como una fecha alternativa. Por ejemplo, para la entradain January(en enero), se devuelve una fecha futura. Sin embargo, si estamos a febrero (enero ya ha pasado este año), entonces también se devuelve el enero pasado como una fecha alternativa. También se proporciona una fecha alternativa para los días de la semana cuando se especifica el día de la semana sin un modificador. Por ejemplo, para la entradaAre you open Wednesday?, se guarda la fecha futura, pero se crea también una fecha alternativa con la fecha del miércoles anterior. Se crean fechas alternativas para frases que contienen modificadores comonext(siguiente),this(este) olast(último), que pueden tener distintos significados en distintos entornos locales. El servicio watsonx Assistant trata las fechaslast(última) andnext(siguiente) como si hicieran referencia al último o al siguiente día más inmediato, que puede estar dentro de la misma semana o en la anterior. Para algunos modificadores, se crea una fecha alternativa o no según el día actual de la semana. Por ejemplo, imaginemos que la entrada contienethis Wednesday(este miércoles). Si es lunes, se guarda la fecha futura y no se crea ninguna fecha alternativa. No obstante, si hoy es miércoles, se supone que la fecha es el miércoles de la semana próxima, pero se guarda la fecha de hoy como fecha alternativa. Cada fecha alternativa se guarda como un objeto que contiene un valor y una confianza para cada fecha alternativa. Los objetos de fecha alternativa se guardan en una matriz JSON. Para obtener un valor alternativo, utilice la sintaxis:@sys-date.alternative..calendar_type: Especifica el tipo de calendario para la zona horaria en uso.GREGORIANes el único tipo admitido..datetime_link: consulte Menciones de fecha y hora..day: método de ayuda que devuelve el día en la fecha..day_of_week: devuelve el día de la semana en la fecha como una serie en minúsculas..festival: Reconoce los nombres de días festivos específicos del entorno local y puede devolver la fecha de los próximos festivos, como, por ejemplo,Thanksgiving,ChristmasyHalloween. Si quiere especificar el nombre de un festivo, utilice minúsculas en la condición; por ejemplo, (@sys-date.festival == 'thanksgiving'). Para obtener más información sobre los festivos reconocidos, consulte Festivos..granularity: reconoce menciones de marcos de tiempo. Las opciones sonday,weekend,week,fortnight,month,quarteryyear(día, fin de semana, semana, quincena, mes, trimestre y año)..interpretation: El objeto devuelto por su asistente, que contiene nuevos campos que aumentan la precisión del clasificador de entidades del sistema. Puede omitirinterpretationde la expresión que utiliza para hacer referencia a sus campos. Por ejemplo, puede acceder al valor del campofestivaldel objeto de interpretación utilizando la sintaxis abreviada<? @sys-date.festival ?>..literal: frase exacta en la entrada que se interpreta como la fecha..location: valores de elementos de índice de la primera y última letras de la serie de texto para la frase que se interpreta como una fecha..month: método de ayuda que devuelve el mes en la fecha..range_link: si está presente, indica que la entrada del usuario contiene un rango de fechas. Los valores de índice de inicio y final de la serie que incluye el rango de fechas se guardan como parte del nombre de enlace. Se proporciona información adicional, incluyendo el rol que cada@sys-datejuega en la relación de rango. Por ejemplo, la fecha de inicio tiene el tipo de rol dedate_fromy la fecha de finalización tiene el tipo de roldate_to. Para comprobar un valor de rol, puede utilizar la sintaxis@sys-date.role?.type == 'date_from'. Si la entrada de usuario implica un rango, pero solo se especifica una fecha, la propiedadrange_linkno se devuelve, pero se devuelve un tipo de rol. Por ejemplo, si el usuario pregunta aHave you been open since yesterday. La fecha de ayer se reconoce como la mención@sys-date, y se devuelve el rol de tipodate_from. También se devuelve unrange_modifierque indica la palabra en la entrada que ha propiciado la identificación de un rango. En este ejemplo, el modificador essince..relative_{timeframe}: reconoce y captura menciones de valores de fecha relativos en la entrada del usuario. Devuelve un número que muestra el número de unidades entre ahora y la fecha especificada. Las unidades {time frame} pueden seryear,month,week,weekend, oday..specific_{timeframe}: reconoce y captura menciones de unidades de fecha específicas en la entrada del usuario. Las unidades {time frame} pueden seryear,quarter,month,day, oday_of_week..year: método de ayuda que devuelve el año en la fecha.
En la tabla siguiente se muestra la información que cada atributo captura de la entrada de usuario.
| Atributo | Tipo | Ejemplo |
|---|---|---|
| @sys-date | serie | Si la entrada es May 13, 2020, devuelve 2020-05-13. |
| @sys-date.alternatives | matriz | Por ejemplo, si la fecha de hoy es 10 March 2019, y el usuario introduce on March 1, entonces la fecha 1st marzo del próximo año se guarda como @sys-date ( 2020-03-01 ). Sin embargo,
el usuario podría querer decir el 1st marzo de 2019. El sistema también guarda la fecha de este año (2019-03-01) como un valor de fecha alternativo. Otro ejemplo, si hoy es martes y un usuario escribe this Tuesday (este martes) o next Tuesday (el martes próximo), @sys-date se establece en la fecha del martes de la semana que viene, y no se crean fechas alternativas. |
| @sys-date.calendar_type | serie | Para cualquier mención de fecha, devuelve GREGORIAN. |
| @sys-date.datetime_link | serie | N/D |
| @sys-date.day | serie | Si la entrada es 13 May 2020, devuelve 13. |
| @sys-date.day_of_week | serie | Si la entrada es 13 May 2020 y es un miércoles, devuelve wednesday. |
| @sys-date.festival | serie | Si la entrada contiene Thanksgiving Day (Día de acción de gracias), se devuelve 2020-11-26. |
| @sys-date.granularity | serie | Si la entrada indica next year (el año que viene), devuelve year. |
| @sys-date.literal | serie | Si la entrada es I plan to leave on Saturday. (Tengo previsto irme el sábado), se devuelve on Saturday (el sábado). |
| @sys-date.location | matriz | Si la entrada es My vacation starts tomorrow., devuelve [19, 27]. |
| @sys-date.month | serie | Si la entrada es 13 May 2020, devuelve 5. |
| @sys-date.range_link | serie | Por ejemplo, la entrada podría ser I will travel from March 15 to March 22 (Voy a viajar del 15 de marzo al 22 de marzo). Cada entidad @sys-date que se detecta tiene una propiedad range_link en
su salida denominada date_range_14_39 donde la ubicación del texto del rango de fechas es [14,39]. La fecha de inicio (2020-05-15) tiene el tipo de rol date_from. La fecha de finalización
(2020-05-22) tiene el tipo de rol date_to. |
| @sys-date.relative_{timeframe} | number | Si la entrada es two weeks ago, devuelve relative_week = -2. Si la entrada es this weekend (este fin de semana), devuelve relative_weekend = 0. Si la entrada es today (hoy),
devuelve relative_day = 0. |
| @sys-date.specific_{timeframe} | serie | Para 2020, devuelve specific_year = 2020. Para Q2 2020 o second quarter 2020 (segundo trimestre de 2020), devuelve specific_quarter = 2. Para March (marzo),
devuelve specific_month = 3. Para Monday (lunes), devuelve specific_day_of_week = monday. Para May 3rd (3 de mayo), devuelve specific_day = 3. |
| @sys-date.year | serie | Si la entrada es 13 May 2020, devuelve 2020. |
@sys-time
La entidad del sistema @sys-time detecta menciones de horas en la entrada de usuario. Devuelve la hora especificada en la entrada de usuario en el formato HH:mm:ss. Por ejemplo, "13:00:00" para
1pm.
Formatos reconocidos
- 2pm
- at 4
- 15:30
Atributos
.alternatives: Captura horas distintas de la guardada como valor@sys-timeque el usuario podría querer decir cuando la hora no está claramente indicada. Los valores alternativos se guardan como un objeto que contiene un valor y una confianza para cada hora alternativa y que se almacenan en una matriz JSON. Para obtener un valor alternativo, utilice la sintaxis:@sys-time.alternative..calendar_type: Especifica el tipo de calendario para la zona horaria en uso.GREGORIANes el único tipo admitido..granularity: reconoce menciones de marcos de tiempo. Las opciones sonhour,minute,secondyinstant..hour: método de ayuda que devuelve la hora que se especifica en formato de hora como un valor numérico..interpretation: El objeto devuelto por su asistente, que contiene nuevos campos que aumentan la precisión del clasificador de entidades del sistema. Puede omitirinterpretationde la expresión que utiliza para hacer referencia a sus campos. Por ejemplo, puede acceder al valor del campogranularitydel objeto de interpretación utilizando la sintaxis abreviada<? @sys-time.granularity ?>..literal: Frase exacta en la entrada que se interpreta como la hora..location: lista los valores de elementos de índice de la primera y última letras de la serie de texto para la frase que se interpreta como una mención de hora..minute: método de ayuda que devuelve el valor de minuto que se especifica en la hora..part_of_day: reconoce los términos que representan la hora del día, como, por ejemplo,morning,afternoon,evening,nightonow(mañana, tarde, tarde / noche, noche o ahora). También establece un intervalo de tiempo para cada parte del día. La respuesta contiene dos valores@sys-time, uno para el inicio y otro para el final del intervalo de tiempo. La matriz de entidades contiene un objetorange_linkcon los tipos de roltime-fromytime-to. Los rangos de tiempo para las distintas partes del día pueden diferir según el entorno local. Para inglés de Estados Unidos, la mañana es de6:00:00a12:00:00. La tarde es de12:00:00a18:00:00. La noche es de18:00:00a22:00:00. La noche es de22:00:00a23:59:59. La noche finaliza justo antes de medianoche porque, de lo contrario, se solaparía con el día siguiente, que se mide mediante@sys-date..range_link: si está presente, indica que la entrada del usuario contiene un rango de horas. Los valores de índice de inicio y final de la serie que incluye el rango de horas se guardan como parte del nombre de enlace. Se proporciona información adicional, incluyendo el rol que cada@sys-timejuega en la relación de rango. Por ejemplo, la hora de inicio tiene el tipo de rol detime_fromy la hora de finalización tiene el tipo de roltime_to. Para comprobar un valor de rol, puede utilizar la sintaxis@sys-time.role?.type == 'time_from'. Si la entrada de usuario implica un rango, pero solo se especifica una hora, la propiedadrange_linkno se devuelve, pero se devuelve un tipo de rol. También se devuelve unrange_modifierque indica la palabra en la entrada que ha propiciado la identificación de un rango..relative_{timeframe}: reconoce menciones relativas y devuelve un número que muestra el número de unidades entre ahora y la hora especificada. Las unidades de {timeframe} pueden serhour,minuteosecond(hora, minuto o segundo)..second: método de ayuda que devuelve el valor de segundo que se especifica en la hora..specific_{timeframe}: reconoce y captura menciones de unidades de hora específicas en la entrada del usuario. Las unidades de {timeframe} pueden serhour,minuteosecond(hora, minuto o segundo).
En la tabla siguiente se muestra la información que cada atributo captura de la entrada de usuario.
| Atributo | Tipo | Ejemplo |
|---|---|---|
| @sys-time | serie | Para la entrada 6:30 PM, devuelve 18:30:00. |
| @sys-time.alternatives | matriz | Si un usuario dice The meeting is at 5 (La reunión es a las 5), el sistema calcula la hora como 5:00:00 o como 5 AM y las guarda como @sys-time. Sin embargo, el usuario puede querer
decir 17:00:00 o 5 PM. El sistema también guarda ésta última opción como un valor de hora alternativo. Si el usuario especifica The meeting is at 5pm (La reunión es a las 5pm), entonces @sys-time se establece en 17:00:00 y no se crea ningún valor alternativo porque no hay confusión posible entre AM y PM. |
| @sys-time.calendar_type | serie | Para cualquier mención, devuelve GREGORIAN. |
| @sys-time.granularity | serie | Si la entrada es now, devuelve instant. Para 3 o'clock (las 3 en punto) o noon (mediodía), devuelve hour. Para 17:00:00 (marzo), devuelve second. |
| @sys-time.hour | number | Si la entrada contiene 5:30:10 PM, devuelve 17 para representar las 5 PM. |
| @sys-time.literal | serie | Para la entrada, The store closes at 8PM (La tienda se cierra a las 8PM), devuelve at 8PM (a las 8PM). |
| @sys-time.location | matriz | Para la entrada, The store closes at 8PM (La tienda se cierra a las 8PM), devuelve [17, 23] (a las 8PM). |
| @sys-time.minute | number | Si la entrada menciona la hora 5:30:10 PM, devuelve 30. Si no se especifica ningún minuto, este ayudante devuelve 0. |
| @sys-time.part_of_day | serie | Si la entrada es this morning (esta mañana), devuelve dos valores @sys-time, 6:00:00 y 12:00:00. También devuelve un objeto range_link con los tipos de rol time-from y
time-to. |
| @sys-time.range_link | serie | Para la entrada Are you open from 9AM to 11AM (¿Está abierto de 9AM a 11AM?), se detectan dos entidades @sys-time. Cada entidad @sys-time que se detecta tiene una propiedad range_link en su salida. Si hay un rango implícito, pero solo se proporciona un valor de hora, solo se devuelve un valor @sys-time. Para la entrada Are you open until 9PM(¿Está abierto hasta las 9PM?), 9PM se reconoce
como la mención @sys-time, y se devuelve un rol de tipo time_to para la misma. El range_modifier de este ejemplo es until (hasta). |
| @sys-time.relative_{timeframe} | number | Para 5 hours ago, devuelve relative_hour = -5. Para in two minutes (dentro de dos minutos), devuelve relative_minute = 2. Para in a second (dentro de un segundo), devuelve
relative_second = 1. |
| @sys-time.second | number | Si la entrada menciona la hora 5:30:10 PM, devuelve 10. Si no se especifican segundos, este ayudante devuelve 0. |
| @sys-time.specific_{timeframe} | serie | Para at 5 o'clock, devuelve specific_hour = 5. Para at 2:30 (dentro de dos minutos), devuelve specific_minute = 30. Para 23:30:22 (dentro de un segundo), devuelve specific_second = 22. |
Menciones de fecha y hora
Algunas entradas de usuario contienen información que incluye información de fecha y hora. El asistente captura ambos valores y los guarda como dos menciones de entidad separadas, una @sys-date y una @sys-time.
La relación entre los valores de fecha y hora se establece de dos maneras:
- Cada entidad que participa en la relación contiene el mismo atributo
datetime_link. - La serie literal que abarca la indicación de fecha y hora completa, cuando se mencionan juntas en la entrada, es la misma para ambas entidades. La información de ubicación se añade al nombre
datetime_link.
Formatos reconocidos
- now
- two hours from now (dentro de 2 horas)
- on Monday at 4pm (el lunes a las 4pm)
Atributos
.datetime_link: Si está presente, indica que la entrada del usuario menciona una fecha y una hora juntas, lo que implica que la fecha y la hora están relacionadas entre sí. Los valores de índice de inicio y final de la serie que incluye la fecha y la hora se guardan como parte del nombre de enlace.
En la tabla siguiente se muestra la información que cada atributo captura de la entrada de usuario.
| Atributo | Tipo | Ejemplo |
|---|---|---|
@sys-date.datetime_link y @sys-time.datetime_link |
serie | Si la entrada es, Are you open today at 5?, entonces today se reconoce como una mención de fecha ( 2020-05-21 ) en la ubicación [13,18] y at 5 se reconoce como una mención
de hora ( 05:00:00 ) en la ubicación [19,23]. El valor de ubicación [13,23], que abarca tanto la fecha como la hora, se añade al datetime_link resultante. Se le llama datetime_link_13_23 y se incluye en la salida de las entidades @sys-date y @sys-time que participan en la relación. |
Husos horarios
Las menciones de fecha u hora relativas a la hora actual se resuelven con respecto al huso horario elegido. De forma predeterminada, el huso horario es la hora media de Greenwich. Por lo tanto, los clientes de API REST que se encuentran en
diferentes husos horarios obtienen la hora universal coordinada actual cuando se menciona now (ahora) en la entrada.
Opcionalmente, el cliente de la API REST puede añadir el huso horario local como variable de contexto $timezone. Esta variable de contexto se debe enviar con cada solicitud de cliente. Por ejemplo, el valor de $timezone puede ser America/Los_Angeles, EST o UTC. Para ver una lista completa de los husos horarios soportados, consulte Husos horarios soportados.
Cuando se proporciona la variable $timezone, los valores de las menciones relativas @sys-date y @sys-time se calculan en función de la zona horaria del cliente en lugar de la Hora Universal Coordinada.
Para obtener información sobre el proceso de los valores de fecha y hora, consulte la Referencia del método de fecha y hora.
Entidad @sys-number
La entidad de sistema @sys-number detecta menciones de números en la entrada de usuario. El número puede estar escrito con números o con palabras. En cualquiera de los casos, se devuelve un número.
Formatos reconocidos
- 21
- twenty one
- 3.13
Atributos
.literal: frase exacta en la entrada que se interpreta como el número..location: valores de elementos de índice de la primera y última letras de la serie de texto que se interpreta como un número..numeric_value: valor numérico canónico como entero o doble..range_link: si está presente, indica que la entrada del usuario contiene un rango de números. El valor de ubicación del texto que especifica el rango se añade al nombre de enlace. Se proporciona información adicional, incluyendo el rol que cada@sys-numberjuega en la relación de rango. Por ejemplo, el número de inicio tiene el tipo de rolnumber_fromy el número final tiene el tipo de rolnumber_to. Para comprobar un valor de rol, puede utilizar la sintaxis@sys-number.role?.type == 'number_from'.
En la tabla siguiente se muestra la información que cada atributo captura de la entrada de usuario.
| Atributo | Tipo | Ejemplo |
|---|---|---|
| @sys-number | serie | Si la entrada es twenty, devuelve 20. Si la entrada es 1,234.56 (este fin de semana), devuelve 1234.56. |
| @sys-number.literal | serie | Si la entrada es twenty, devuelve twenty. Si la entrada es 1,234.56, devuelve 1,234.56. |
| @sys-number.location | matriz | Si la entrada es twenty, devuelve [0,6]. Si la entrada es 1,234.56, devuelve [0,8] |
| @sys-number.numeric_value | number | Si la entrada es twenty, devuelve 20. Si la entrada es 1,234.56 (este fin de semana), devuelve 1234.56. |
| @sys-number.range_link | serie | Si la entrada es I'm interested in 5 to 7. (Me interesa de 5 a 7). Cada una de las dos entidades del sistema @sys-number que se detectan tienen el range_link number_range_18_24 en su
salida. La primera entidad @sys-number (5) tiene el tipo de rol number_from. La última entidad @sys-number (7) tiene el tipo de rol number_to. |
Consejos sobre el uso de @sys-number
-
Si utiliza la entidad @sys-number como una condición nodo y el usuario especifica cero como valor, el valor 0 se reconoce correctamente como un número. Sin embargo, el valor 0 se interpreta como un valor
nullpara la condición, lo que da como resultado que el nodo no se esté procesando. Para comprobar los números de forma que se haga un tratamiento correcto de los ceros, utilice también la expresión@sys-number == 0en la condición del nodo. La expresión completa a utilizar es@sys-number OR @sys-number == 0. -
Si utiliza @sys-number para comparar valores numéricos en una condición, asegúrese de incluir por separado una comprobación de la presencia del propio número. Si no se encuentra ningún número, @sys-number se evalúa como nulo. La comparación se puede evaluar como true aunque no haya ningún número.
Por ejemplo, no utilice
@sys-number<4únicamente porque, si no se encuentra ningún número,@sys-numberse evalúa como null (nulo). Puesto que el valor nulo es menor que 4, la condición se evalúa como verdadera, aunque no haya ningún número presente.En su lugar, utilice
(@sys-number OR @sys-number == 0) AND @sys-number < 4. Si no hay ningún número, la primera condición se evalúa como false. Como resultado, toda la condición se evalúa como false.
Para obtener más información sobre el proceso de valores numéricos, consulte la Referencia del método Numbers.
Entidad @sys-percentage
La entidad de sistema @sys-percentage detecta menciones de porcentajes en la entrada de usuario. El porcentaje se puede expresar en una expresión con el símbolo de porcentaje o se puede escribir utilizando la palabra percent (porcentaje). En cualquiera de los casos, se devuelve un valor numérico.
Formatos reconocidos
- 15 %
- 10 percent (10 por ciento)
Atributos
.literal: frase exacta en la entrada que se interpreta como un porcentaje..location: valores de elementos de índice de la primera y última letras de la serie de texto que se interpreta como una mención de porcentaje..numeric_value: valor numérico canónico como entero o doble.range_link: si está presente, indica que la entrada del usuario contiene un rango, como, por ejemplo,from 2 to 3 percent(de 2 a 3 por ciento). El valor de ubicación del texto que especifica el rango se añade al nombre de enlace. Se proporciona información adicional, incluyendo el rol que cada@sys-percentagejuega en la relación de rango. Por ejemplo, el número de inicio tiene el tipo de rolnumber_fromy el número final tiene el tipo de rolnumber_to. Para comprobar un valor de rol, puede utilizar la sintaxis@sys-percentage.role?.type == 'number_from'.
En la tabla siguiente se muestra la información que cada atributo captura de la entrada de usuario.
| Atributo | Tipo | Ejemplo |
|---|---|---|
| @sys-percentage | serie | Si la entrada contiene 1,234.56%, devuelve 1234.56. |
| @sys-percentage.literal | serie | Si la entrada contiene 50 percent devuelve 50 percent. |
| @sys-percentage.location | matriz | Si la entrada contiene from 2 to 3 percent, devuelve [0,19]. |
| @sys-percentage.numeric_value | number | Si la entrada contiene 50 percent devuelve 50. |
| @sys-percentage.range_link | serie | Si la entrada contiene from 2 to 3 percent, devuelve number_range_0_19. |
Consejos sobre el uso de @sys-percentage
-
Si utiliza la entidad @sys-percentage como condición de nodo y el usuario especifica
0%como valor, el valor se reconoce como un porcentaje correctamente, pero la condición se evalúa en el número cero, no en el porcentaje 0 %. Como resultado, elnullen la condición se evalúa como falso y el nodo no se procesa. Para comprobar los porcentajes de forma que se haga un tratamiento correcto de aquellos que sean cero, en su lugar utilice la expresión@sys-percentage OR @sys-percentage == 0en la condición del nodo. -
Si especifica un valor como
1-2%, los valores1%y2%se devuelven como entidades del sistema.
Utilización de entidades del sistema en condiciones
En un nodo que condicione en la intención #Customer_Care_Store_Hours, puede añadir respuestas condicionales que utilizan nuevas propiedades de entidad de sistema para proporcionar respuestas ligeramente distintas sobre el horario
de la tienda, en función de lo que el usuario solicite.
Es probable que no quiera utilizar todas estas respuestas condicionales en un diálogo real; se describen aquí simplemente para mostrar las posibilidades.
| Sintaxis de condición de la respuesta condicional | Descripción | Ejemplo de texto de respuesta |
|---|---|---|
@sys-date.festival == 'thanksgiving' |
Comprueba si el cliente está preguntando sobre horas en el día de Día de Acción de Gracias, concretamente. | Damos comidas gratis a las personas necesitadas en el Día de Acción de Gracias. |
@sys-date.festival |
Comprueba si el cliente está preguntando sobre horario en otro festivo concreto. | Estamos cerrados el día de Navidad, el día de Reyes y el Viernes Santo. En el resto de los festivos, estamos abiertos de 10:00 a 17:00. |
@sys-time.part_of_day == 'night' |
Comprueba si el usuario incluye algún término que mencionen la noche (night) como hora del día en la entrada. | No abrimos hasta tarde; cerramos a las 21:00 la mayoría de los días. |
@sys-date.datetime_link && input.text.contains('today') && now().sameOrAfter(@sys-time) |
Comprueba si la entrada contiene una frase como, por ejemplo, today at 8. También comprueba si el @sys-time detectado es anterior a la hora actual. Puede añadir una variable de contexto a la respuesta condicional
que crea una variable $new_time con el valor <? @sys-time.plusHours(12) ?>. Puede utilizar este enfoque para crear una variable de fecha que capture la hora más probable que significa un usuario que, a
mediodía, pregunte Are you open today at 8. El sistema asume que el usuario quiere decir 8AM en lugar de 8PM. |
¿Se refiere a hoy a las $new_time, verdad? |
@sys-time.range_link && entities[0].role?.type == 'time_from' && entities[1].role?.type == 'time_to' |
Comprueba si la entrada contiene un intervalo de tiempo. La condición también se asegura de que la primera entidad del sistema @sys-time que aparece en el array de entidades es la hora de inicio y que la segunda es la hora
de fin antes de incluirlas en la respuesta. |
Quiere saber si estamos abiertos entre las <? entities[0] ?> y las <? entities[1] ?>, ¿verdad? |
@sys-time && entities.size() < 2 && entities[0].role?.type == 'time_to' |
Comprueba si la entrada contiene una mención @sys-time que tiene un tipo de rol time_to. Si la entrada de usuario coincide con esta condición, sugiere que el usuario ha especificado la hora de cierre de un intervalo
de horario de apertura-cierre. Por ejemplo, la respuesta se activaría con la entrada Are you open until 9pm?. Esta entrada coincide porque solo identifica una hora en un intervalo temporal, y la mención tiene un rol time_to. |
¿Quiere decir desde ahora (<? now().reformatDateTime('h:mm a') ?>) hasta las <? @sys-time.reformatDateTime('h:mm a') ?>? |
@sys-date.day_of_week == 'sunday' |
Comprueba si una fecha específica que el usuario pregunta cae en domingo. | Cerramos los domingos. |
@sys-date.specific_day_of_week == 'monday' && @sys-date.alternative |
Comprueba si el usuario ha mencionado el Monday en su consulta. Por ejemplo, Are you open Monday. La condición también comprueba si se han almacenado fechas alternativas. Las fechas alternativas se crean cuando
el asistente no está completamente seguro a qué lunes se refiere el usuario, por lo que también almacena las fechas de los lunes alternativos. Cuando un usuario especifica un día de semana, el asistente presupone que el usuario se refiere
a un día en el futuro (el lunes que viene). Puede añadir una respuesta que confirme la fecha que se pretende, utilizando el valor alternativo detectado. En este caso, la fecha alternativa es la fecha del lunes pasado. |
¿Se refiere a @sys-date o @sys-date.alternative? |
true |
Responde a cualquier otra solicitud de información del horario de la tienda. | Estamos abiertos de 9:00 a 21:00, de lunes a sábado. |