Propiedad Metadata en Common Response Components
Utilice la propiedad Metadata en los componentes Common Response 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 cuando 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. | Número |
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. | Número |
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. | Número | |
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. | Número | |
iteratorExpression |
Expresión FreeMarker utilizada para mostrar valores de una matriz anidada en la variable especificada por la propiedad iteratorVariable .
Por ejemplo, si ha definido el valor de la propiedad |
Número | |
visible |
Determina cómo se muestran los mensajes por canal y entrada de usuario. Consulte La propiedad visible. | Número | |
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.
|
Número | |
rangeSize |
Número de elementos de respuesta que se mostrarán según lo especificado por las propiedades iteratorVariable y rangeStart .
|
Número | |
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.
|
Número |
Propiedades de metadatos de palabra clave
El siguiente fragmento muestra cómo se puede generar un juego de palabras clave 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:
|
Número |
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.
|
Número |
visible |
Determina cómo se muestran los mensajes de texto por canal y por entrada de usuario. Consulte La propiedad visible. | Número |
iteratorVariable |
Agrega de forma dinámica varias palabras clave iterando sobre los elementos almacenados en la variable especificada. Por ejemplo, iteratorVariable: "pizzaSize.type.enumValues" .
|
Número |
iteratorExpression |
Expresión FreeMarker utilizada para mostrar valores de una matriz anidada en 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 de palabras clave (por ejemplo, first,1st,one, second, 2nd, two, 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".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>" |
Número |
|
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:
|
Número |
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 ).
|
Número |
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.
|
Número |
entitiesToResolve |
Utilice esta propiedad para crear mensajes personalizados 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 ocultar (exclude ).
|
Número |
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. | Número | |
iteratorExpression |
Expresión FreeMarker utilizada para mostrar valores de una matriz anidada en la variable especificada por la propiedad iteratorVariable .
Por ejemplo, si ha definido el valor de la propiedad |
Número | |
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). | Número | |
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.
|
Número | |
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.
|
Número | |
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. | Número | |
visible |
Determina cómo se muestran los anexos por entrada de usuario y canal. Consulte La propiedad visible. | Número | |
payload |
Objeto de carga útil para los elementos de respuesta call , url y postback . Consulte Propiedades de la carga útil.
|
Número |
Propiedades de carga útil
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
action |
Transición action que se dispara cuando el usuario selecciona esta acción.
|
Número |
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.
|
Número |
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 a tener en cuenta para estas propiedades de metadatos de acción para 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 se mezclan dos tipos de acciones, el mensaje del bot puede tener un aspecto inconsistente, ya que solo algunas opciones se numeran. 
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 en 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. | Número | |
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. | Número | |
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.
|
Número | |
visible |
Determina cómo se muestran los mensajes de texto por canal y por entrada de usuario. Consulte La propiedad visible. | Número | |
actions |
Acción de devolución. En caso de compatibilidad solo con texto, puede definir palabras clave. | Número |
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>" .
|
Número | |
title |
Título de la tarjeta | Sí | |
description |
Descripción de la tarjeta, que se muestra como un subtítulo. | Número | |
imageUrl |
URL de la imagen que se muestra bajo el subtítulo. | Número | |
cardUrl |
URL de un sitio web. Se muestra como un hiperenlace, que los usuarios tocan para abrir, en la tarjeta. | Número | |
iteratorExpression |
Expresión FreeMarker utilizada para mostrar valores de una matriz anidada en 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} .
|
Número | |
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.
|
Número | |
rangeSize |
Número de tarjetas mostradas como se especifica en las propiedades iteratorVariable y rangeStart .
|
Número | |
visible |
Determina cómo se representan las etiquetas de acción por canal y entrada de usuario. Consulte La propiedad visible. | Número |
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 cards-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 |
Estilo de presentación del botón | "primary" , "danger" , "default" |
Número |
displayType |
Representación del tipo de elemento de acción (botón, enlace o icono) | "button" , "link" , "icon" |
Número |
channelExtensions |
Propiedades de extensión específicas del canal asociadas a la acción | JSONObject | Número |
Campo
Field
contiene las siguientes propiedades:
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de campo | String |
Número |
label |
La etiqueta de campo | String |
Sí |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. | Map<ChannelType, JSONObject> |
Número |
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 |
Número |
labelFontSize |
Tamaño de fuente utilizado para la etiqueta de campo. Los valores permitidos son small , medium (valor por defecto) y large .
|
String |
Número |
labelFontWeight |
Peso de fuente utilizado para la etiqueta de campo. Los valores permitidos son light , medium (valor por defecto) y negrita.
|
String |
Número |
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 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 | Número |
alignment |
Alineación del valor dentro de una columna de tabla. La alineación por defecto es right .
|
"left" , "center" y "right" |
Número |
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 de ReadOnly field. 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 y se agregan puntos suspensivos para indicar que el valor se ha truncado. | Valor entero | Número |
fontSize |
Tamaño de fuente utilizado para el valor field . Los valores permitidos son small , medium (valor por defecto) y large .
|
Cadena | Número |
fontWeight |
Peso de fuente utilizado para el valor field . Los valores permitidos son ligero, medio (valor predeterminado) y negrita.
|
Cadena | Número |
LinkField
LinkField
hereda todas las propiedades de ReadOnly field. Tiene las siguientes propiedades adicionales:
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
linkLabel |
Etiqueta utilizada para el hiperenlace | Cadena | Número |
imageUrl |
URL de la imagen que abre un enlace al hacer clic. | Cadena | Número |
MediaField
MediaField
hereda todas las propiedades de ReadOnly field. Tiene las siguientes propiedades adicionales:
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
mediaType |
Tipo de medio de campo ("video" , "audio" , "image" )
|
String |
Sí |
ActionField
ActionField
hereda todas las propiedades de ReadOnly field. Tiene las siguientes propiedades adicionales:
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
action |
Acción que se debe realizar cuando el usuario hace clic en el botón de acción. | Acción | Sí |
Formulario
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
title |
Título que se muestra encima del diseño del formulario | Cadena | Número |
fields |
Lista de campos de solo lectura en el formulario | Lista<ReadOnlyField> | Sí |
formRows |
Lista de filas mostradas en el formulario. | Lista<FormRow> | |
actions |
Una lista de acciones | Lista<Acción> | Número |
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 pista (cuando está soportada por el canal). | Acción | Número |
channelExtensions |
Propiedades de extensión específicas del canal asociadas al mensaje | JSONObject | Número |
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 mouse sobre el formulario, la etiqueta de la acción, se muestra como una pista (cuando está soportada por el canal). | Acción | Número |
separator |
Al definir esta propiedad en true, se inserta una línea de separador por encima del contenido de la fila del formulario. | Booleana | Número |
channelExtensions |
Propiedades de extensión específicas del canal asociadas al mensaje | JSONObject | Número |
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 de solo lectura y editables cuando se utiliza FormRow en EditFormMessagePayload .
|
Lista<Campo> | Sí |
verticalAlignment |
Alineación vertical de la columna con respecto a las demás columnas de la misma fila del formulario. | Cadena | Número |
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 representar cualquier columna de ancho automático. Si hay varias columnas definidas en stretch , dividen uniformemente el ancho restante.
|
Cadena | Número |
channelExtensions |
Propiedades de extensión específicas del canal asociadas al mensaje | JSONObject | Número |
Elemento de respuesta editForm
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
type |
Tipo de elemento de respuesta. | editform |
Sí |
title |
El título del formulario | Cadena | Número |
items |
Lista de campos, tanto de sólo lectura como editables. | Lista<field> |
Sí |
formColumns |
Número de columnas utilizadas para el diseño del formulario. El valor predeterminado es una columna. | Entero | Número |
actions |
Una lista de acciones relacionadas con tarjetas. | Lista<Action> |
Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee definir la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
Número |
El campo textInput
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 elemento de bolsa compuesta al que se hace referencia puede ser 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 para el campo en el formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
label |
La etiqueta de campo | Cadena | Número |
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 | Número |
validationRegularExpression |
Expresión regular que especifica el formato de la entrada de texto. | Cadena | Número |
multiline |
La definición de esta propiedad en true permite a los usuarios introducir varias líneas de texto.
|
Booleana | Número |
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 | Número |
maxLength |
Número máximo o límite de los caracteres. | Entero | Número |
inputStyle |
El formato que se aplica en el cliente. Los formatos son:
|
Cadena | Número |
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 | Número |
autoSubmit |
Cuando 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 en el que autoSubmit se define en true . Recomendamos que configure el envío automático para campos dependientes condicionalmente. Por ejemplo, establezca esta propiedad cuando un campo deba mostrarse u ocultarse 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 | Número |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | boolean |
Número |
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 | Número |
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 produzcan errores de este tipo en el servidor, recomendamos que el mensaje del formulario actual se reemplace, 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 del formulario.
|
Cadena | Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee definir la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
Número |
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 para el campo en el formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
label |
Etiqueta descriptiva. | Cadena | Número |
defaultValue |
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 | Número |
minDate |
La primera fecha del rango de días permitidos. El canal de Slack no admite esta validación del lado del cliente. | Cadena | Número |
maxDate |
La última fecha del 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 | Número |
placeholder |
Descripción de la entrada prevista que se muestra cuando el usuario aún no ha seleccionado una fecha. | Cadena | Número |
autoSubmit |
Cuando 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 en el que autoSubmit se define en true . Recomendamos que configure el envío automático para campos dependientes condicionalmente. Por ejemplo, establezca esta propiedad cuando un campo deba mostrarse u ocultarse 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 | Número |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | booleano | Número |
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 | Número |
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 produzcan errores de este tipo en el servidor, recomendamos que el mensaje del formulario actual se reemplace, 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 del formulario.
|
Cadena | Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee definir la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
Número |
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 para el campo en el 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 |
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 | Número |
minTime |
Define la primera hora permitida, escrita como HH:MM en formato de 24 horas. Por ejemplo, 00:00 . |
Cadena | Número |
maxTime |
Define la última hora permitida, escrita como HH:MM, en formato de 24 horas. Por ejemplo, 13:00 .
|
Cadena | Número |
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 | Número |
autoSubmit |
Cuando 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 en el que autoSubmit se define en true . Recomendamos que configure el envío automático para campos dependientes condicionalmente. Por ejemplo, establezca esta propiedad cuando un campo deba mostrarse u ocultarse 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 | Número |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | boolean |
Número |
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 | Número |
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 produzcan errores de este tipo en el servidor, recomendamos que el mensaje del formulario actual se reemplace, 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 del formulario.
|
Cadena | Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee definir la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
Número |
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 para el campo en el 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 | Número |
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 | Número |
maxvalue |
El mayor número posible. El canal de Slack no admite la validación de valor mínimo o máximo. | Entero | Número |
minvalue |
Número mínimo permitido | Entero | Número |
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 | Número |
autoSubmit |
Cuando 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 en el que autoSubmit se define en true . Recomendamos que configure el envío automático para campos dependientes condicionalmente. Por ejemplo, establezca esta propiedad cuando un campo deba mostrarse u ocultarse 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 | Número |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | boolean |
Número |
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 | Número |
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 produzcan errores de este tipo en el servidor, recomendamos que el mensaje del formulario actual se reemplace, 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 del formulario.
|
Cadena | Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee definir la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
Número |
El campo singleSelect
- En el canal de Microsoft Teams, este elemento siempre aparece como una lista (incluso cuando
layoutStyle
está definido enradioGroup
) porque las tarjetas adaptables no soportan 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, 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 lado 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 para el campo en el 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 | Número |
options |
Una 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 elemento incorporado split .
|
Lista<option> | 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 presentación del diseño de lista. |
Cadena | Número |
autoSubmit |
Cuando 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 en el que autoSubmit se define en true . Recomendamos que configure el envío automático para campos dependientes condicionalmente. Por ejemplo, establezca esta propiedad cuando un campo deba mostrarse u ocultarse 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 | Número |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | boolean |
Número |
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 | Número |
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 produzcan errores de este tipo en el servidor, recomendamos que el mensaje del formulario actual se reemplace, 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 del formulario.
|
Cadena | Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee definir la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
Número |
El campo multiSelect
- En el canal de Microsoft Teams, este elemento siempre aparece 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 para el campo en el 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> |
Número |
options |
Una 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 diseños de casillas de control. |
Cadena | Número |
layoutStyle |
Diseño de las opciones multiSelect. Las opciones son list y checkboxes .
|
Cadena | Número |
autoSubmit |
Cuando 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 en el que autoSubmit se define en true . Recomendamos que configure el envío automático para campos dependientes condicionalmente. Por ejemplo, establezca esta propiedad cuando un campo deba mostrarse u ocultarse 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 | Número |
required |
Si el envío del formulario requiere la entrada del usuario en este campo | booleano | Número |
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 | Número |
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 produzcan errores de este tipo en el servidor, recomendamos que el mensaje del formulario actual se reemplace, 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 del formulario.
|
Cadena | Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee definir la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
Número |
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 entradas de 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 para el campo en el 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 la conmutación. | 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 se desactiva la conmutación. El valor por defecto, por 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 el conmutador en la posición | Cadena | Número |
labelOff |
Etiqueta para la posición de desactivación del conmutador. | Cadena | Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee definir la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
Número |
Campo de texto
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de elemento. | text (una cadena)
|
Sí |
name |
Nombre único para el campo en el formulario de entrada. Este nombre se utiliza como identificador en tiempo de ejecución. | Cadena | Sí |
value |
El valor sin formato del 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 | Número |
alignment |
Alineación del valor con una columna de tabla. | left , center y right . El valor por defecto es right .
|
Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee definir la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
Número |
Campo de enlace
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
displayType |
Tipo de campo | link (una cadena)
|
Sí |
name |
Nombre único para el campo en el 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 | Número |
alignment |
Alineación del valor con una columna de tabla. Los valores permitidos son left , center y right . El valor por defecto es right .
|
Cadena | Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee definir la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
Número |
EditFormMessagePayload
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
type |
Tipo de carga útil del mensaje. | editForm (una cadena)
|
Sí |
headerText |
Texto de cabecera que se muestra encima del formulario. | Cadena | Número |
footerText |
Texto que se muestra debajo del formulario y las acciones, pero por encima de las acciones globales. | Cadena | Número |
title |
El título del formulario | Cadena | Número |
formRows |
Lista de filas mostradas en el formulario. | Lista<FormRow> |
Número |
fields |
Lista de campos, tanto de sólo lectura como editables. | Lista<field> |
Sí |
formColumns |
Número de columnas utilizadas para el diseño del formulario. El valor predeterminado es una columna. | Entero | Número |
actions |
Una lista de acciones. | Lista<Action> |
Número |
globalActions |
Lista de acciones globales. La representación de estas acciones es específica del canal. Por ejemplo, las acciones en Facebook son representadas por reply_actions .
|
Lista<Action> |
Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. Por ejemplo, puede que desee definir la altura máxima para Facebook Messenger. | Mapa<ChannelType, JSONObject> |
Número |
Envío automático de un campo
autoSubmit
definida en true
, el cliente envía un FormSubmissionMessagePayload
con el mapa submittedField
que contiene los valores de campo válidos que se han introducido hasta ahora o solo el valor del campo de envío automático (la implantación es específica del canal). Los campos que aún no se han definido (independientemente de si son obligatorios) o los campos que violan una validación del lado del cliente no se incluyen en el mapa submittedField
. Si el campo enviado automáticamente contiene un valor que no es válido, no se envía FormSubmissionMessagePayload
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 |
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 | Número |
variable |
Nombre de la variable que almacena los valores enviados. Estos valores están en FormSubmissionMessagePayload .
|
Cadena | Número |
processingMethod |
Instrucciones de proceso utilizadas por el componente Resolución de 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> |
Número |
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 | Número |
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 parcial de formulario.
|
Cadena | Número |
Actualización del formulario de entrada
autosubmit
definido en true
o porque el usuario ha pulsado el botón de acción submitForm
, puede que haya 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 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 |
Una lista de encabezados de columna de tabla | Lista<TableHeading> | Sí |
rows |
Una lista de filas de tabla | Lista<Fila> | Sí |
forms |
Lista de formularios | Lista | Sí |
formColumns |
Número de columnas utilizadas en el diseño del formulario. El valor por defecto es 1. | Entero | Sí |
paginationInfo |
Información de paginación que se puede utilizar para representar los botones del juego anterior o siguiente | PaginationInfo | Sí |
Fila
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
fields |
Una lista de campos de solo lectura | Mostrar <campo ReadOnly> | Sí |
selectAction |
Acciones que se ejecutan cuando se selecciona el formulario. Cuando los usuarios pasan el mouse sobre el formulario, la etiqueta de la acción, se muestra como una pista (cuando está soportada por el canal). | Acción | Número |
channelExtensions |
Propiedades de extensión específicas del canal asociadas al mensaje | Asignación<ChannelType>,JSONObject | Número |
TableHeading
Nombre | Descripción | Tipo | ¿Obligatoria? |
---|---|---|---|
label |
Etiqueta de cabecera | Cadena | Sí |
width |
Ancho de la etiqueta de cabecera | Cadena | Número |
alignment |
La alineación del valor de columna (left , right o center ). El valor por defecto es right .
|
Cadena | Número |
channelExtensions |
Conjunto de propiedades de extensión específicas del canal. |
|
Número |
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 |
Tamaño de rango de los resultados por página | número | Sí |
status |
Mensaje de estado de paginación | Cadena | Sí |
currentRangeSize |
El tamaño del rango actual de resultados | número | Sí |
rangeStart |
El desplazamiento inicial del rango actual de resultados | número | Sí |
nextRangeSize |
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 |
Una lista de encabezados de columna de tabla | Lista<TableHeading> | Sí |
rows |
Una lista de filas de tabla | Mostrar<Fila> | Sí |
forms |
Lista de formularios | Lista | Sí |
formColumns |
Número de columnas utilizadas en el diseño del 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 del 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 . Por defecto, es 1 .
|
Número |
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 demás canales soportan la ampliación de la fila de la tabla para mostrar los elementos adicionales en un diseño de formulario
|
Número |
data |
Se utiliza para definir una entrada de datos en dataSet . Consulte DataSet data Properties. |
Sí |
Propiedades de datos 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 .
|
Número |
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 iteran. | Número |
rangeSize |
Número de entradas de datos que se mostrarán a la vez cuando haya especificado las propiedades iteratorExpression y iteratorVariable .
|
Número |
visible |
Determina cómo se muestran los mensajes por canal y entrada de usuario. Consulte La propiedad visible. | Número |
formTitle |
Título utilizado para el cuadro de diálogo del formulario en el diseño tableForm en el canal de Slack. El valor por defecto es View details .
|
Número |
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 debe utilizar 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. | Número |
alignment |
Alineación del valor con una columna de tabla. Los valores permitidos son left , center y right . El valor por defecto es left .
|
Número |
displayType |
Tipo de visualización del elemento. Los valores permitidos son text y link . El valor por defecto es text .
|
Número |
linkLabel |
Etiqueta utilizada para el hiperenlace cuando el tipo de visualización se define en link . El valor predeterminado es el valor de la propiedad value del elemento.
|
Número |
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.
|
Número |
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.
|
Número |
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 según lo realizado por 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 diversas 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, cuando la propiedad variable
está definida como un tipo primitivo (string, boolean, float, double), estos componentes intentan 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