Proprietà metadati nei componenti di risposta comuni
La proprietà Metadati viene utilizzata nei componenti Risposta comune per definire la modalità di visualizzazione dei messaggi agli utenti.
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"
Proprietà | descrizione; | Richiesto? |
---|---|---|
responseItems |
Una lista di elementi di risposta, ognuno dei quali restituisce un nuovo messaggio inviato al client di chat (o più messaggi quando si imposta l'iterazione per l'elemento di risposta utilizzando la proprietà iteratorVariable o una combinazione delle proprietà iteratorVariable e iteratorExpression ). Definire questi elementi di risposta utilizzando i seguenti valori:
|
Sì |
globalActions |
Elenco di azioni globali, ovvero non specifiche di nessuno degli elementi di risposta. Queste azioni vengono in genere visualizzate nella parte inferiore della finestra di chat. In Facebook Messenger, ad esempio, queste opzioni sono chiamate risposte rapide. | No |
keywords |
Lista di parole chiave che corrispondono alle parole chiave immesse da un utente a un payload di postback corrispondente. Le parole chiave supportano i canali di solo testo in cui i pulsanti di azione non vengono visualizzati correttamente. | No |
Proprietà | descrizione; | Richiesto? | |
---|---|---|---|
type |
Tipo di elemento di risposta che determina il formato del messaggio. È possibile impostare un messaggio come text , attachment o cards .
|
Sì | |
name |
Nome dell'elemento di risposta utilizzato internamente. Non viene utilizzato in runtime. | No | |
iteratorVariable |
Aggiunge in modo dinamico più elementi di testo, allegati o parole chiave alla risposta iterando gli elementi della variabile. | No | |
iteratorExpression |
Espressione FreeMarker utilizzata per visualizzare i valori di un array nidificato all'interno della variabile specificata dalla proprietà iteratorVariable .
Ad esempio, se si è impostato il valore della proprietà |
No | |
visible |
Determina la modalità di visualizzazione dei messaggi per input e canale utente. Vedere La proprietà visibile. | No | |
rangeStart |
Se è stato specificato un valore iteratorVariable , è possibile eliminare un subset di elementi di risposta specificando la proprietà rangeStart in combinazione con la proprietà rangeSize . È possibile immettere un valore non modificabile o utilizzare un'espressione FreeMarker che fa riferimento a una variabile di flusso della finestra di dialogo che contiene l'inizio dell'intervallo. Utilizzando una variabile rangeStart , è possibile passare al set di dati successivo impostando la variabile rangeStart nel payload dell'opzione Sfoglia. È possibile vedere un esempio delle proprietà rangeStart e rangeSize nello stato OrderPizza di CrcPizzaBot.
|
No | |
rangeSize |
Il numero di elementi di risposta che verranno visualizzati come specificato dalle proprietà iteratorVariable e rangeStart .
|
No | |
channelCustomProperties |
Elenco di proprietà che attivano funzioni specifiche di un canale. Poiché queste funzioni sono specifiche della piattaforma, sono esterne al componente Risposta comune e pertanto non possono essere controllate dalle proprietà a livello di elemento radice o di elemento di risposta del componente. Potete trovare un esempio di questa proprietà nello stato OrderPizza di CrcPizzaBot. Per informazioni dettagliate sull'uso di channelCustomProperties , nonché sulle proprietà disponibili per ciascun canale, vedere Estensioni specifiche del canale.
|
No |
Proprietà metadati parola chiave
Il seguente snippet illustra come è possibile generare un set di parole chiave da una variabile
pizzaSize
che contiene la lista di valori definita per un'entità 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"
Proprietà | descrizione; | Richiesto? |
---|---|---|
keyword |
Lista di parole chiave che attivano il payload di postback definito dalla proprietà payload . È possibile utilizzare un'espressione FreeMarker per restituire le parole chiave generate dalla proprietà interatorVariable dalle entità dell'elenco di valori utilizzando le proprietà type e enumValues (iteratorVariable: "pizzaSize.type.enumValues" ).
|
Sì |
label |
L'etichetta dell'azione, che può essere una stringa di testo o un'espressione FreeMarker Apache. Ad esempio, un'espressione che indica una parola chiave di due lettere è la seguente:
|
No |
skipAutoNumber |
Impostare su true per sopprimere la numerazione automatica per un elemento chiave quando l'opzione Abilita numerazione automatica su schede è impostata a livello di assistente digitale o di skill.
|
No |
visible |
Determina la modalità di visualizzazione dei messaggi di testo per input e canale utente. Vedere La proprietà visibile | No |
iteratorVariable |
Aggiunge dinamicamente più parole chiave iterando gli elementi memorizzati nella variabile specificata. Ad esempio, iteratorVariable: "pizzaSize.type.enumValues" .
|
No |
iteratorExpression |
Espressione FreeMarker utilizzata per visualizzare i valori di un array nidificato all'interno della variabile specificata dalla proprietà iteratorVariable .
Ad esempio, se si è impostato il valore della proprietà |
|
payload |
Il payload di postback, che ha le seguenti proprietà.
|
Estrai parole chiave dai messaggi
Mentre il componente attiva un postback quando gli utenti immettono un numero, è possibile estendere la competenza per supportare input più ampi come Primo, o per provare il 1° elemento. A tale scopo, creare una variabile di array per le parole chiave (ad esempio first,1st,one, second, 2nd, two e così via).
keyword
nei metadati. Ad esempio, questo è ciò che potrebbe apparire in un flusso per ordinare 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>"
In questa definizione l'ultima parola chiave si basa sull'inizio dell'intervallo corrente. È impostato sull'ultima pizza attualmente visualizzata, in base al numero di volte in cui il cliente ha immesso più pizza.La proprietà visibile
visible
facoltativa.
Proprietà | descrizione; | Richiesto? |
---|---|---|
expression |
La direttiva FreeMarker di Apache che mostra o nasconde in modo condizionale testo, scheda o allegati. Ad esempio, lo stato OrderPizza di CrcPizzaBot utilizza ""<#if cardsRangeStart?number+4 < pizzas.value?size && textOnly=='false'>true<#else>false</#if>" |
No |
|
Per include e exclude , immettere un elenco separato da virgole dei tipi di canale per i quali deve essere visualizzato il testo, la scheda o l'allegato (include ) o nascosto (exclude ). I valori di canale validi sono:
|
No |
onInvalidUserInput |
Flag booleano che mostra l'elemento o l'allegato di testo quando l'utente immette un input valido (value=false ) o quando l'utente immette un input non valido (value=true ).
|
No |
onDisambiguation |
Se true , mostra solo l'elemento di risposta, la scheda o l'azione quando viene visualizzato un prompt di disambiguazione.
|
No |
entitiesToResolve |
Utilizzare questa proprietà per creare un messaggio personalizzato per ogni articolo sacchetto composito. Aggiungere una lista delimitata da virgole di nomi di elementi sacchetto composto per i quali l'elemento di risposta deve essere visualizzato (include ) o nascosto (exclude ).
|
No |
Proprietà metadati azione
È possibile definire azioni per una o più schede, un tipo di risposta o azioni globali per un componente, ad esempio le azioni di risposta rapida di Facebook. Impossibile configurare le azioni per i messaggi allegato.
Proprietà | descrizione; | Richiesto? | |
---|---|---|---|
type |
Il tipo di azione:
|
Sì | |
label |
Un'etichetta per l'azione. Per localizzare questa etichetta, è possibile utilizzare un'espressione FreeMarker per fare riferimento a una voce nel bundle di risorse del bot. | Sì | |
iteratorVariable |
Questa opzione consente di aggiungere più azioni iterando gli elementi memorizzati nella variabile specificata. Impossibile utilizzare questa proprietà con le azioni di condivisione e ubicazione. | No | |
iteratorExpression |
Espressione FreeMarker utilizzata per visualizzare i valori di un array nidificato all'interno della variabile specificata dalla proprietà iteratorVariable .
Ad esempio, se si è impostato il valore della proprietà |
No | |
imageUrl |
L'URL dell'immagine utilizzata per un'icona che identifica un'azione. È possibile utilizzare questa proprietà per visualizzare un'icona per il pulsante di risposta rapida di Facebook (che è un'azione globale). | No | |
skipAutoNumbering |
Quando è impostata su true , questa proprietà esclude l'applicazione della numerazione automatica di una singola azione postback. È possibile utilizzare questa proprietà per una risposta di testo o carta.
|
No | |
channelCustomProperties |
Elenco di proprietà che alcune funzionalità specifiche del canale trigger non sono controllate dalle proprietà dell'azione standard. Puoi trovare un esempio nello stato OrderPizza di CrcPizzaBot.
|
No | |
name |
Nome che identifica l'azione sulla piattaforma Digital Assistant. Questo nome viene utilizzato internamente e non viene visualizzato nel messaggio. | No | |
visible |
Determina la modalità di visualizzazione degli allegati per input e canale utente. Vedere La proprietà visibile. | No | |
payload |
Oggetto payload per gli elementi di risposta call , url e postback . Vedere Proprietà payload.
|
No |
Proprietà payload
Proprietà | descrizione; | Richiesto? |
---|---|---|
action |
Transizione action che viene attivata quando l'utente sceglie questa azione.
|
No |
variables |
Imposta i valori per le variabili quando si imposta il tipo di azione su postback e si aggiungono le proprietà del payload denominate per le variabili. Quando l'utente tocca l'azione, le variabili vengono impostate sui valori specificati da questa proprietà.
|
No |
url |
L'URL del sito Web che si apre quando gli utenti toccano questa azione. | Questa proprietà è obbligatoria per il tipo di azione url .
|
phoneNumber |
Il numero di telefono chiamato quando un utente tocca questa azione. | Questa proprietà è obbligatoria per il tipo di azione call .
|
Come vengono visualizzate le azioni non di postback sui canali di solo testo?
Alcune cose da notare per queste proprietà dei metadati di azione per i componenti di risposta comune.
-
Se il canale di solo testo supporta i collegamenti ipertestuali, è possibile utilizzarli al posto dei pulsanti quando il tipo di azione globale è
url
ocall
. -
I tipi di azione
share
elocation
verranno ignorati o non verranno visualizzati.
Suggerimento
Le azioni non di postback comeurl
e call
non possono essere numerate, perché non vengono passate al motore di dialogo e quindi non possono essere attivate dalle parole chiave. Di conseguenza, se si mischiano i due tipi di azioni, il messaggio del bot può apparire incoerente perché solo alcune opzioni vengono numerate.
Utilizzando l'SDK, è possibile creare output più coerenti disabilitando la numerazione automatica per il postback. Ad esempio:
{
"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 di risposta di testo
Di seguito sono riportate le proprietà per gli elementi di risposta di testo nei componenti Risposta comune.
Proprietà | descrizione; | Richiesto? | |
---|---|---|---|
text |
Testo che richiede all'utente. | Sì | |
iteratorExpression |
Espressione FreeMarker utilizzata per visualizzare i valori di un array nidificato all'interno della variabile specificata dalla proprietà iteratorVariable .
Ad esempio, se si è impostato il valore della proprietà |
||
iteratorVariable |
Aggiunge in modo dinamico più elementi di testo, allegati o parole chiave alla risposta iterando gli elementi della variabile. | No | |
footerText |
Testo visualizzato nella parte inferiore del messaggio (sotto le eventuali azioni testo e pulsante). Aggiungere un piè di pagina per migliorare l'output sui canali di solo testo. Come descritto in Piè di pagina, è possibile utilizzare le espressioni FreeMarker per condizionare il testo del piè di pagina per i canali di solo testo. | No | |
separateBubbles |
È possibile definire questa proprietà se si definisce anche la proprietà iteratorVariable . Quando si imposta questa proprietà su true , ogni elemento di testo viene inviato come messaggio separato, ad esempio Pizze e Pastas negli stati ShowMenu e OrderPizza di CrcPizzaBot. Se lo si imposta su false , viene inviato un singolo messaggio di testo, in cui ogni elemento di testo inizia su una nuova riga.
|
No | |
visible |
Determina la modalità di visualizzazione dei messaggi di testo per input e canale utente. Vedere La proprietà visibile. | No | |
actions |
Azione di postback. Per il supporto solo di testo, è possibile definire parole chiave. | No |
showMenu
di CrcPizzaBot:
Poiché assegna un nome a postback
come azione, consente alla competenza di gestire un comportamento utente imprevisto, ad esempio la selezione di un elemento da un messaggio meno recente invece di selezionarne uno dal messaggio più recente.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 risposta carta
Di seguito sono riportate le proprietà degli elementi di risposta della scheda nei componenti di risposta comune.
Proprietà | descrizione; | Richiesto? | |
---|---|---|---|
cardLayout |
Il layout della scheda: horizontal (impostazione predefinita) e vertical .
|
Sì | |
headerText |
Testo intestazione. Ad esempio: headerText: "<#if cardsRangeStart?number == 0>Here are our pizzas you can order today:<#else>Some more pizzas for you:</#if>" .
|
No | |
title |
Il titolo della scheda | Sì | |
description |
La descrizione della scheda, visualizzata come sottotitolo. | No | |
imageUrl |
L'URL dell'immagine visualizzata sotto il sottotitolo. | No | |
cardUrl |
L'URL di un sito Web. Viene visualizzato come collegamento ipertestuale sulla scheda, che gli utenti toccano per aprire. | No | |
iteratorExpression |
Espressione FreeMarker utilizzata per visualizzare i valori di un array nidificato all'interno della variabile specificata dalla proprietà iteratorVariable .
Ad esempio, se si è impostato il valore della proprietà |
||
iteratorVariable |
Aggiunge dinamicamente più schede alla risposta iterando gli elementi memorizzati nella variabile specificata per questa proprietà. Sebbene la variabile venga definita come stringa, contiene un array JSON quando viene utilizzata come variabile iteratore. È possibile fare riferimento alle proprietà in un oggetto dell'array con un'espressione come ${iteratorVarName.propertyName} . Ad esempio, con una variabile iteratore denominata pizzas , è possibile fare riferimento alla proprietà nome di una pizza utilizzando l'espressione ${pizzas.name} .
|
No | |
rangeStart |
Se è stato specificato un valore iteratorVariable , è possibile eliminare un sottoinsieme di schede specificando la proprietà rangeStart in combinazione con la proprietà rangeSize . È possibile immettere un valore non modificabile o utilizzare un'espressione FreeMarker che fa riferimento a una variabile che contiene l'inizio dell'intervallo. Utilizzando una variabile rangeStart , è possibile passare al set di dati successivo impostando la variabile rangeStart nel payload di un'opzione Sfoglia.
|
No | |
rangeSize |
Il numero di schede che verranno visualizzate come specificato dalle proprietà iteratorVariable e rangeStart .
|
No | |
visible |
Determina il modo in cui le etichette delle azioni vengono rese in base all'input e al canale dell'utente. Vedere La proprietà visibile. | No |
È possibile assegnare un set di azioni specifiche per una scheda specifica o un elenco di azioni associate alla fine dell'elenco di carte.
OrderPizza
di CrcPizzaBot include una definizione di elemento di risposta della scheda, come mostrato nel seguente snippet: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')}"
Come vengono visualizzate le schede sui canali solo testo?
I componenti di risposta comune visualizzano le risposte come schede. Quando lo skill viene eseguito in un canale di solo testo, alcune delle proprietà elemento risposta scheda si comportano in modo diverso. Di seguito sono riportate alcune considerazioni.
-
Non vi è scorrimento verticale o orizzontale (comportamenti impostati dall'opzione
cardLayout
). Tutte le schede vengono visualizzate all'interno di una singola bolla di messaggi, che può includere un'intestazione e un piè di pagina. Le proprietàtitle
edescription
della scheda sono separate da un nuovo carattere di riga. Puoi numerare il titolo della carta. -
I collegamenti ipertestuali sono ancora supportati nei canali di solo testo, con l'indirizzo configurato per la proprietà
cardUrl
visualizzata all'interno del fumetto insieme alle proprietàtitle
edescription
, separate da un nuovo carattere di riga. -
Le immagini specificate dalla proprietà
imageURL
vengono visualizzate. - Viene visualizzato il testo dell'etichetta per i pulsanti di azione, sebbene i pulsanti stessi non vengano visualizzati. Gli utenti possono immettere il testo oppure, se la numerazione automatica è abilitata, possono immettere il numero corrispondente per maggiore comodità.
Ottimizza schede su canali di solo testo con parole chiave
La maggior parte delle carte ha una singola azione, come il pulsante Ordina ora di CRCPizzaBot e un'azione globale come Altro per caricare la prossima carta nella giostra. Come illustrato in Come visualizzare le schede sui canali di solo testo, l'etichetta di ogni azione viene numerata automaticamente quando la skill viene eseguita su canali di solo testo o SMS. Su questi canali, un insieme di carte è rappresentato in una singola bolla, che può diventare lunga e quindi difficile da leggere. Per evitare questo problema, è possibile configurare azioni di postback non associate alle etichette delle azioni, ma eseguite dalle parole chiave utente (1,2,3, cheese o altro, ad esempio).
Descrizione dell'illustrazione cards-text-only.png
È possibile nascondere le etichette delle azioni quando lo skill viene eseguito su canali di solo testo utilizzando le linee guida generali riportate di seguito.
- Definire la proprietà
keywords
. Nello snippet CRCPizzaBot seguente, l'espressione${pizza.name}
impostata per la proprietà keyword definisce una parola chiave per ogni nome 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}" ...
Queste parole chiave vengono aggiunte solo se
textOnly
è true.
card
:
- Definire la proprietà
title
. Nel seguente snippet, un'espressione utilizza la variabile FreeMarkerindex
per anteporre un numero al titolo (restituita da${pizzas.name}
quando il valore della variabiletextOnly
ètrue
). Ciò significa che quando un cliente immette altro, l'abilità caricherà un'altra bolla di messaggi contenente il successivo set di pizze a partire dal numero 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"
- Nel seguente snippet, le azioni della scheda (
"Order"
e"More Pizzas"
) vengono visualizzate solo quando il valore della variabiletextOnly
èfalse
:- label: "More Pizzas" keyword: "more" type: "postback" skipAutoNumber: true visible: expression: "<#if cardsRangeStart?number+4 < pizzas.value?size && textOnly=='false'>true<#else>false</#if>"
- Aggiungere un piè di pagina che viene visualizzato solo quando il valore della variabile
textOnly
ètrue
.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 di risposta allegato
L'elemento di risposta attachment
include le proprietà riportate di seguito.
Proprietà | descrizione; | Richiesto? |
---|---|---|
attachmentType |
Il tipo di allegato: image , audio , video e file .
|
Sì |
attachmentURL |
URL o origine download dell'allegato. | Sì |
Confirmation
di CrcPizzaBot utilizza un elemento di risposta allegato per visualizzare l'immagine dell'ordine, diversa dall'elemento visualizzato nel menu.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}"
Azione
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
type |
Il tipo di azione | stringa | Sì |
label |
Testo dell'etichetta descrittiva per l'azione. | stringa | È necessario includere almeno una delle opzioni label o imageUrl .
|
imageUrl |
L'immagine per l'azione | stringa | È necessario includere almeno una singola proprietà label o imageUrl .
|
style |
Lo stile di rendering del pulsante | "primary" , "danger" , "default" |
No |
displayType |
Il rendering per il tipo di elemento azione (pulsante, collegamento o icona) | "button" , "link" , "icon" |
No |
channelExtensions |
Le proprietà di estensione specifiche del canale associate all'azione | JSONObject | No |
Campo
Field
contiene le proprietà riportate di seguito.
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
displayType |
Il tipo di campo | String |
No |
label |
L'etichetta del campo | String |
Sì |
channelExtensions |
Set di proprietà di estensione specifiche del canale. | Map<ChannelType, JSONObject> |
No |
marginTop |
Quantità di spazio verticale tra questo campo e il campo precedente nella stessa colonna. I valori consentiti sono none , medium (impostazione predefinita) e large .
|
String |
No |
labelFontSize |
La dimensione del carattere utilizzata per l'etichetta del campo. I valori consentiti sono small , medium (impostazione predefinita) e large .
|
String |
No |
labelFontWeight |
Spessore del carattere utilizzato per l'etichetta del campo. I valori consentiti sono light , medium (impostazione predefinita) e grassetto.
|
String |
No |
displayInTable |
Espressione booleana FreeMarker che consente di includere in modo condizionale un campo nel layout di tabella in un elemento di risposta dataSet. | String |
No (l'impostazione predefinita è true )
|
displayInForm |
Espressione booleana FreeMarker che consente di includere in modo condizionale un campo in un elemento di risposta editForm o nel layout del form in un elemento di risposta dataSet | String |
No (l'impostazione predefinita è true )
|
Campo ReadOnly
Field
e dispongono delle proprietà aggiuntive riportate di seguito.
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
value |
Il valore del campo | stringa | Sì |
width |
Percentuale consigliata della larghezza totale disponibile che il campo deve occupare in un layout di tabella. | numerica | No |
alignment |
L'allineamento del valore all'interno di una colonna di tabella. L'allineamento predefinito è right .
|
"left" , "center" e "right" |
No |
Nella release 23.06 di Oracle Digital Assistant, i campi di sola lettura non vengono visualizzati all'interno dei form di input, anche se ricevuti nel payload dei messaggi.
TextField
TextField
eredita tutte le proprietà del campo ReadOnly. Il valore displayType
per questo elemento è "text"
. Ha le seguenti proprietà aggiuntive:
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
truncateAt |
Posizione in cui il testo viene troncato e vengono aggiunti i puntini di sospensione per indicare che il valore è stato troncato. | Un numero intero | No |
fontSize |
La dimensione del carattere utilizzata per il valore field . I valori consentiti sono small , medium (impostazione predefinita) e large .
|
Stringa | No |
fontWeight |
Lo spessore del carattere utilizzato per il valore field . I valori consentiti sono light, medium (il valore predefinito) e bold.
|
Stringa | No |
LinkField
LinkField
eredita tutte le proprietà del campo ReadOnly. Ha le seguenti proprietà aggiuntive:
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
linkLabel |
Etichetta utilizzata per il collegamento ipertestuale | Stringa | No |
imageUrl |
L'URL dell'immagine che apre un collegamento quando viene fatto clic. | Stringa | No |
MediaField
MediaField
eredita tutte le proprietà del campo ReadOnly. Ha le seguenti proprietà aggiuntive:
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
mediaType |
Tipo di supporto del campo ("video" , "audio" , "image" )
|
String |
Sì |
Form
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
title |
Il titolo visualizzato sopra il layout del modulo | Stringa | No |
fields |
Elenco di campi di sola lettura nel modulo | Lista<ReadOnlyField> | Sì |
formRows |
Elenco di righe visualizzate nel modulo. | Elenco<FormRow> | |
actions |
Un elenco di azioni | Elenca<azione> | No |
selectAction |
Azione eseguita quando il modulo è stato selezionato. Quando gli utenti passano il mouse sul form, l'etichetta dell'azione viene visualizzata come suggerimento (se supportata dal canale). | Azione | No |
channelExtensions |
Le proprietà di estensione specifiche del canale associate al messaggio | JSONObject | No |
FormRow
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
columns |
Elenco di colonne visualizzate nella riga del form. | <Colonna> lista | Sì |
selectAction |
Le azioni eseguite quando il modulo è stato selezionato. Quando gli utenti passano il mouse sul modulo, l'etichetta dell'azione viene visualizzata come suggerimento (se supportata dal canale). | Azione | No |
separator |
Se si imposta questa proprietà su true, viene inserita una riga di separazione sopra il contenuto nella riga del form. | Boolean | No |
channelExtensions |
Le proprietà di estensione specifiche del canale associate al messaggio | JSONObject | No |
A colonne
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
fields |
Elenco di campi visualizzati verticalmente all'interno della colonna. Questi campi devono essere istanze ReadOnlyField quando la colonna viene utilizzata in un FormRow all'interno di un Form . I campi possono essere sia di sola lettura che modificabili quando si utilizza FormRow all'interno di un EditFormMessagePayload .
|
Elenca<campo> | Sì |
verticalAlignment |
L'allineamento verticale della colonna rispetto alle altre colonne nella stessa riga del modulo. | Stringa | No |
width |
Determina la larghezza della colonna all'interno della riga del form. I valori consentiti sono auto (impostazione predefinita) e stretch . Quando è impostata su stretch , la colonna assume tutta la larghezza rimanente dopo la visualizzazione delle colonne con larghezza automatica. Se sono presenti più colonne impostate su stretch , dividono in modo uniforme la larghezza rimanente.
|
Stringa | No |
channelExtensions |
Le proprietà di estensione specifiche del canale associate al messaggio | JSONObject | No |
Elemento di risposta editForm
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
type |
Il tipo di elemento di risposta. | editform |
Sì |
title |
Il titolo del modulo | Stringa | No |
items |
Un elenco di campi, di sola lettura e modificabili. | Lista<field> |
Sì |
formColumns |
Numero di colonne utilizzate per il layout del form. L'impostazione predefinita è una colonna. | Valore intero | No |
actions |
Un elenco di azioni relative alla carta. | Lista<Action> |
No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
Il campo textInput
Un campo per l'immissione di testo libero. È possibile impostare il numero minimo e massimo di caratteri per questo campo e applicare la formattazione utilizzando espressioni regolari.
submittedFields
generata (una mappa).
- 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
Questo snippet illustra la raccolta dell'input utente facendo riferimento a una variabile sacchetto composito.L'articolo bag composto di riferimento può essere 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
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
displayType |
Il tipo di campo. | textInput (una stringa)
|
Sì |
name |
Nome univoco per il campo nel modulo di input. Questo nome viene utilizzato come identificativo in runtime. | Stringa | Sì |
label |
L'etichetta del campo | Stringa | No |
defaultValue |
Il valore iniziale. In base all'espressione FreeMarker nel modello, il valore è una stringa quando l'elemento del sacchetto di riferimento (rappresentato da myText ) non contiene alcun valore ("${(submittedFields.value.myText)!''}" ).
|
Stringa | No |
validationRegularExpression |
Espressione regolare che specifica il formato per l'input di testo. | Stringa | No |
multiline |
L'impostazione di questa proprietà su true consente agli utenti di immettere più righe di testo.
|
Boolean | No |
minlength |
Il numero minimo di caratteri richiesti per convalidare il campo. Gli utenti ricevono un messaggio di errore se inseriscono troppo pochi caratteri. | Valore intero | No |
maxLength |
Il numero massimo o il limite massimo di caratteri. | Valore intero | No |
inputStyle |
Il formato applicato al client. I formati sono i seguenti.
|
Stringa | No |
placeholder |
Suggerimento che descrive come utilizzare questo campo. Questo testo viene visualizzato quando gli utenti non hanno ancora immesso alcun input. Ad esempio:
|
Stringa | No |
autoSubmit |
Se impostato su true , il form viene parzialmente sottomesso quando l'utente ha immesso un valore per il campo. In FormSubmissionMessagePayload , partialSubmitField viene impostato sul nome del campo in cui autoSubmit è impostato su true . Si consiglia di configurare la sottomissione automatica per i campi dipendenti in modo condizionale. Ad esempio, impostare questa proprietà quando un campo deve essere visualizzato o nascosto in base al valore di un altro campo o quando i valori consentiti di un campo dipendono dal valore impostato in un altro campo. Con la sottomissione automatica di un campo da cui dipendono altri campi, il modulo può essere aggiornato immediatamente con le modifiche pertinenti ai campi dipendenti.
|
Stringa | No |
required |
Indica se la sottomissione del modulo richiede l'input dell'utente in questo campo | boolean |
No |
clientErrorMessage |
Messaggio utilizzato da alcuni client (MS Teams, Apple Business Messaging) quando la convalida lato client non riesce. In Slack questa proprietà viene utilizzata solo quando il form modificabile viene visualizzato nella pagina della conversazione. Non viene visualizzata in una finestra di dialogo modale. | Stringa | No |
serverErrorMessage |
Messaggio di errore inviato al client quando la convalida lato server di un valore di campo modulo non riesce. Quando si verificano errori di questo tipo sul lato server, si consiglia di sostituire il messaggio del modulo corrente anziché un nuovo messaggio aggiunto alla conversazione configurando la proprietà channelExtensions per indicare che l'ultimo messaggio del modulo deve essere sostituito.
|
Stringa | No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
Il campo datePicker
maxDate
e minDate
del componente convalidano l'input utente.
Il canale Slack non supporta questa convalida dei valori minimo e massimo.
submittedFields
generata (una mappa). - 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
Questo snippet illustra come acquisire l'input utente facendo riferimento a una variabile sacchetto composito. - 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
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
displayType |
Il tipo di campo | datePicker (una stringa)
|
Sì |
id |
Nome univoco per il campo nel modulo di input. Questo nome viene utilizzato come identificativo in runtime. | Stringa | Sì |
label |
Etichetta descrittiva. | Stringa | No |
defaultValue |
Il valore predefinito per il campo, formattato come AAAA-MM-GG. Il modello definisce questa stringa come un'espressione FreeMarker Apache che restituisce una stringa vuota quando l'elemento bag composto di riferimento (rappresentato da myDate ) ha un valore nullo.
|
Stringa | No |
minDate |
La prima data nell'intervallo di giorni consentiti. Il canale Slack non supporta questa convalida lato client. | Stringa | No |
maxDate |
Ultima data compresa nell'intervallo di giorni consentiti. Il modello definisce questa stringa come il giorno corrente ("${.now?iso_utc[0..9]}" ). Il canale Slack non supporta questa convalida lato client.
|
Stringa | No |
placeholder |
Descrizione dell'input previsto visualizzato quando l'utente non ha ancora selezionato una data. | Stringa | No |
autoSubmit |
Se impostato su true , il form viene parzialmente sottomesso quando l'utente ha immesso un valore per il campo. In FormSubmissionMessagePayload , partialSubmitField viene impostato sul nome del campo in cui autoSubmit è impostato su true . Si consiglia di configurare la sottomissione automatica per i campi dipendenti in modo condizionale. Ad esempio, impostare questa proprietà quando un campo deve essere visualizzato o nascosto in base al valore di un altro campo o quando i valori consentiti di un campo dipendono dal valore impostato in un altro campo. Con la sottomissione automatica di un campo da cui dipendono altri campi, il modulo può essere aggiornato immediatamente con le modifiche pertinenti ai campi dipendenti.
|
Stringa | No |
required |
Indica se la sottomissione del modulo richiede l'input dell'utente in questo campo | boolean | No |
clientErrorMessage |
Messaggio utilizzato da alcuni client (MS Teams, Apple Business Messaging) quando la convalida lato client non riesce. In Slack questa proprietà viene utilizzata solo quando il form modificabile viene visualizzato nella pagina della conversazione. Non viene visualizzata in una finestra di dialogo modale. | Stringa | No |
serverErrorMessage |
Messaggio di errore inviato al client quando la convalida lato server di un valore di campo modulo non riesce. Quando si verificano errori di questo tipo sul lato server, si consiglia di sostituire il messaggio del modulo corrente anziché un nuovo messaggio aggiunto alla conversazione configurando la proprietà channelExtensions per indicare che l'ultimo messaggio del modulo deve essere sostituito.
|
Stringa | No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
Il campo timePicker
maxTime
e minTime
del componente convalidano l'input utente.
Il canale Slack non supporta la convalida dei valori minimo e massimo.
submittedFields
generata (una mappa). - 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
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
displayType |
Il tipo di campo | timePicker (una stringa)
|
Sì |
id |
Nome univoco per il campo nel modulo di input. Questo nome viene utilizzato come identificativo in runtime. | Stringa | Sì |
label |
Etichetta che descrive i parametri di selezione dell'ora. | Stringa | Sì |
defaultValue |
Il valore iniziale per questo campo, nel formato a 24 ore. Il modello definisce questa stringa come un'espressione FreeMarker Apache che restituisce una stringa vuota quando l'elemento bag composto di riferimento (rappresentato da myTime ) ha un valore nullo.
|
Stringa | No |
minTime |
Definisce l'ora consentita meno recente, immessa come HH:MM nel formato a 24 ore. ad esempio 00:00 |
Stringa | No |
maxTime |
Definisce l'ora consentita più recente, immessa come HH:MM, nel formato 24 ore. Ad esempio, 13:00 .
|
Stringa | No |
placeholder |
Un suggerimento per l'input. Per il modello, l'esempio placeholder è Pick a time in the morning , che riflette i valori di esempio minTime e maxTime del modello 00:00 e 12:00 .
|
Stringa | No |
autoSubmit |
Se impostato su true , il form viene parzialmente sottomesso quando l'utente ha immesso un valore per il campo. In FormSubmissionMessagePayload , partialSubmitField viene impostato sul nome del campo in cui autoSubmit è impostato su true . Si consiglia di configurare la sottomissione automatica per i campi dipendenti in modo condizionale. Ad esempio, impostare questa proprietà quando un campo deve essere visualizzato o nascosto in base al valore di un altro campo o quando i valori consentiti di un campo dipendono dal valore impostato in un altro campo. Con la sottomissione automatica di un campo da cui dipendono altri campi, il modulo può essere aggiornato immediatamente con le modifiche pertinenti ai campi dipendenti.
|
Stringa | No |
required |
Indica se la sottomissione del modulo richiede l'input dell'utente in questo campo | boolean |
No |
clientErrorMessage |
Messaggio utilizzato da alcuni client (MS Teams, Apple Business Messaging) quando la convalida lato client non riesce. Ad esempio, Time must be in the morning . In Slack questa proprietà viene utilizzata solo quando il form modificabile viene visualizzato nella pagina della conversazione. Non viene visualizzata in una finestra di dialogo modale.
|
Stringa | No |
serverErrorMessage |
Messaggio di errore inviato al client quando la convalida lato server di un valore di campo modulo non riesce. Quando si verificano errori di questo tipo sul lato server, si consiglia di sostituire il messaggio del modulo corrente anziché un nuovo messaggio aggiunto alla conversazione configurando la proprietà channelExtensions per indicare che l'ultimo messaggio del modulo deve essere sostituito.
|
Stringa | No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
Il 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
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
displayType |
Il tipo di campo | numberInput (una stringa)
|
Sì |
name |
Nome univoco per il campo nel modulo di input. Questo nome viene utilizzato come identificativo in runtime. | Stringa | Sì |
label |
Etichetta descrittiva per il valore di data richiesto dall'utente. | Stringa | No |
defaultValue |
Il valore iniziale. Il modello definisce questa stringa come un'espressione FreeMarker Apache che restituisce una stringa vuota quando l'elemento bag composto di riferimento (rappresentato da myNumber ) ha un valore nullo. "${(submittedFields.value.myNumber)!''}" |
Stringa | No |
maxvalue |
Il numero più grande consentito. Il canale Slack non supporta la convalida del valore minimo o massimo. | Valore intero | No |
minvalue |
Il più piccolo numero consentito | Valore intero | No |
placeholder |
Suggerimento che descrive come utilizzare il campo. Questo testo viene visualizzato quando l'utente non ha ancora immesso un numero. | Stringa | No |
autoSubmit |
Se impostato su true , il form viene parzialmente sottomesso quando l'utente ha immesso un valore per il campo. In FormSubmissionMessagePayload , partialSubmitField viene impostato sul nome del campo in cui autoSubmit è impostato su true . Si consiglia di configurare la sottomissione automatica per i campi dipendenti in modo condizionale. Ad esempio, impostare questa proprietà quando un campo deve essere visualizzato o nascosto in base al valore di un altro campo o quando i valori consentiti di un campo dipendono dal valore impostato in un altro campo. Con la sottomissione automatica di un campo da cui dipendono altri campi, il modulo può essere aggiornato immediatamente con le modifiche pertinenti ai campi dipendenti.
|
Stringa | No |
required |
Indica se la sottomissione del modulo richiede l'input dell'utente in questo campo | boolean |
No |
clientErrorMessage |
Messaggio utilizzato da alcuni client (MS Teams, Apple Business Messaging) quando la convalida lato client non riesce. In Slack questa proprietà viene utilizzata solo quando il form modificabile viene visualizzato nella pagina della conversazione. Non viene visualizzata in una finestra di dialogo modale. | Stringa | No |
serverErrorMessage |
Messaggio di errore inviato al client quando la convalida lato server di un valore di campo modulo non riesce. Quando si verificano errori di questo tipo sul lato server, si consiglia di sostituire il messaggio del modulo corrente anziché un nuovo messaggio aggiunto alla conversazione configurando la proprietà channelExtensions per indicare che l'ultimo messaggio del modulo deve essere sostituito.
|
Stringa | No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
Il campo singleSelect
- Nel canale Microsoft Teams, questo elemento viene sempre visualizzato come elenco (anche quando
layoutStyle
è impostato suradioGroup
) perché le schede adattive non supportano i pulsanti di opzione. - Nel canale Slack, questo elemento viene visualizzato come elenco anziché come gruppo di radio quando sono disponibili più di dieci opzioni.
submittedFields
generata (una variabile mappa) - 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
Suggerimento
SebbeneclientErrorMessage
sia un attributo facoltativo, è consigliabile definirlo per le competenze in esecuzione sul canale Microsoft Teams poiché le schede adattive non generano un messaggio quando la convalida lato client non riesce.
- 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
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
displayType |
Il tipo di campo | singleSelect (una stringa)
|
Sì |
name |
Nome univoco per il campo nel modulo di input. Questo nome viene utilizzato come identificativo in runtime. | Stringa | Sì |
label |
Testo dell'etichetta del campo che descrive il contenuto dell'elenco a selezione singola. | Stringa | Sì |
defaultValue |
L'impostazione predefinita. Il modello definisce questo valore String come un'espressione FreeMarker Apache che restituisce una stringa vuota quando l'elemento bag composto di riferimento (rappresentato da mySingleSelect) ha un valore nullo). "${(submittedFields.value.mySingleSelect)!''}" |
Stringa | No |
options |
Array delle opzioni disponibili. Il modello definisce in modo statico queste opzioni con singole coppie label e value con valori stringa, ma è possibile popolare dinamicamente le opzioni di selezione utilizzando le proprietà iteratorVariable e iteratorExpression : In questo snippet i valori del tipo di spesa restituiti dalle proprietà type e enum vengono sequenziati nell'elenco utilizzando la funzione built-in split .
|
Elenco<option> | Sì |
layoutStyle |
Modalità di visualizzazione delle opzioni a selezione singola nel modulo. Possono essere raggruppati come elenco (layoutStyle: list ) o pulsanti di opzione (layoutStyle: radioGroup ).
|
Stringa | |
placeholder |
Suggerimento che descrive come utilizzare il campo. Viene visualizzato quando l'utente non ha ancora effettuato la selezione. Ad esempio:
Questo segnaposto viene visualizzato solo per il rendering del layout elenco. |
Stringa | No |
autoSubmit |
Se impostato su true , il form viene parzialmente sottomesso quando l'utente ha immesso un valore per il campo. In FormSubmissionMessagePayload , partialSubmitField viene impostato sul nome del campo in cui autoSubmit è impostato su true . Si consiglia di configurare la sottomissione automatica per i campi dipendenti in modo condizionale. Ad esempio, impostare questa proprietà quando un campo deve essere visualizzato o nascosto in base al valore di un altro campo o quando i valori consentiti di un campo dipendono dal valore impostato in un altro campo. Con la sottomissione automatica di un campo da cui dipendono altri campi, il modulo può essere aggiornato immediatamente con le modifiche pertinenti ai campi dipendenti.
|
Stringa | No |
required |
Indica se la sottomissione del modulo richiede l'input dell'utente in questo campo | boolean |
No |
clientErrorMessage |
Messaggio utilizzato da alcuni client (MS Teams, Apple Business Messaging) quando la convalida lato client non riesce. In Slack questa proprietà viene utilizzata solo quando il form modificabile viene visualizzato nella pagina della conversazione. Non viene visualizzata in una finestra di dialogo modale. | Stringa | No |
serverErrorMessage |
Messaggio di errore inviato al client quando la convalida lato server di un valore di campo modulo non riesce. Quando si verificano errori di questo tipo sul lato server, si consiglia di sostituire il messaggio del modulo corrente anziché un nuovo messaggio aggiunto alla conversazione configurando la proprietà channelExtensions per indicare che l'ultimo messaggio del modulo deve essere sostituito.
|
Stringa | No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
Il campo multiSelect
- Nel canale Microsoft Teams, questo elemento viene sempre visualizzato come elenco (anche se
layoutStyle
è impostato sucheckboxes
) perché le schede adattive non supportano le caselle di controllo a selezione multipla. - Nel canale Slack, questo elemento viene visualizzato come elenco invece di un set di caselle di controllo a selezione multipla quando sono presenti più di dieci opzioni.
submittedFields
generata (una mappa). - 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
Questo snippet illustra il riferimento a un'entità sacchetto composito per popolare l'elenco. - 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
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
displayType |
Il tipo di campo | multiselect (una stringa)
|
Sì |
name |
Nome univoco per il campo nel modulo di input. Questo nome viene utilizzato come identificativo in runtime. | Stringa | Sì |
label |
Etichetta di campo che descrive il contenuto della lista multiSelect. | Stringa | Sì |
defaultValue |
L'impostazione predefinita. Il modello definisce questa stringa come un'espressione FreeMarker Apache che restituisce una stringa vuota quando l'elemento bag composto di riferimento (rappresentato da myMultiSelect ) ha un valore nullo.
|
List<String> |
No |
options |
Array delle opzioni disponibili. Il modello definisce in modo statico queste opzioni con singole coppie label e value con valori stringa, ma è possibile popolare dinamicamente le opzioni di selezione utilizzando le proprietà iteratorVariable e iteratorExpression :
|
List<option> |
Sì |
placeholder |
Suggerimento che descrive come utilizzare il campo. Viene visualizzato quando l'utente non ha effettuato selezioni.
Questo segnaposto viene visualizzato solo per il layout elenco. Non è disponibile per i layout delle caselle di controllo. |
Stringa | No |
layoutStyle |
Il layout per le opzioni multiSelect. Le opzioni disponibili sono list e checkboxes .
|
Stringa | No |
autoSubmit |
Se impostato su true , il form viene parzialmente sottomesso quando l'utente ha immesso un valore per il campo. In FormSubmissionMessagePayload , partialSubmitField viene impostato sul nome del campo in cui autoSubmit è impostato su true . Si consiglia di configurare la sottomissione automatica per i campi dipendenti in modo condizionale. Ad esempio, impostare questa proprietà quando un campo deve essere visualizzato o nascosto in base al valore di un altro campo o quando i valori consentiti di un campo dipendono dal valore impostato in un altro campo. Con la sottomissione automatica di un campo da cui dipendono altri campi, il modulo può essere aggiornato immediatamente con le modifiche pertinenti ai campi dipendenti.
|
Stringa | No |
required |
Indica se la sottomissione del modulo richiede l'input dell'utente in questo campo | boolean | No |
clientErrorMessage |
Messaggio utilizzato da alcuni client (MS Teams, Apple Business Messaging) quando la convalida lato client non riesce. In Slack questa proprietà viene utilizzata solo quando il form modificabile viene visualizzato nella pagina della conversazione. Non viene visualizzata in una finestra di dialogo modale. | Stringa | No |
serverErrorMessage |
Messaggio di errore inviato al client quando la convalida lato server di un valore di campo modulo non riesce. Quando si verificano errori di questo tipo sul lato server, si consiglia di sostituire il messaggio del modulo corrente anziché un nuovo messaggio aggiunto alla conversazione configurando la proprietà channelExtensions per indicare che l'ultimo messaggio del modulo deve essere sostituito.
|
Stringa | No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
Il campo di attivazione/disattivazione
Nel canale Slack, questo elemento viene visualizzato sotto forma di coppia di pulsanti di opzione.
- displayType: toggle
defaultValue: "false"
name: TipIncluded
labelOn: Tip
label: Tip Included?
valueOff: "false"
labelOff: No Tip
valueOn: "true"
Questo snippet illustra l'acquisizione dell'input utente facendo riferimento a una variabile sacchetto composito. - 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"
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
displayType |
Il tipo di campo | toggle (una stringa)
|
Sì |
id |
Nome univoco per il campo nel modulo di input. Questo nome viene utilizzato come identificativo in runtime. | Stringa | Sì |
label |
Etichetta che descrive cosa accade quando l'attivazione è attivata. | Stringa | Sì |
defaultValue |
Il valore iniziale. Se si desidera che l'attivazione sia inizialmente attiva, impostarla sul valore valueOn . Il modello definisce questa stringa come un'espressione FreeMarker Apache che attiva l'attivazione/disattivazione quando l'elemento bag composto di riferimento (rappresentato da myToggle ) ha un valore nullo.
|
Stringa | Sì |
valueOff |
Il valore quando l'attivazione è disattivata. Il valore predefinito, in base al modello, è false (valueOff: "false" ).
|
Stringa | Sì |
valueOn |
Il valore quando l'attivazione è attivata. Il valore predefinito nel modello è true (value On: "true" )
|
Stringa | Sì |
labelOn |
Etichetta per la posizione di attivazione/disattivazione | Stringa | No |
labelOff |
Etichetta per la posizione disattivata dell'interruttore. | Stringa | No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
Campo di testo
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
displayType |
Tipo di elemento. | text (una stringa)
|
Sì |
name |
Nome univoco per il campo nel modulo di input. Questo nome viene utilizzato come identificativo in runtime. | Stringa | Sì |
value |
Il valore RAW per il campo | Stringa | Sì |
width |
Percentuale della larghezza totale disponibile che l'elemento deve occupare in un layout di tabella. La larghezza rimanente, a partire da 100 meno gli elementi con una larghezza specificata, è equamente divisa sugli elementi senza una larghezza specificata. | Valore intero | No |
alignment |
L'allineamento del valore con una colonna di tabella. | left , center e right . L'impostazione predefinita è right .
|
No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
Il campo del collegamento
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
displayType |
Il tipo di campo | link (una stringa)
|
Sì |
name |
Nome univoco per il campo nel modulo di input. Questo nome viene utilizzato come identificativo in runtime. | Stringa | Sì |
value |
Indirizzo URL. Ad esempio: http:www.oracle.com |
Stringa | Sì |
width |
Percentuale della larghezza totale disponibile che l'elemento deve occupare in un layout di tabella. La larghezza rimanente, a partire da 100 meno gli elementi con una larghezza specificata, è equamente divisa sugli elementi senza una larghezza specificata. | Valore intero | No |
alignment |
L'allineamento del valore con una colonna di tabella. I valori consentiti sono left , center e right . L'impostazione predefinita è right .
|
Stringa | No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
EditFormMessagePayload
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
type |
Tipo di payload del messaggio. | editForm (una stringa)
|
Sì |
headerText |
Il testo dell'intestazione visualizzato sopra il form. | Stringa | No |
footerText |
Il testo visualizzato sotto il modulo e le azioni, ma sopra le azioni globali. | Stringa | No |
title |
Il titolo del modulo | Stringa | No |
formRows |
Elenco di righe visualizzate nel modulo. | Elenco<FormRow> |
No |
fields |
Un elenco di campi, di sola lettura e modificabili. | Lista<field> |
Sì |
formColumns |
Numero di colonne utilizzate per il layout del form. L'impostazione predefinita è una colonna. | Valore intero | No |
actions |
Lista di azioni. | Lista<Action> |
No |
globalActions |
Elenco di azioni globali. Il rendering di queste azioni è specifico del canale. Ad esempio, le azioni su Facebook vengono visualizzate da reply_actions .
|
Lista<Action> |
No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
Sottomissione automatica di un campo
autoSubmit
di un campo è impostata su true
, il client invia un valore FormSubmissionMessagePayload
con la mappa submittedField
contenente i valori di campo validi immessi finora oppure solo il valore del campo con sottomissione automatica (l'implementazione è specifica del canale). I campi non ancora impostati (indipendentemente dal fatto che siano obbligatori) o che violino una convalida lato client non sono inclusi nella mappa submittedField
. Se il campo sottomesso automaticamente contiene un valore non valido, il valore FormSubmissionMessagePayload
non viene inviato e viene visualizzato il messaggio di errore del client.
Microsoft Teams non supporta la sottomissione automatica.
SubmitFormAction
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
type |
Il tipo di azione | submitForm (una stringa)
|
Sì |
postback |
Il payload di postback, che può includere una proprietà azione per l'attivazione della navigazione. Si consiglia di prendere il valore di questa proprietà dall'oggetto postback FormSubmissionMessagePayload .
|
JSONObject | No |
variable |
Nome della variabile in cui sono memorizzati i valori sottomessi. Questi valori si trovano in FormSubmissionMessagePayload .
|
Stringa | No |
processingMethod |
Istruzioni di elaborazione utilizzate dal componente Risolvi entità per i valori dei campi sottomessi. È possibile impostare questo valore su FormSubmissionMessagePayload , ma è anche possibile impostare:
|
Stringa | Sì |
label |
Etichetta per l'azione di visualizzazione. | Stringa | Sì - È necessario specificare almeno un valore label o imageUrl .
|
imageUrl |
L'immagine per l'azione di visualizzazione. | Stringa | È necessario specificare almeno un valore label o imageUrl .
|
channelExtensions |
Set di proprietà di estensione specifiche del canale. Ad esempio, è possibile impostare l'altezza massima per Facebook Messenger. | Mappa<ChannelType, JSONObject> |
No |
FormSubmissionMessagePayload
SubmitFormAction
. Contiene le proprietà riportate di seguito.
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
type |
Il tipo di payload. | "formSubmission" (un valore di stringa)
|
Sì |
submittedFields |
Coppie chiave-valore dei valori di campo sottomessi. La chiave è il nome (ID) del campo. | Mappa<String, Object> | Sì |
postback |
Il payload di postback, che potrebbe includere una proprietà azione per attivare la navigazione. Si consiglia di prendere il valore dal SubmitFormAction |
JSONObject | No |
partialSubmitField |
Nome del campo che attiva l'invio parziale del modulo. I campi con la sottomissione automatica abilitata (autoSubmit: true ) possono attivare una sottomissione parziale del modulo.
|
Stringa | No |
Aggiornamento del modulo di input
autosubmit
è impostato su true
o perché l'utente ha utilizzato il pulsante di azione submitForm
, potrebbero verificarsi situazioni in cui l'utente non ha fornito tutte le informazioni richieste oppure alcuni valori di campo contengono un valore non valido. In tal caso, il motore della finestra di dialogo invierà un nuovo EditFormMessagePayload
, ma tale messaggio dovrebbe sostituire il messaggio del modulo precedente. Per indicare al canale client di sostituire il messaggio del modulo precedente, invece di aggiungere un nuovo messaggio del modulo alla conversazione, configurare la proprietà di estensione del canale replaceMessage
come indicato di seguito.- channel: ${system.channelType}
properties:
replaceMessage: "${system.message.messagePayload.type == 'formSubmission'}"
channelExtensions
a livello radice del payload del componente di risposta comune:...,
"channelExtensions": { "replaceMessage": "true"}
TableMessagePayload
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
type |
Il tipo di payload del messaggio | "table" |
Sì |
headings |
Un elenco di intestazioni di colonna di tabella | Elenco<TableHeading> | Sì |
rows |
Una lista di righe di tabella | Lista<riga> | Sì |
forms |
Elenco di moduli | Elenca | Sì |
formColumns |
Numero di colonne utilizzate nel layout del form. Il valore predefinito è 1. | Valore intero | Sì |
paginationInfo |
Informazioni sull'impaginazione che possono essere utilizzate per visualizzare i pulsanti del set precedente o successivo | PaginationInfo | Sì |
Righe
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
fields |
Un elenco di campi di sola lettura | Elenco <ReadOnly Campo> | Sì |
selectAction |
Le azioni eseguite quando il modulo è stato selezionato. Quando gli utenti passano il mouse sul modulo, l'etichetta dell'azione viene visualizzata come suggerimento (se supportata dal canale). | Azione | No |
channelExtensions |
Le proprietà di estensione specifiche del canale associate al messaggio | Mappa<ChannelType>,JSONObject | No |
TableHeading
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
label |
L'etichetta dell'intestazione | Stringa | Sì |
width |
Larghezza etichetta intestazione | Stringa | No |
alignment |
L'allineamento del valore della colonna (left , right o center ). L'impostazione predefinita è right .
|
Stringa | No |
channelExtensions |
Set di proprietà di estensione specifiche del canale. |
|
No |
PaginationInfo
Rappresenta le informazioni di paging per i risultati negli oggetti Table
, Form
e Table-Form
.
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
totalCount |
Il conteggio totale dei risultati | numerica | Sì |
rangeSize |
La dimensione dell'intervallo dei risultati per pagina | numerica | Sì |
status |
Messaggio di stato paging | stringa | Sì |
currentRangeSize |
Dimensione della gamma di risultati corrente | numerica | Sì |
rangeStart |
Offset iniziale dell'intervallo corrente di risultati | numerica | Sì |
nextRangeSize |
La dimensione del successivo intervallo di risultati | numerica | Sì |
hasPrevious |
Indica se esiste un set di risultati precedente | boolean | Sì |
hasNext |
Indica se esiste una serie successiva di risultati | boolean | Sì |
tableFormMessageLayout
Nome | descrizione; | Digita | Richiesto? |
---|---|---|---|
type |
Il tipo di payload del messaggio | "tableForm" |
Sì |
headings |
Un elenco di intestazioni di colonna di tabella | Elenco<TableHeading> | Sì |
rows |
Una lista di righe di tabella | Lista<riga> | Sì |
forms |
Elenco di moduli | Elenca | Sì |
formColumns |
Numero di colonne utilizzate nel layout del form. Il valore predefinito è 1. | Valore intero | Sì |
showFormButtonLabel |
Etichetta del pulsante utilizzata per mostrare il layout del form per una riga specifica. | Stringa | Sì |
paginationInfo |
Informazioni sull'impaginazione che possono essere utilizzate per visualizzare i pulsanti del set precedente o successivo | PaginationInfo | Sì |
Elemento di risposta dataSet
L'elemento di risposta dataSet
consente di creare tabelle e form. Include le proprietà riportate di seguito.
Proprietà | descrizione; | Richiesto? |
---|---|---|
layout |
Lo stile di layout utilizzato per eseguire il rendering di dataSet. I valori consentiti sono table , form e tableForm .
|
Sì |
formColumns |
Numero di colonne utilizzate per visualizzare gli elementi in un layout di form. Applicabile solo se il layout è form o tableForm . L'impostazione predefinita è 1 .
|
No |
showFormButtonLabel |
Etichetta utilizzata per aprire la finestra di dialogo del form in uno stile di layout tableForm . Attualmente viene utilizzato solo sui canali Slack. Gli altri canali supportano l'espansione della riga della tabella per mostrare gli elementi aggiuntivi in un layout di modulo
|
No |
data |
Utilizzato per definire un'immissione dati nel file dataSet . Vedere DataSet Proprietà dati |
Sì |
Proprietà dati DataSet
La proprietà data
dell'elemento di risposta dataSet
include le seguenti proprietà secondarie.
Proprietà | descrizione; | Richiesto? |
---|---|---|
iteratorExpression |
Definisce un'espressione Freemarker che restituisce un elenco di voci su cui eseguire l'iterazione, consentendo di aggiungere dinamicamente più voci di dati a dataSet .
|
No |
iteratorVariable |
Specifica il nome della variabile iteratore che è possibile utilizzare per fare riferimento alla voce dati corrente all'interno dell'elenco di voci dati sottoposte a iterazione. | No |
rangeSize |
Il numero di voci di dati che verranno visualizzate contemporaneamente dopo aver specificato le proprietà iteratorExpression e iteratorVariable .
|
No |
visible |
Determina la modalità di visualizzazione dei messaggi per input e canale utente. Vedere La proprietà visibile. | No |
formTitle |
Titolo utilizzato per la finestra di dialogo del form nel layout tableForm nel canale Slack. L'impostazione predefinita è View details .
|
No |
items |
Gli elementi dati che devono essere visualizzati per ogni immissione dati. Vedere DataSet Proprietà elemento dati. | Sì |
DataSet Proprietà elemento dati
Proprietà | descrizione; | Richiesto? |
---|---|---|
width |
Percentuale (espressa come numero intero) della larghezza totale disponibile che l'elemento deve utilizzare in un layout di tabella. La larghezza rimanente, a partire da 100 meno gli elementi con una larghezza specificata, è equamente divisa sugli elementi senza una larghezza specificata. | No |
alignment |
L'allineamento del valore con una colonna di tabella. I valori consentiti sono left , center e right . L'impostazione predefinita è left .
|
No |
displayType |
Tipo di visualizzazione dell'elemento. I valori consentiti sono text e link . L'impostazione predefinita è text .
|
No |
linkLabel |
Etichetta utilizzata per il collegamento ipertestuale quando il tipo di visualizzazione è impostato su link . L'impostazione predefinita è il valore della proprietà value dell'elemento.
|
No |
displayInTable |
Definisce se l'elemento deve essere visualizzato come colonna nella tabella. Questa proprietà è applicabile solo nel layout tableForm . L'impostazione predefinita è false .
|
No |
displayInForm |
Definisce se l'elemento deve essere visualizzato come campo nel modulo. Questa proprietà è applicabile solo nel layout tableForm . L'impostazione predefinita è false .
|
No |
label |
Etichetta dell'elemento dati. | Sì |
value |
Valore dell'elemento dati. | Sì |
La variabile system.entityToResolve
system.entityToResolve
fornisce informazioni sullo stato corrente del processo di risoluzione delle entità eseguito dai componenti Risolvi entità e Risposta comune. In genere si fa riferimento alle proprietà di questo valore di variabile nei metadati del componente Risposta comune quando si desidera personalizzare i messaggi. È possibile utilizzarlo per definire la logica per il messaggio di errore di un'entità o per varie proprietà appartenenti ai componenti Risolvi entità e Risposta comune. Aggiungere le seguenti proprietà per restituire il valore dell'entità corrente:
userInput
prompt
promptCount
updatedEntities
outOfOrderMatches
disambiguationValues
enumValues
needShowMoreButton
rangeStartVar
nextRangeStart
prompt
, errorMessage
e le regole di convalida.
Sorry,'${system.entityToResolve.value.userInput!'this'}' is not a valid pizza size.
system.entityToResolve
. Tra questi c'è un messaggio definito per la proprietà text
, che conferma un aggiornamento fatto a un valore di entità precedentemente impostato utilizzando una direttiva FreeMarker list
Apache e la proprietà 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
e 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"
L'etichetta Mostra più deve includere un valore system.showMore
(action: "system.showMore"
). Altrimenti, non funzionerà.
Convalida messaggio utente
variable
. Ad esempio, quando la proprietà variable
è definita come tipo primitivo (stringa, booleano, a virgola mobile, doppio), questi componenti tentano di riconciliare il valore con uno dei tipi primitivi. Quando la proprietà della variabile è definita per una variabile di tipo entità, questi componenti chiamano il motore NLP per risolvere il valore in una delle entità. Tuttavia, quando questi componenti non possono convalidare un valore, il bot può visualizzare un messaggio di errore.
Facendo riferimento alla variabile system.invalidUserInput
, è possibile aggiungere un messaggio di errore condizionale alle risposte del bot. Questa variabile è booleana, pertanto è possibile utilizzarla come condizione con la direttiva FreeMarker if
per visualizzare il messaggio solo quando un utente immette un valore non valido. In caso contrario, il messaggio è nascosto. Lo stato AskPizzaSize
di CrcPizzaBot a cui si fa riferimento nel seguente snippet lo dimostra aggiungendo questa variabile come condizione all'interno di un modello FreeMarker valutato dalla direttiva if
. Poiché è impostato su true
, il bot aggiunge un messaggio di errore al messaggio standard (Quali dimensioni si desidera?) quando l'utente immette un valore non valido.
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