Propiedad Metadata en componentes de respuesta comunes
La propiedad Metadata se utiliza en los componentes de respuesta común para definir cómo se mostrarán los mensajes a los usuarios.
metadata:
responseItems:
- text: "To which location do you want the pizza to be delivered?"
type: "text"
name: "What location"
separateBubbles: true
globalActions:
- label: "Send Location"
type: "location"
name: "SendLocation"
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
responseItems |
Lista de elementos de respuesta, cada uno de los cuales genera un nuevo mensaje enviado al cliente de chat (o varios mensajes si se define la iteración para el elemento de respuesta mediante la propiedad iteratorVariable o una combinación de las propiedades iteratorVariable y iteratorExpression ). Defina estos elementos de respuesta con estos valores:
|
Sí |
globalActions |
Lista de acciones globales, lo que significa que no son específicas de ningún elemento de respuesta. Estas acciones normalmente se muestran en la parte inferior de la ventana de chat. En Facebook Messenger, por ejemplo, estas opciones se denominan respuestas rápidas. | No |
keywords |
Lista de palabras clave que coinciden con las palabras clave introducidas por un usuario para una carga útil de devolución correspondiente. Las palabras clave soportan canales de solo texto donde los botones de acción no se representan bien. | No |
Propiedad | Descripción | ¿Obligatoria? | |
---|---|---|---|
type |
Tipo de elemento de respuesta que determina el formato del mensaje. Puede definir un mensaje como text , attachment o cards .
|
Sí | |
name |
Nombre del elemento de respuesta que se utiliza internamente, no se utiliza durante la ejecución. | No | |
iteratorVariable |
Agrega de manera dinámica varios elementos de texto, anexo o palabras clave a la respuesta mediante la iteración en los elementos de la variable. | No | |
iteratorExpression |
Expresión FreeMarker utilizada para mostrar valores de una matriz anidada dentro de la variable especificada por la propiedad iteratorVariable .
Por ejemplo, si ha definido el valor de la propiedad |
No | |
visible |
Determina cómo se muestran los mensajes por canal y entrada de usuario. Consulte Propiedad visible. | No | |
rangeStart |
Si ha especificado iteratorVariable , puede eliminar un subconjunto de elementos de respuesta especificando la propiedad rangeStart en combinación con la propiedad rangeSize . Puede introducir un valor codificado o utilizar una expresión FreeMarker que haga referencia a una variable de flujo de diálogo que contenga el inicio del rango. Mediante una variable rangeStart , puede definir la variable rangeStart en la carga útil de la opción Examinar para acceder al siguiente juego de datos. Puede ver un ejemplo de las propiedades rangeStart y rangeSize en el estado OrderPizza de CrcPizzaBot.
|
No | |
rangeSize |
Número de elementos de respuesta que se mostrarán según lo especificado por las propiedades iteratorVariable y rangeStart .
|
No | |
channelCustomProperties |
Lista de propiedades que disparan funciones concretas de un canal. Debido a que estas funciones son específicas de la plataforma, están fuera del componente de respuesta común y, por lo tanto, no se pueden controlar mediante las propiedades de nivel raíz o de nivel de elemento de respuesta del componente. Puede encontrar un ejemplo de esta propiedad en el estado OrderPizza de CrcPizzaBot. Para obtener detalles sobre el uso de channelCustomProperties , así como sobre las propiedades disponibles para cada canal, consulte Extensiones específicas del canal.
|
No |
Propiedades de Metadatos de Palabra Clave
El siguiente fragmento muestra cómo puede tener un juego de palabras clave generado a partir de una variable
pizzaSize
que contiene la lista de valores definidos para una entidad PizzaSize.
responseItems:
- type: "text"
text: "What size of pizza do you want?"
actions:
- label: "(${enumValue[0]?upper_case})${enumValue?keep_after(enumValue[0])}"
type: "postback"
keyword: "${enumValue[0]?upper_case},${(enumValue?index)+1}"
payload:
variables:
pizzaSize: "${enumValue}"
iteratorVariable: "pizzaSize.type.enumValues"
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
keyword |
Lista de palabras clave que disparan la carga útil de devolución definida por la propiedad payload . Puede utilizar una expresión de FreeMarker para devolver las palabras clave que la propiedad interatorVariable genera a partir de entidades de la lista de valores mediante las propiedades type y enumValues (iteratorVariable: "pizzaSize.type.enumValues" ).
|
Sí |
label |
Etiqueta de la acción, que puede ser una cadena de texto o una expresión de Apache FreeMarker. Por ejemplo, esta es una expresión que indica una palabra clave de dos letras:
|
No |
skipAutoNumber |
Establézcala en true para suprimir la numeración automática de un elemento clave cuando Activar numeración automática en tarjetas se haya establecido en el asistente digital o en el nivel de aptitud.
|
No |
visible |
Determina cómo se muestran los mensajes de texto por canal y por entrada de usuario. Consulte Propiedad visible | No |
iteratorVariable |
Agrega de forma dinámica varias palabras clave iterando sobre los elementos almacenados en la variable especificada. Por ejemplo, iteratorVariable: "pizzaSize.type.enumValues" .
|
No |
iteratorExpression |
Expresión FreeMarker utilizada para mostrar valores de una matriz anidada dentro de la variable especificada por la propiedad iteratorVariable .
Por ejemplo, si ha definido el valor de la propiedad |
|
payload |
Carga útil de devolución, que tiene las siguientes propiedades.
|
Extracción de palabras clave de los mensajes
Si bien el componente dispara una acción de devolución cuando los usuarios introducen un número, se puede ampliar la aptitud para admitir entradas más libres, como First, o let's try the 1st item. Para ello, cree una variable de matriz para las frases clave (por ejemplo, primero,1er,uno, segundo, 2o, dos, etc.).
keyword
de los metadatos. Por ejemplo, esto es lo que podría parecer en un flujo para pedir una pizza.- keyword: "${pizzas.name},<#if pizzas?index <KEYWORDS_VAR.value?size>${numberKeywords.value[pizzas?index].keywords}</#if>,<#if pizzas?index==cardsRangeStart?number+[cardsRangeStart?number+3,pizzaCount.value?number-cardsRangeStart?number-1]?min>last</#if>"
En esta definición, la última palabra clave se basa en el inicio del rango actual. Se define en la última pizza mostrada actualmente, en función del número de veces que el cliente ha introducido "more".La propiedad visible
visible
para definir la visualización según la entrada de usuario y el canal.
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
expression |
La directiva de Apache FreeMarker que muestra u oculta texto, tarjetas o anexos condicionalmente. Por ejemplo, el estado OrderPizza de CrcPizzaBot utiliza ""<#if cardsRangeStart?number+4 < pizzas.value?size && textOnly=='false'>true<#else>false</#if>" |
No |
|
Para include y exclude , introduzca una lista separada por comas de los tipos de canal para los que se deben mostrar (include ) u ocultar (exclude ) el texto, la tarjeta o el anexo. Los valores del canal válidos son:
|
No |
onInvalidUserInput |
Indicador booleano que muestra el elemento de texto o anexo cuando el usuario introduce una entrada válida (value=false ) o cuando el usuario introduce una entrada que no es válida (value=true ).
|
No |
onDisambiguation |
Cuando true , solo muestra el elemento de respuesta, la tarjeta o la acción cuando se muestra una petición de datos de desambiguación.
|
No |
entitiesToResolve |
Utilice esta propiedad para crear un mensaje personalizado para cada elemento de bolsa compuesta. Agregue una lista delimitada por comas de nombres de elementos de bolsa compuesta para los que se debe mostrar el elemento de respuesta (include ) u oculto (exclude ).
|
No |
Propiedades de metadatos de acción
Puede definir acciones para una tarjeta o lista, un tipo de respuesta o acciones globales para un componente (como acciones de respuesta rápida de Facebook). No se pueden configurar acciones para los mensajes de anexo.
Propiedad | Descripción | ¿Obligatoria? | |
---|---|---|---|
type |
Tipo de acción:
|
Sí | |
label |
Etiqueta para la acción. Para localizar esta etiqueta, puede utilizar una expresión de FreeMarker para hacer referencia a una entrada del grupo de recursos del bot. | Sí | |
iteratorVariable |
Esta opción se usa para agregar varias acciones iterando sobre los elementos almacenados en la variable especificada. No se puede usar esta propiedad con las acciones share y location. | No | |
iteratorExpression |
Expresión FreeMarker utilizada para mostrar valores de una matriz anidada dentro de la variable especificada por la propiedad iteratorVariable .
Por ejemplo, si ha definido el valor de la propiedad |
No | |
imageUrl |
URL de la imagen utilizada para un icono que identifica una acción. Puede utilizar esta propiedad para mostrar un icono para el botón de respuesta rápida de Facebook (que es una acción global). | No | |
skipAutoNumbering |
Si se establece en true , esta propiedad excluye una acción de devolución individual de la aplicación de la numeración automática. Puede usar esta propiedad para una respuesta de texto o tarjeta.
|
No | |
channelCustomProperties |
Lista de propiedades, algunas de las cuales disparan una funcionalidad específica del canal no controlada por las propiedades de acción estándar. Puede encontrar un ejemplo en el estado OrderPizza de CrcPizzaBot.
|
No | |
name |
Nombre que identifica la acción en la plataforma de Digital Assistant. Este nombre se utiliza internamente y no se muestra en el mensaje. | No | |
visible |
Determina cómo se muestran los anexos por entrada de usuario y canal. Consulte Propiedad visible. | No | |
payload |
Objeto de carga útil para los elementos de respuesta call , url y postback . Consulte Propiedades de la carga útil.
|
No |
Propiedades de carga útil
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
action |
Transición action que se dispara cuando el usuario selecciona esta acción.
|
No |
variables |
Define los valores para variables cuando se define el tipo de acción en postback y se agregan propiedades de carga útil designadas para las variables. Cuando el usuario pulsa la acción, las variables se establecen en los valores especificados por esta propiedad.
|
No |
url |
URL del sitio web que se abre cuando los usuarios pulsan esta acción. | Esta propiedad es necesaria para el tipo de acción url .
|
phoneNumber |
Número de teléfono al que se llama cuando un usuario pulsa esta acción. | Esta propiedad es necesaria para el tipo de acción call .
|
¿Cómo se representan las acciones que no son de devolución en los canales de solo texto?
Algunos aspectos que se deben tener en cuenta para estas propiedades de metadatos de acción para los componentes de respuesta común.
-
Si el canal de solo texto admite hiperenlaces, puede utilizarlos en lugar de botones si el tipo de acción global es
url
ocall
. -
Los tipos de acción
share
ylocation
se ignorarán o no se representarán.
Consejo:
No es posible numerar las acciones que no son de devolución, comourl
y call
, porque no se transfieren al motor de diálogo y, por lo tanto, no se pueden activar utilizando palabras clave. Por lo tanto, si combina los dos tipos de acciones, el mensaje del bot puede parecer inconsistente porque solo se numeran algunas opciones.
Con el SDK, puede crear una salida más consistente desactivando la numeración automática para la devolución. Por ejemplo:
{
"type": "text",
"text": "Please choose one of the following options",
"actions": [
{
"type": "url",
"label": "Check out our website",
"url": "http://www.oracle.com"
},
{
"type": "postback",
"label": "<#if autoNumberPostbackActions.value>Enter 1 to Order pizza<#else>Order Pizza<#if>"
"skipAutoNumber": true
"keyword": "1"
"postback": { ...}
}
]
}
Elemento de respuesta de texto
Estas son las propiedades de los elementos de respuesta de texto en los componentes de respuesta común.
Propiedad | Descripción | ¿Obligatoria? | |
---|---|---|---|
text |
Texto que se presenta al usuario. | Sí | |
iteratorExpression |
Expresión FreeMarker utilizada para mostrar valores de una matriz anidada dentro de la variable especificada por la propiedad iteratorVariable .
Por ejemplo, si ha definido el valor de la propiedad |
||
iteratorVariable |
Agrega de manera dinámica varios elementos de texto, anexo o palabras clave a la respuesta mediante la iteración en los elementos de la variable. | No | |
footerText |
Texto que se muestra en la parte inferior del mensaje (bajo las acciones de texto y botón, si las hay). Agregue un pie de página para mejorar la salida en los canales de solo texto. Como se describe en Pies de página, puede utilizar expresiones de FreeMarker para condicionar el texto del pie de página en los canales de solo texto. | No | |
separateBubbles |
Puede definir esta propiedad si también define la propiedad iteratorVariable . Si define esta propiedad en true , cada elemento de texto se envía como un mensaje independiente, como Pizzas y Pastas en los estados ShowMenu y OrderPizza de CrcPizzaBot. Si la define en false , se envía un solo mensaje de texto, uno en el que cada elemento de texto comienza en una nueva línea.
|
No | |
visible |
Determina cómo se muestran los mensajes de texto por canal y por entrada de usuario. Consulte Propiedad visible. | No | |
actions |
Acción de devolución. En caso de compatibilidad solo con texto, puede definir palabras clave. | No |
showMenu
de CrcPizzaBot:
Puesto que designa postback
como una acción, permite a la aptitud gestionar un comportamiento de usuario inesperado, como la selección de un elemento de un mensaje más antiguo, en lugar de uno del mensaje más reciente.metadata:
responseItems:
- type: "text"
text: "Hello ${profile.firstName}, this is our menu today:"
footerText: "${(textOnly.value=='true')?then('Enter number to make your choice','')}"
name: "hello"
separateBubbles: true
actions:
- label: "Pizzas"
type: "postback"
keyword: "${numberKeywords.value[0].keywords}"
payload:
action: "pizza"
name: "Pizzas"
- label: "Pastas"
keyword: "${numberKeywords.value[1].keywords}"
type: "postback"
payload:
action: "pasta"
name: "Pastas"
Elemento de respuesta de tarjeta
Estas son las propiedades de los elementos de respuesta de tarjeta en los componentes de respuesta común.
Propiedad | Descripción | ¿Obligatoria? | |
---|---|---|---|
cardLayout |
Diseño de tarjeta: horizontal (valor por defecto) y vertical .
|
Sí | |
headerText |
Texto de cabecera. Por ejemplo: headerText: "<#if cardsRangeStart?number == 0>Here are our pizzas you can order today:<#else>Some more pizzas for you:</#if>" .
|
No | |
title |
Título de la tarjeta | Sí | |
description |
Descripción de la tarjeta, que se muestra como un subtítulo. | No | |
imageUrl |
URL de la imagen que se muestra bajo el subtítulo. | No | |
cardUrl |
URL de un sitio web. Se muestra como un hiperenlace, que los usuarios tocan para abrir, en la tarjeta. | No | |
iteratorExpression |
Expresión FreeMarker utilizada para mostrar valores de una matriz anidada dentro de la variable especificada por la propiedad iteratorVariable .
Por ejemplo, si ha definido el valor de la propiedad |
||
iteratorVariable |
Agrega dinámicamente varias tarjetas a la respuesta iterando sobre los elementos almacenados en la variable especificada para esta propiedad. Aunque se defina la variable como una cadena, contiene una matriz de JSON cuando se utiliza como variable del iterador. Puede hacer referencia a las propiedades de un objeto de la matriz con una expresión como ${iteratorVarName.propertyName} . Por ejemplo, con una variable de iterador denominada pizzas , se puede hacer referencia a la propiedad de nombre de una pizza utilizando la expresión ${pizzas.name} .
|
No | |
rangeStart |
Si ha especificado una propiedad iteratorVariable , puede eliminar un subconjunto de tarjetas especificando la propiedad rangeStart en combinación con la propiedad rangeSize . Puede introducir un valor codificado o utilizar una expresión FreeMarker que haga referencia a una variable que contenga el inicio del rango. Mediante una variable rangeStart , puede pasar al siguiente juego de datos definiendo la variable rangeStart en la carga útil de una opción de exploración.
|
No | |
rangeSize |
Número de tarjetas mostradas como se especifica en las propiedades iteratorVariable y rangeStart .
|
No | |
visible |
Determina cómo se representan las etiquetas de acción por canal y entrada de usuario. Consulte Propiedad visible. | No |
Puede asignar un juego de acciones que sean específicas de una tarjeta en particular o una lista de acciones conectadas al final de la lista de tarjetas.
OrderPizza
de CrcPizzaBot incluye una definición del elemento de respuesta de la tarjeta, como se muestra en el siguiente fragmento:responseItems:
- type: "cards"
headerText: "<#if cardsRangeStart?number == 0>Here are our pizzas you can order today:<#else>Some more pizzas for you:</#if>"
cardLayout: "vertical"
name: "PizzaCards"
actions:
- label: "More Pizzas"
keyword: "more"
type: "postback"
skipAutoNumber: true
visible:
expression: "<#if cardsRangeStart?number+4 < pizzas.value?size && textOnly=='false'>true<#else>false</#if>"
payload:
action: "more"
variables:
cardsRangeStart: "${cardsRangeStart?number+4}"
name: "More"
cards:
- title: "${(textOnly=='true')?then((pizzas?index+1)+'. ','')}${pizzas.name}"
description: "${pizzas.description}"
imageUrl: "${pizzas.image}"
name: "PizzaCard"
iteratorVariable: "pizzas"
rangeStart: "${cardsRangeStart}"
rangeSize: "4"
actions:
- label: "Order Now"
type: "postback"
payload:
action: "order"
variables:
orderedPizza: "${pizzas.name}"
orderedPizzaImage: "${pizzas.image}"
name: "Order"
visible:
expression: "${(textOnly=='true')?then('false','true')}"
¿Cómo se representan las tarjetas en canales de solo texto?
Los componentes de respuesta común representan las respuestas como tarjetas. Si la aptitud se ejecuta en un canal de solo texto, algunas de las propiedades del elemento de respuesta de la tarjeta se comportan de forma diferente. Estos son algunos aspectos que deben tenerse en cuenta:
-
No hay desplazamiento vertical ni horizontal (comportamientos definidos por la opción
cardLayout
). Todas las tarjetas se representan dentro de una sola burbuja de mensaje, que puede incluir una cabecera y un pie de página. Las propiedadestitle
ydescription
de la tarjeta se separan mediante un carácter de línea nueva. Puede numerar la propiedad title de la tarjeta. -
Se admiten hiperenlaces en los canales de solo texto. La dirección configurada para la propiedad
cardUrl
se representa en la burbuja junto con las propiedadestitle
ydescription
, separadas por un carácter de línea nueva. -
Se representan las imágenes especificadas por la propiedad
imageURL
. - Se muestra el texto de etiqueta de los botones de acción (aunque los botones no se representen). Los usuarios pueden introducir el texto o, si se ha activado la numeración automática, introducir en su lugar el número correspondiente, lo que resulte más cómodo.
Optimización de tarjetas en canales de solo texto con palabras clave
La mayoría de las tarjetas contienen una sola acción, como el botón "Order Now" de CRCPizzaBot, y una acción global, como "More", para cargar la siguiente tarjeta en el carrusel. Como se muestra en ¿Cómo se representan las tarjetas en canales de solo texto?, la etiqueta de cada acción se numera automáticamente cuando la aptitud se ejecuta en canales de solo texto/SMS. En estos canales, se representa un juego de tarjetas en una sola burbuja, que puede ser muy larga y, por lo tanto, difícil de leer. Para evitar esto, puede configurar acciones de devolución que no estén asociadas a las etiquetas de acción, sino que se ejecuten mediante palabras clave de usuario (1, 2, 3, cheese o more, por ejemplo).
Descripción de la ilustración cart-text-only.png
Puede ocultar las etiquetas de acción si la aptitud se ejecuta en canales de solo texto. Para ello, siga estas directrices generales.
- Defina la propiedad
keywords
. En el siguiente fragmento de CRCPizzaBot, la expresión${pizza.name}
definida para la propiedad keyword define una palabra clave para el nombre de cada pizza:metadata: keywords: - keyword: "${pizzas.name},<#if pizzas?index <numberKeywords.value?size>${numberKeywords.value[pizzas?index].keywords}</#if>,<#if pizzas?index==cardsRangeStart?number+[cardsRangeStart?number+3,pizzaCount.value?number-cardsRangeStart?number-1]?min>last</#if>" visible: expression: "${textOnly.value}" ...
Estas palabras clave solo se agregan si
textOnly
se ha definido en true.
card
:
- Defina la propiedad
title
. En el siguiente fragmento, una expresión utiliza la variableindex
de FreeMarker para prefijar un número al título (devuelto por${pizzas.name}
cuando el valor de la variabletextOnly
estrue
). Esto significa que, cuando un cliente introduce more, la aptitud carga otra burbuja de mensaje que contiene el siguiente juego de pizzas, a partir del número 5 (rangeSize: "4"
).cards: - title: "${(textOnly=='true')?then((pizzas?index+1)+'. ','')}${pizzas.name}" description: "${pizzas.description}" imageUrl: "${pizzas.image}" name: "PizzaCard" iteratorVariable: "pizzas" rangeStart: "${cardsRangeStart}" rangeSize: "4"
- En el siguiente fragmento, las acciones de tarjeta (
"Order"
y"More Pizzas"
) solo se muestran cuando el valor de la variabletextOnly
esfalse
:- label: "More Pizzas" keyword: "more" type: "postback" skipAutoNumber: true visible: expression: "<#if cardsRangeStart?number+4 < pizzas.value?size && textOnly=='false'>true<#else>false</#if>"
- Agregue un pie de página que se muestre solo cuando el valor de la variable
textOnly
seatrue
.footerText: "<#if textOnly=='true'>Enter a pizza number to make your choice<#if cardsRangeStart?number+4 < pizzas.value?size>, or type 'more' to see more pizzas</#if></#if>"
Elemento de respuesta del anexo
El elemento de respuesta attachment
incluye las siguientes propiedades.
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
attachmentType |
Tipo de anexo: image , audio , video y file .
|
Sí |
attachmentURL |
URL u origen de descarga del anexo. | Sí |
Confirmation
de CrcPizzaBot utiliza un elemento de respuesta de anexo para mostrar la imagen del pedido, que es diferente del elemento mostrado en el menú.metadata:
responseItems:
- text: "Thank you for your order, your ${pizzaSize} ${orderedPizza} pizza\
\ will be delivered in 30 minutes at GPS position ${location.value.latitude},${location.value.longitude}!"
type: "text"
name: "conf"
separateBubbles: true
- type: "attachment"
attachmentType: "image"
name: "image"
attachmentUrl: "${orderedPizzaImage}"
Acción
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
type |
Tipo de acción | Cadena | Sí |
label |
Texto de etiqueta descriptivo de la acción. | Cadena | Se debe incluir al menos uno de estos elementos: label o imageUrl .
|
imageUrl |
Imagen para la acción | Cadena | Se debe incluir al menos una sola propiedad label o imageUrl .
|
style |
El estilo de representación del botón | "primary" , "danger" , "default" |
No |
displayType |
Representación del tipo de elemento de acción (botón, enlace o icono) | "button" , "link" , "icon" |
No |
channelExtensions |
Propiedades de extensión específicas del canal asociadas a la acción | JSONObject | No |
Campo
Field
contiene las siguientes propiedades:
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de campo | String |
No |
label |
La etiqueta de campo | String |
Sí |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. | Map<ChannelType, JSONObject> |
No |
marginTop |
Cantidad de espacio vertical entre este campo y el campo anterior en la misma columna. Los valores permitidos son none , medium (valor por defecto) y large .
|
String |
No |
labelFontSize |
Tamaño de fuente utilizado para la etiqueta de campo. Los valores permitidos son small , medium (valor por defecto) y large .
|
String |
No |
labelFontWeight |
El grosor de fuente utilizado para la etiqueta de campo. Los valores permitidos son light , medium (valor por defecto) y negrita.
|
String |
No |
displayInTable |
Expresión booleana FreeMarker que permite incluir condicionalmente un campo en el diseño de tabla en un elemento de respuesta dataSet. | String |
No (el valor por defecto es true )
|
displayInForm |
Expresión booleana FreeMarker que permite incluir condicionalmente un campo en un el elemento de respuesta editForm o en el diseño de formulario en un elemento de respuesta dataSet | String |
No (el valor por defecto es true )
|
Campo ReadOnly
Field
y tienen las siguientes propiedades adicionales:
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
value |
El valor del campo | Cadena | Sí |
width |
Porcentaje sugerido del ancho total disponible que debe ocupar el campo en un diseño de tabla. | número | No |
alignment |
La alineación del valor dentro de una columna de tabla. La alineación por defecto es right .
|
"left" , "center" y "right" |
No |
En la versión 23.06 de Oracle Digital Assistant, los campos de solo lectura no se presentan en los formularios de entrada, incluso si se reciben en la carga útil del mensaje.
TextField
TextField
hereda todas las propiedades del campo ReadOnly. El displayType
para este elemento es "text"
. Tiene las siguientes propiedades adicionales:
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
truncateAt |
Posición en la que se trunca el texto largo y se agregan puntos suspensivos para indicar que el valor se ha truncado. | Valor entero | No |
fontSize |
Tamaño de fuente utilizado para el valor field . Los valores permitidos son small , medium (valor por defecto) y large .
|
Cadena | No |
fontWeight |
El grosor de fuente utilizado para el valor field . Los valores permitidos son ligero, medio (valor por defecto) y negrita.
|
Cadena | No |
LinkField
LinkField
hereda todas las propiedades del campo ReadOnly. Tiene las siguientes propiedades adicionales:
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
linkLabel |
Etiqueta utilizada para el hiperenlace | Cadena | No |
imageUrl |
URL de la imagen que abre un enlace al hacer clic. | Cadena | No |
MediaField
MediaField
hereda todas las propiedades del campo ReadOnly. Tiene las siguientes propiedades adicionales:
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
mediaType |
Tipo de medio de campo ("video" , "audio" , "image" )
|
String |
Sí |
Formulario
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
title |
El título que se muestra encima del diseño del formulario | Cadena | No |
fields |
Lista de campos de solo lectura del formulario | Lista<ReadOnlyField> | Sí |
formRows |
Lista de filas mostradas en el formulario. | Mostrar<FormRow> | |
actions |
Una lista de acciones | Mostrar<Acción> | No |
selectAction |
Acción que se ejecuta cuando se selecciona el formulario. Cuando los usuarios pasan el mouse sobre el formulario, la etiqueta de la acción se muestra como una sugerencia de herramienta (cuando está soportada por el canal). | Acción | No |
channelExtensions |
Las propiedades de extensión específicas del canal asociadas al mensaje | JSONObject | No |
FormRow
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
columns |
Lista de columnas mostradas en la fila del formulario. | Mostrar <columna> | Sí |
selectAction |
Acciones que se ejecutan cuando se selecciona el formulario. Cuando los usuarios pasan el cursor sobre el formulario, la etiqueta de la acción, se muestra como una pista (cuando está soportada por el canal). | Acción | No |
separator |
Si se define esta propiedad en true, se inserta una línea de separador sobre el contenido de la fila del formulario. | Boolean | No |
channelExtensions |
Las propiedades de extensión específicas del canal asociadas al mensaje | JSONObject | No |
Columna
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
fields |
Lista de campos que se muestran verticalmente en la columna. Estos campos deben ser instancias ReadOnlyField cuando la columna se utiliza en FormRow dentro de Form . Los campos pueden ser campos de solo lectura y editables cuando se utiliza FormRow en EditFormMessagePayload .
|
Mostrar<Campo> | Sí |
verticalAlignment |
La alineación vertical de la columna con respecto a las otras columnas de la misma fila de formulario. | Cadena | No |
width |
Determina el ancho de la columna dentro de la fila del formulario. Los valores permitidos son auto (valor por defecto) y stretch . Cuando se define en stretch , la columna toma todo el ancho restante después de presentar cualquier columna de ancho automático. Si hay varias columnas definidas en stretch , dividen de forma uniforme el ancho restante.
|
Cadena | No |
channelExtensions |
Las propiedades de extensión específicas del canal asociadas al mensaje | JSONObject | No |
Elemento de respuesta editForm
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
type |
Tipo de elemento de respuesta. | editform |
Sí |
title |
El título del formulario | Cadena | No |
items |
Lista de campos, tanto de solo lectura como editables. | Enumerar<field> |
Sí |
formColumns |
Número de columnas utilizadas para el diseño del formulario. El valor predeterminado es una columna. | Entero | No |
actions |
Lista de acciones relacionadas con tarjetas. | Enumerar<Action> |
No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
El campo textInput
Un campo para introducir texto libre. Puede definir los caracteres mínimo y máximo para este campo y aplicar formato mediante expresiones regulares.
submittedFields
generada (una asignación).
- displayType: textInput
multiLine: true
defaultValue: "${(submittedFields.value.Description)!''}"
minLength: 10
name: Description
label: Description
placeholder: What is the expense justification?
clientErrorMessage: "Description must be 10 characters minimum, 50 characters maximum."
maxLength: 50
required: true
- displayType: textInput
multiLine: true
defaultValue: "${(submittedFields.value.Notes)!''}"
minLength: 10
name: Notes
inputStyle: email
label: Notes
placeholder: Expense notes (optional)
maxLength: 50
required: false
Este fragmento ilustra la recopilación de la entrada del usuario haciendo referencia a una variable de bolsa compuesta.El artículo de bolsa compuesta al que se hace referencia puede ser un elemento STRING.
- displayType: textInput
serverErrorMessage: "${(system.entityToResolve.value.validationErrors['Tip'])!''}"
defaultValue: "${(expense.value.Tip.originalString)!''}"
displayInForm: "${(((expense.value.TipIncluded.yesno)!'') == 'NO')?then(true, false)}"
name: Tip
label: Tip
placeholder: Enter the tip
clientErrorMessage: Tip is required
required: true
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de campo. | textInput (una cadena)
|
Sí |
name |
Nombre único del campo dentro del formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
label |
La etiqueta de campo | Cadena | No |
defaultValue |
El valor inicial. Según la expresión FreeMarker de la plantilla, el valor es una cadena cuando el elemento de bolsa al que se hace referencia (representado por myText ) no tiene ningún valor ("${(submittedFields.value.myText)!''}" ).
|
Cadena | No |
validationRegularExpression |
Expresión regular que especifica el formato de la entrada de texto. | Cadena | No |
multiline |
La definición de esta propiedad en true permite a los usuarios introducir varias líneas de texto.
|
Boolean | No |
minlength |
Número mínimo de caracteres necesarios para validar el campo. Los usuarios reciben un mensaje de error si introducen muy pocos caracteres. | Entero | No |
maxLength |
Número o límite máximo de caracteres. | Entero | No |
inputStyle |
El formato que se aplica en el cliente. Los formatos son:
|
Cadena | No |
placeholder |
Indicación que describe cómo utilizar este campo. Este texto se muestra cuando los usuarios aún no han introducido ninguna entrada. Por ejemplo:
|
Cadena | No |
autoSubmit |
Si se define en true , el formulario se envía parcialmente cuando el usuario ha introducido un valor para el campo. En FormSubmissionMessagePayload , partialSubmitField se define en el nombre del campo donde autoSubmit se define en true . Le recomendamos que configure el envío automático para campos condicionalmente dependientes. Por ejemplo, establezca esta propiedad cuando se muestre u oculte un campo en función del valor de otro campo o cuando los valores permitidos de un campo dependan del valor definido en otro campo. Al enviar automáticamente un campo del que dependen otros campos, el formulario se puede actualizar inmediatamente con los cambios relevantes en los campos dependientes.
|
Cadena | No |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | boolean |
No |
clientErrorMessage |
Mensaje utilizado por algunos clientes (MS Teams, Apple Business Messaging) cuando falla la validación del lado del cliente. En Slack, esta propiedad solo se utiliza cuando el formulario editable se muestra en la página de conversación. No se muestra en un cuadro de diálogo modal. | Cadena | No |
serverErrorMessage |
Mensaje de error que se envía al cliente cuando falla la validación del lado del servidor de un valor de campo de formulario. Cuando se producen errores de este tipo en el servidor, se recomienda sustituir el mensaje de formulario actual, en lugar de un nuevo mensaje agregado a la conversación mediante la configuración de la propiedad channelExtensions para indicar que se debe sustituir el último mensaje de formulario.
|
Cadena | No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
El campo datePicker
maxDate
y minDate
del componente validan la entrada del usuario.
El canal de Slack no soporta esta validación de valor mínimo y máximo.
submittedFields
generada (una asignación). - displayType: datePicker
defaultValue: "${(submittedFields.value.Date)!''}"
name: Date
maxDate: "${.now?iso_utc[0..9]}"
label: Expense Date
placeholder: Pick a date in the past
clientErrorMessage: Expense date is required and must be in the past.
required: true
Este fragmento ilustra cómo capturar la entrada del usuario haciendo referencia a una variable de bolsa compuesta. - displayType: datePicker
serverErrorMessage: "${(system.entityToResolve.value.validationErrors['Date'])!''}"
defaultValue: "${(expense.value.Date.date?number_to_date?iso_utc)!''}"
name: Date
maxDate: "${.now?iso_utc[0..9]}"
label: Expense Date
placeholder: Pick a date in the past
clientErrorMessage: Expense date is required and must be in the past.
required: true
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de campo | datePicker (una cadena)
|
Sí |
id |
Nombre único del campo dentro del formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
label |
Etiqueta descriptiva. | Cadena | No |
defaultValue |
El valor predeterminado del campo, con el formato AAAA-MM-DD. La plantilla define esta cadena como una expresión FreeMarker de Apache que devuelve una cadena vacía cuando el elemento de bolsa compuesta al que se hace referencia (representado por myDate ) tiene un valor nulo.
|
Cadena | No |
minDate |
Primera fecha en el rango de días permitidos. El canal de Slack no admite esta validación del lado del cliente. | Cadena | No |
maxDate |
Última fecha en el rango de días permitidos. La plantilla define esta cadena como el día actual ("${.now?iso_utc[0..9]}" ). El canal de Slack no admite esta validación del lado del cliente.
|
Cadena | No |
placeholder |
Descripción de la entrada esperada que se muestra cuando el usuario aún no ha seleccionado una fecha. | Cadena | No |
autoSubmit |
Si se define en true , el formulario se envía parcialmente cuando el usuario ha introducido un valor para el campo. En FormSubmissionMessagePayload , partialSubmitField se define en el nombre del campo donde autoSubmit se define en true . Le recomendamos que configure el envío automático para campos condicionalmente dependientes. Por ejemplo, establezca esta propiedad cuando se muestre u oculte un campo en función del valor de otro campo o cuando los valores permitidos de un campo dependan del valor definido en otro campo. Al enviar automáticamente un campo del que dependen otros campos, el formulario se puede actualizar inmediatamente con los cambios relevantes en los campos dependientes.
|
Cadena | No |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | booleano | No |
clientErrorMessage |
Mensaje utilizado por algunos clientes (MS Teams, Apple Business Messaging) cuando falla la validación del lado del cliente. En Slack, esta propiedad solo se utiliza cuando el formulario editable se muestra en la página de conversación. No se muestra en un cuadro de diálogo modal. | Cadena | No |
serverErrorMessage |
Mensaje de error que se envía al cliente cuando falla la validación del lado del servidor de un valor de campo de formulario. Cuando se producen errores de este tipo en el servidor, se recomienda sustituir el mensaje de formulario actual, en lugar de un nuevo mensaje agregado a la conversación mediante la configuración de la propiedad channelExtensions para indicar que se debe sustituir el último mensaje de formulario.
|
Cadena | No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
El campo timePicker
maxTime
y minTime
del componente validan la entrada del usuario.
El canal de Slack no soporta la validación de valor mínimo y máximo.
submittedFields
generada (una asignación). - displayType: timePicker
defaultValue: "${(submittedFields.value.Time.value?time.xs?string['hh:mm a'])!''}"
maxTime: "23:00"
minTime: "13:00"
name: Time
label: Expense Time
placeholder: What time was the expense?
clientErrorMessage: This time is outside the limits.
required: true
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de campo | timePicker (una cadena)
|
Sí |
id |
Nombre único del campo dentro del formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
label |
Etiqueta que describe los parámetros de selección de tiempo. | Cadena | Sí |
defaultValue |
El valor inicial de este campo, en formato de 24 horas. La plantilla define esta cadena como una expresión FreeMarker de Apache que devuelve una cadena vacía cuando el elemento de bolsa compuesta al que se hace referencia (representado por myTime ) tiene un valor nulo.
|
Cadena | No |
minTime |
Define la hora más temprana permitida, escrita como HH:MM en formato de 24 horas. Por ejemplo, 00:00 . |
Cadena | No |
maxTime |
Define la última hora permitida, escrita como HH:MM, en formato de 24 horas. Por ejemplo, 13:00 .
|
Cadena | No |
placeholder |
Indicación para la entrada. Según la plantilla, el ejemplo placeholder es Pick a time in the morning , que refleja los valores minTime y maxTime de ejemplo de la plantilla de 00:00 y 12:00 .
|
Cadena | No |
autoSubmit |
Si se define en true , el formulario se envía parcialmente cuando el usuario ha introducido un valor para el campo. En FormSubmissionMessagePayload , partialSubmitField se define en el nombre del campo donde autoSubmit se define en true . Le recomendamos que configure el envío automático para campos condicionalmente dependientes. Por ejemplo, establezca esta propiedad cuando se muestre u oculte un campo en función del valor de otro campo o cuando los valores permitidos de un campo dependan del valor definido en otro campo. Al enviar automáticamente un campo del que dependen otros campos, el formulario se puede actualizar inmediatamente con los cambios relevantes en los campos dependientes.
|
Cadena | No |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | boolean |
No |
clientErrorMessage |
Mensaje utilizado por algunos clientes (MS Teams, Apple Business Messaging) cuando falla la validación del lado del cliente. Por ejemplo, Time must be in the morning . En Slack, esta propiedad solo se utiliza cuando el formulario editable se muestra en la página de conversación. No se muestra en un cuadro de diálogo modal.
|
Cadena | No |
serverErrorMessage |
Mensaje de error que se envía al cliente cuando falla la validación del lado del servidor de un valor de campo de formulario. Cuando se producen errores de este tipo en el servidor, se recomienda sustituir el mensaje de formulario actual, en lugar de un nuevo mensaje agregado a la conversación mediante la configuración de la propiedad channelExtensions para indicar que se debe sustituir el último mensaje de formulario.
|
Cadena | No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
El campo numberInput
- displayType: numberInput
minValue: 5
serverErrorMessage: "${(amountError.value)!''}"
maxValue: 500
defaultValue: "${(submittedFields.value.Amount)!''}"
name: Amount
label: Amount
placeholder: Enter the expense amount (do not include currency symbol)
clientErrorMessage: Amount is required and must be between 5 and 500 characters
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de campo | numberInput (una cadena)
|
Sí |
name |
Nombre único del campo dentro del formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
label |
Etiqueta descriptiva para el valor de fecha requerido por el usuario. | Cadena | No |
defaultValue |
El valor inicial. La plantilla define esta cadena como una expresión FreeMarker de Apache que devuelve una cadena vacía cuando el elemento de bolsa compuesta al que se hace referencia (representado por myNumber ) tiene un valor nulo. "${(submittedFields.value.myNumber)!''}" |
Cadena | No |
maxvalue |
El mayor número permitido. El canal de Slack no soporta la validación de valor mínimo o máximo. | Entero | No |
minvalue |
Un número mínimo permitido | Entero | No |
placeholder |
Indicación que describe cómo utilizar el campo. Este texto se muestra cuando el usuario aún no ha escrito un número. | Cadena | No |
autoSubmit |
Si se define en true , el formulario se envía parcialmente cuando el usuario ha introducido un valor para el campo. En FormSubmissionMessagePayload , partialSubmitField se define en el nombre del campo donde autoSubmit se define en true . Le recomendamos que configure el envío automático para campos condicionalmente dependientes. Por ejemplo, establezca esta propiedad cuando se muestre u oculte un campo en función del valor de otro campo o cuando los valores permitidos de un campo dependan del valor definido en otro campo. Al enviar automáticamente un campo del que dependen otros campos, el formulario se puede actualizar inmediatamente con los cambios relevantes en los campos dependientes.
|
Cadena | No |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | boolean |
No |
clientErrorMessage |
Mensaje utilizado por algunos clientes (MS Teams, Apple Business Messaging) cuando falla la validación del lado del cliente. En Slack, esta propiedad solo se utiliza cuando el formulario editable se muestra en la página de conversación. No se muestra en un cuadro de diálogo modal. | Cadena | No |
serverErrorMessage |
Mensaje de error que se envía al cliente cuando falla la validación del lado del servidor de un valor de campo de formulario. Cuando se producen errores de este tipo en el servidor, se recomienda sustituir el mensaje de formulario actual, en lugar de un nuevo mensaje agregado a la conversación mediante la configuración de la propiedad channelExtensions para indicar que se debe sustituir el último mensaje de formulario.
|
Cadena | No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
El campo singleSelect
- En el canal de Microsoft Teams, este elemento siempre se presenta como una lista (incluso cuando
layoutStyle
está definido enradioGroup
) porque las tarjetas adaptables no admiten botones de radio. - En el canal de Slack, este elemento se presenta como una lista en lugar de un grupo de radio cuando hay más de diez opciones.
submittedFields
generada (una variable de asignación) - displayType: singleSelect
defaultValue: "${(submittedFields.value.Type)!''}"
name: Type
options:
- iteratorVariable: option
iteratorExpression: "${expenseType.type.enumValues?split(',')}"
label: "${option}"
value: "${option}"
layoutStyle: list
label: Expense Type
placeholder: Select expense type
clientErrorMessage: Expense type is required
required: true
Consejo:
AunqueclientErrorMessage
es un atributo opcional, le recomendamos que lo defina para las aptitudes que se ejecutan en el canal de Microsoft Teams porque las tarjetas adaptables no generan un mensaje cuando falla la validación del cliente.
- autoSubmit: true
displayType: singleSelect
serverErrorMessage: "${(system.entityToResolve.value.validationErrors['Type'])!''}"
defaultValue: "${(expense.value.Type.value)!''}"
name: Type
options:
- iteratorVariable: option
iteratorExpression: "${expenseType.type.enumValues?split(',')}"
label: "${option}"
value: "${option}"
layoutStyle: list
label: Expense Type
placeholder: Select expense type
clientErrorMessage: Expense type is required
required: true
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de campo | singleSelect (una cadena)
|
Sí |
name |
Nombre único del campo dentro del formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
label |
Texto de etiqueta de campo que describe el contenido de la lista de selección única. | Cadena | Sí |
defaultValue |
Selección por defecto. La plantilla define este valor de cadena como una expresión FreeMarker de Apache que devuelve una cadena vacía cuando el elemento de bolsa compuesta al que se hace referencia (representado por mySingleSelect) tiene un valor nulo. "${(submittedFields.value.mySingleSelect)!''}" |
Cadena | No |
options |
Matriz de las opciones disponibles. La plantilla define estas opciones de forma estática con pares individuales label y value con valores de cadena, pero puede rellenar las opciones de selección de forma dinámica mediante las propiedades iteratorVariable y iteratorExpression : En este fragmento, los valores de tipo de gasto devueltos por las propiedades type y enum se secuencian en la lista mediante el uso de split incorporado.
|
Lista<opción> | Sí |
layoutStyle |
Cómo se presentan las opciones de selección única en el formulario. Se pueden agrupar como una lista (layoutStyle: list ) o como botones de radio (layoutStyle: radioGroup ).
|
Cadena | |
placeholder |
Indicación que describe cómo utilizar el campo. Se muestra cuando el usuario aún no ha realizado la selección. Por ejemplo:
Este marcador de posición se muestra solo para la representación de diseño de lista. |
Cadena | No |
autoSubmit |
Si se define en true , el formulario se envía parcialmente cuando el usuario ha introducido un valor para el campo. En FormSubmissionMessagePayload , partialSubmitField se define en el nombre del campo donde autoSubmit se define en true . Le recomendamos que configure el envío automático para campos condicionalmente dependientes. Por ejemplo, establezca esta propiedad cuando se muestre u oculte un campo en función del valor de otro campo o cuando los valores permitidos de un campo dependan del valor definido en otro campo. Al enviar automáticamente un campo del que dependen otros campos, el formulario se puede actualizar inmediatamente con los cambios relevantes en los campos dependientes.
|
Cadena | No |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | boolean |
No |
clientErrorMessage |
Mensaje utilizado por algunos clientes (MS Teams, Apple Business Messaging) cuando falla la validación del lado del cliente. En Slack, esta propiedad solo se utiliza cuando el formulario editable se muestra en la página de conversación. No se muestra en un cuadro de diálogo modal. | Cadena | No |
serverErrorMessage |
Mensaje de error que se envía al cliente cuando falla la validación del lado del servidor de un valor de campo de formulario. Cuando se producen errores de este tipo en el servidor, se recomienda sustituir el mensaje de formulario actual, en lugar de un nuevo mensaje agregado a la conversación mediante la configuración de la propiedad channelExtensions para indicar que se debe sustituir el último mensaje de formulario.
|
Cadena | No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
El campo multiSelect
- En el canal de Microsoft Teams, este elemento siempre se presenta como una lista (incluso cuando
layoutStyle
está definido encheckboxes
) porque las tarjetas adaptables no soportan casillas de control de selección múltiple. - En el canal de Slack, este elemento se presenta como una lista en lugar de un juego de casillas de control de selección múltiple cuando hay más de diez opciones.
submittedFields
generada (una asignación). - displayType: multiSelect
defaultValue: "${(submittedFields.value.Attendees?join(','))!''}"
name: Attendees
options:
- iteratorVariable: option
iteratorExpression: "${attendee.type.enumValues?split(',')}"
label: "${option}"
value: "${option}"
layoutStyle: list
label: Attendees
placeholder: Select one or more attendees
Este fragmento ilustra la referencia a una entidad de bolsa compuesta para rellenar la lista. - displayType: multiSelect
serverErrorMessage: "${(system.entityToResolve.value.validationErrors['Attendees'])!''}"
displayInForm: "${(((expense.value.Type.value)!'') == 'Meal')?then(true, false)}"
defaultValue: "${(expense.value.Attendees?map(a -> a.value)?join(','))!''}"
name: Attendees
options:
- iteratorVariable: option
iteratorExpression: "${attendee.type.enumValues?split(',')}"
label: "${option}"
value: "${option}"
layoutStyle: list
label: Attendees
placeholder: Select attendees
clientErrorMessage: Attendees are required when expense type is a Meal
required: true
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de campo | multiselect (una cadena)
|
Sí |
name |
Nombre único del campo dentro del formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
label |
Etiqueta de campo que describe el contenido de la lista multiSelect. | Cadena | Sí |
defaultValue |
Selección por defecto. La plantilla define esta cadena como una expresión FreeMarker de Apache que devuelve una cadena vacía cuando el elemento de bolsa compuesta al que se hace referencia (representado por myMultiSelect ) tiene un valor nulo.
|
List<String> |
No |
options |
Matriz de las opciones disponibles. La plantilla define estas opciones de forma estática con pares individuales label y value con valores de cadena, pero puede rellenar las opciones de selección de forma dinámica mediante las propiedades iteratorVariable y iteratorExpression :
|
List<option> |
Sí |
placeholder |
Indicación que describe cómo utilizar el campo. Se muestra cuando el usuario no ha realizado ninguna selección.
Este marcador de posición se muestra solo para el diseño de lista. No está disponible para los diseños de casilla de control. |
Cadena | No |
layoutStyle |
Diseño de las opciones multiSelect. Las opciones son list y checkboxes .
|
Cadena | No |
autoSubmit |
Si se define en true , el formulario se envía parcialmente cuando el usuario ha introducido un valor para el campo. En FormSubmissionMessagePayload , partialSubmitField se define en el nombre del campo donde autoSubmit se define en true . Le recomendamos que configure el envío automático para campos condicionalmente dependientes. Por ejemplo, establezca esta propiedad cuando se muestre u oculte un campo en función del valor de otro campo o cuando los valores permitidos de un campo dependan del valor definido en otro campo. Al enviar automáticamente un campo del que dependen otros campos, el formulario se puede actualizar inmediatamente con los cambios relevantes en los campos dependientes.
|
Cadena | No |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | booleano | No |
clientErrorMessage |
Mensaje utilizado por algunos clientes (MS Teams, Apple Business Messaging) cuando falla la validación del lado del cliente. En Slack, esta propiedad solo se utiliza cuando el formulario editable se muestra en la página de conversación. No se muestra en un cuadro de diálogo modal. | Cadena | No |
serverErrorMessage |
Mensaje de error que se envía al cliente cuando falla la validación del lado del servidor de un valor de campo de formulario. Cuando se producen errores de este tipo en el servidor, se recomienda sustituir el mensaje de formulario actual, en lugar de un nuevo mensaje agregado a la conversación mediante la configuración de la propiedad channelExtensions para indicar que se debe sustituir el último mensaje de formulario.
|
Cadena | No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
El campo de alternancia
En el canal de Slack, este elemento se representa como un par de botones de radio.
- displayType: toggle
defaultValue: "false"
name: TipIncluded
labelOn: Tip
label: Tip Included?
valueOff: "false"
labelOff: No Tip
valueOn: "true"
Este fragmento ilustra la captura de la entrada del usuario haciendo referencia a una variable de bolsa compuesta. - autoSubmit: true
displayType: toggle
defaultValue: "${(expense.value.TipIncluded.yesno)!'YES'}"
name: TipIncluded
labelOn: "Yes"
label: Tip Included?
valueOff: "NO"
labelOff: "No"
required: false
valueOn: "YES"
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de campo | toggle (una cadena)
|
Sí |
id |
Nombre único del campo dentro del formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
label |
Etiqueta que describe lo que sucede cuando se activa el conmutador. | Cadena | Sí |
defaultValue |
El valor inicial. Si desea que el conmutador esté activado inicialmente, defínalo con el valor valueOn . La plantilla define esta cadena como una expresión FreeMarker de Apache que activa el conmutador cuando el elemento de bolsa compuesta al que se hace referencia (representado por myToggle ) tiene un valor nulo.
|
Cadena | Sí |
valueOff |
El valor cuando el conmutador está desactivado. El valor por defecto, según la plantilla, es false (valueOff: "false" ).
|
Cadena | Sí |
valueOn |
El valor cuando se activa el conmutador. El valor por defecto de la plantilla es true (value On: "true" )
|
Cadena | Sí |
labelOn |
Una etiqueta para la posición de activación del conmutador | Cadena | No |
labelOff |
Etiqueta para la posición de desactivación del conmutador. | Cadena | No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
Campo de texto
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de elemento. | text (una cadena)
|
Sí |
name |
Nombre único del campo dentro del formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
value |
Valor sin procesar para el campo | Cadena | Sí |
width |
Porcentaje del ancho total disponible que debe ocupar el elemento en un diseño de tabla. El ancho restante, a partir de 100 menos los elementos con un ancho especificado, se divide por igual sobre los elementos sin un ancho especificado. | Entero | No |
alignment |
La alineación del valor con una columna de tabla. | left , center y right . El valor por defecto es right .
|
No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
Campo de enlace
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de campo | link (una cadena)
|
Sí |
name |
Nombre único del campo dentro del formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
value |
Dirección URL. Por ejemplo: http:www.oracle.com |
Cadena | Sí |
width |
Porcentaje del ancho total disponible que debe ocupar el elemento en un diseño de tabla. El ancho restante, a partir de 100 menos los elementos con un ancho especificado, se divide por igual sobre los elementos sin un ancho especificado. | Entero | No |
alignment |
La alineación del valor con una columna de tabla. Los valores permitidos son left , center y right . El valor por defecto es right .
|
Cadena | No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
EditFormMessagePayload
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
type |
Tipo de carga útil del mensaje. | editForm (una cadena)
|
Sí |
headerText |
Texto del encabezado que se muestra sobre el formulario. | Cadena | No |
footerText |
Texto que se muestra debajo del formulario y las acciones, pero encima de las acciones globales. | Cadena | No |
title |
El título del formulario | Cadena | No |
formRows |
Lista de filas mostradas en el formulario. | Lista <FormRow> |
No |
fields |
Lista de campos, tanto de solo lectura como editables. | Enumerar<field> |
Sí |
formColumns |
Número de columnas utilizadas para el diseño del formulario. El valor predeterminado es una columna. | Entero | No |
actions |
Una lista de acciones. | Enumerar<Action> |
No |
globalActions |
Lista de acciones globales. La representación de estas acciones es específica del canal. Por ejemplo, las acciones de Facebook las presenta reply_actions .
|
Enumerar<Action> |
No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
Envío automático de un campo
autoSubmit
definida en true
, el cliente envía un valor FormSubmissionMessagePayload
con la asignación submittedField
que contiene los valores de campo válidos que se han introducido hasta ahora o solo el valor del campo enviado automáticamente (la implantación es específica del canal). Los campos que aún no se hayan definido (independientemente de si son obligatorios) o los campos que violan una validación del lado del cliente no se incluyen en la asignación submittedField
. Si el campo de envío automático en sí contiene un valor que no es válido, FormSubmissionMessagePayload
no se envía y, en su lugar, se muestra el mensaje de error del cliente.
Microsoft Teams no soporta el envío automático.
SubmitFormAction
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
type |
Tipo de acción | submitForm (una cadena)
|
Sí |
postback |
La carga útil de devolución, que puede incluir una propiedad de acción para disparar la navegación. Recomendamos que el valor de esta propiedad se tome del objeto de devolución FormSubmissionMessagePayload .
|
JSONObject | No |
variable |
Nombre de la variable que almacena los valores enviados. Estos valores están en FormSubmissionMessagePayload .
|
Cadena | No |
processingMethod |
Instrucciones de proceso utilizadas por el componente Resolución Entidades para los valores de campo enviados. Puede definirlo en FormSubmissionMessagePayload , pero también puede definir:
|
Cadena | Sí |
label |
Etiqueta para la acción de visualización. | Cadena | Sí: debe especificar al menos un valor label o imageUrl .
|
imageUrl |
Imagen para la acción de visualización. | Cadena | Debe especificar al menos un valor label o imageUrl .
|
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee establecer la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
No |
FormSubmissionMessagePayload
SubmitFormAction
. Tiene las siguientes propiedades:
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
type |
Tipo de la carga útil. | "formSubmission" (un valor de cadena)
|
Sí |
submittedFields |
Pares clave-valor de los valores de campo enviados. La clave es el nombre (ID) del campo. | Asignar<Cadena, Objeto> | Sí |
postback |
La carga útil de devolución, que puede incluir una propiedad de acción para disparar la navegación. Recomendamos que el valor se tome de SubmitFormAction |
JSONObject | No |
partialSubmitField |
Nombre del campo que dispara un envío parcial del formulario. Los campos con el envío automático activado (autoSubmit: true ) pueden disparar un envío de formulario parcial.
|
Cadena | No |
Actualización del formulario de entrada
autosubmit
definido en true
o porque el usuario ha pulsado el botón de acción submitForm
, puede haber situaciones en las que el usuario no haya proporcionado toda la información necesaria o que algunos valores de campo contengan un valor no válido. En tal caso, el motor de diálogo enviará un nuevo EditFormMessagePayload
, pero ese mensaje debe sustituir al mensaje de formulario anterior. Para indicar al canal de cliente que sustituya el mensaje de formulario anterior, en lugar de agregar un nuevo mensaje de formulario a la conversación, configure la propiedad de extensión de canal replaceMessage
de la siguiente manera:- channel: ${system.channelType}
properties:
replaceMessage: "${system.message.messagePayload.type == 'formSubmission'}"
channelExtensions
de nivel raíz de la carga útil del componente de respuesta común:...,
"channelExtensions": { "replaceMessage": "true"}
TableMessagePayload
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
type |
Tipo de carga útil del mensaje | "table" |
Sí |
headings |
Lista de cabeceras de columna de tabla | Mostrar<TableHeading> | Sí |
rows |
Lista de filas de tabla | Mostrar<Fila> | Sí |
forms |
Lista de formularios | Lista | Sí |
formColumns |
Número de columnas utilizadas en el diseño de formulario. El valor por defecto es 1. | Entero | Sí |
paginationInfo |
Información de paginación que se puede utilizar para representar los botones de juego anterior o siguiente | PaginationInfo | Sí |
Fila
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
fields |
Una lista de campos de solo lectura | Mostrar <ReadOnly Field> | Sí |
selectAction |
Acciones que se ejecutan cuando se selecciona el formulario. Cuando los usuarios pasan el cursor sobre el formulario, la etiqueta de la acción, se muestra como una pista (cuando está soportada por el canal). | Acción | No |
channelExtensions |
Las propiedades de extensión específicas del canal asociadas al mensaje | Asignación<ChannelType>,JSONObject | No |
TableHeading
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
label |
La etiqueta de cabecera | Cadena | Sí |
width |
Ancho de la cabecera lable | Cadena | No |
alignment |
La alineación del valor de columna (left , right o center ). El valor por defecto es right .
|
Cadena | No |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. |
|
No |
PaginationInfo
Representa la información de paginación de los resultados en los objetos Table
, Form
y Table-Form
.
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
totalCount |
Recuento total de resultados | número | Sí |
rangeSize |
El tamaño de rango de los resultados por página | número | Sí |
status |
El mensaje de estado de paginación | Cadena | Sí |
currentRangeSize |
El tamaño del rango de resultados actual | número | Sí |
rangeStart |
Desplazamiento inicial del intervalo de resultados actual | número | Sí |
nextRangeSize |
El tamaño del siguiente rango de resultados | número | Sí |
hasPrevious |
Indica si hay un juego de resultados anterior | booleano | Sí |
hasNext |
Indica si hay un siguiente juego de resultados | booleano | Sí |
tableFormMessageLayout
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
type |
Tipo de carga útil del mensaje | "tableForm" |
Sí |
headings |
Lista de cabeceras de columna de tabla | Mostrar<TableHeading> | Sí |
rows |
Lista de filas de tabla | Mostrar<Fila> | Sí |
forms |
Lista de formularios | Lista | Sí |
formColumns |
Número de columnas utilizadas en el diseño de formulario. El valor por defecto es 1. | Entero | Sí |
showFormButtonLabel |
Etiqueta del botón que se utiliza para mostrar el diseño del formulario para una fila específica. | Cadena | Sí |
paginationInfo |
Información de paginación que se puede utilizar para representar los botones de juego anterior o siguiente | PaginationInfo | Sí |
Elemento de respuesta dataSet
El elemento de respuesta dataSet
permite crear tablas y formularios. Incluye las siguientes propiedades.
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
layout |
Estilo de diseño utilizado para representar dataSet. Los valores permitidos son table , form y tableForm .
|
Sí |
formColumns |
Número de columnas utilizadas para representar elementos en un diseño de formulario. Solo se aplica cuando el diseño es form o tableForm . El valor por defecto es 1 .
|
No |
showFormButtonLabel |
Etiqueta utilizada para abrir el cuadro de diálogo de formulario con un estilo de diseño tableForm . Actualmente solo se utiliza en canales de Slack. Los otros canales soportan la ampliación de la fila de tabla para mostrar los elementos adicionales en un diseño de formulario
|
No |
data |
Se utiliza para definir una entrada de datos en dataSet . Consulte DataSet data Properties. |
Sí |
Propiedades de datos de DataSet
La propiedad data
del elemento de respuesta dataSet
incluye las siguientes subpropiedades.
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
iteratorExpression |
Define una expresión de Freemarker que devuelve una lista de entradas para iterar, lo que permite agregar dinámicamente varias entradas de datos a dataSet .
|
No |
iteratorVariable |
Especifica el nombre de la variable de iterador que puede utilizar para hacer referencia a la entrada de datos actual dentro de la lista de entradas de datos que se repiten. | No |
rangeSize |
Número de entradas de datos que se mostrarán a la vez cuando haya especificado las propiedades iteratorExpression y iteratorVariable .
|
No |
visible |
Determina cómo se muestran los mensajes por canal y entrada de usuario. Consulte Propiedad visible. | No |
formTitle |
Título utilizado para el cuadro de diálogo de formulario en el diseño tableForm del canal de Slack. El valor por defecto es View details .
|
No |
items |
Elementos de datos que se deben mostrar para cada entrada de datos. Consulte DataSet Data Item Properties. | Sí |
DataSet Propiedades del elemento de datos
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
width |
Porcentaje (expresado como un entero) del ancho total disponible que el elemento debe utilizar en un diseño de tabla. El ancho restante, a partir de 100 menos los elementos con un ancho especificado, se divide por igual sobre los elementos sin un ancho especificado. | No |
alignment |
La alineación del valor con una columna de tabla. Los valores permitidos son left , center y right . El valor por defecto es left .
|
No |
displayType |
Tipo de visualización del elemento. Los valores permitidos son text y link . El valor por defecto es text .
|
No |
linkLabel |
Etiqueta utilizada para el hiperenlace cuando el tipo de visualización se define en link . El valor por defecto es el valor de la propiedad value del elemento.
|
No |
displayInTable |
Define si el elemento se debe mostrar como una columna en la tabla. Esta propiedad solo se aplica en el diseño tableForm . Toma false como valor por defecto.
|
No |
displayInForm |
Define si el elemento se debe mostrar como un campo en el formulario. Esta propiedad solo se aplica en el diseño tableForm . Toma false como valor por defecto.
|
No |
label |
Etiqueta del elemento de datos. | Sí |
value |
Valor del elemento de datos. | Sí |
Variable system.entityToResolve
system.entityToResolve
proporciona información sobre el estado actual del proceso de resolución de entidades, tal y como lo realizan los componentes Resolver entidades y Respuesta común. Normalmente, hará referencia a las propiedades de este valor de variable en los metadatos del componente de respuesta común cuando desee personalizar los mensajes. Puede utilizarla para definir la lógica del mensaje de error de una entidad, o para varias propiedades que pertenecen a los componentes Resolver entidades y Respuesta común. Agregue las siguientes propiedades para devolver el valor de la entidad actual:
userInput
prompt
promptCount
updatedEntities
outOfOrderMatches
disambiguationValues
enumValues
needShowMoreButton
rangeStartVar
nextRangeStart
prompt
, errorMessage
y reglas de validación.
Sorry,'${system.entityToResolve.value.userInput!'this'}' is not a valid pizza size.
system.entityToResolve
. Entre ellas, se encuentra un mensaje definido para la propiedad text
, que confirma una actualización realizada en un valor de entidad definido previamente mediante una directiva list
de Apache FreeMarker y la propiedad updatedEntities
. metadata:
responseItems:
- type: "text"
text: "<#list system.entityToResolve.value.updatedEntities>I have updated <#items as ent>${ent.description}<#sep> and </#items>. </#list><#list system.entityToResolve.value.outOfOrderMatches>I got <#items as ent>${ent.description}<#sep> and </#items>. </#list>"
- type: "text"
text: "${system.entityToResolve.value.prompt}"
actions:
- label: "${enumValue}"
type: "postback"
iteratorVariable: "system.entityToResolve.value.enumValues"
needShowMoreButton
, rangeStartVar
y nextRangeStart
: globalActions:
- label: "Show More"
type: "postback"
visible:
expression: "${system.entityToResolve.value.needShowMoreButton}"
payload:
action: "system.showMore"
variables:
${system.entityToResolve.value.rangeStartVar}: ${system.entityToResolve.value.nextRangeStart}
- label: "Cancel"
type: "postback"
visible:
onInvalidUserInput: true
payload:
action: "cancel"
La etiqueta Mostrar más debe incluir una propiedad system.showMore
(action: "system.showMore"
). De lo contrario, no funcionará.
Validación de mensaje de usuario
variable
. Por ejemplo, si la propiedad variable
está definida como un tipo primitivo (cadena, booleano, flotante, doble), estos componentes intentarán conciliar el valor con uno de los tipos primitivos. Cuando se define la propiedad de variable para una variable de tipo entidad, estos componentes llaman al motor de NLP para resolver el valor en una de las entidades. Sin embargo, cuando estos componentes no pueden validar un valor, el bot puede mostrar un mensaje de error.
Al hacer referencia a la variable system.invalidUserInput
, puede agregar un mensaje de error condicional a las respuestas del bot. Esta variable es un valor booleano, por lo que puede utilizarla como una condición con la directiva if
de FreeMarker para mostrar el mensaje solo cuando un usuario introduzca un valor no válido. De lo contrario, el mensaje estará oculto. El estado AskPizzaSize
de CrcPizzaBot al que se hace referencia en el siguiente fragmento muestra esto mediante la agregación de esta variable como condición en una plantilla FreeMarker evaluada por la directiva if
. Dado que se ha definido en true
, el bot agrega un mensaje de error al mensaje estándar (What size do you want? ) cuando el usuario introduce un valor no válido.
metadata:
responseItems:
- type: "text"
text: "<#if system.invalidUserInput == 'true'>Invalid size, please try again.\
\ </#if>What size do you want?"
name: "What size"
separateBubbles: true