共通レスポンス・コンポーネントのメタデータ・プロパティ
共通レスポンス・コンポーネントの「メタデータ」プロパティを使用して、ユーザーへのメッセージの表示方法を定義します。
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"
プロパティ | 説明 | 必須? |
---|---|---|
responseItems |
レスポンス・アイテムのリストであり、それぞれがチャット・クライアントに送信される新しいメッセージ(iteratorVariable プロパティまたはiteratorVariable プロパティとiteratorExpression プロパティの組合せを使用してレスポンス・アイテムに対して反復を設定した場合は、複数のメッセージ)になります。これらのレスポンス・アイテムを次の値を使用して定義します:
|
はい |
globalActions |
グローバル・アクションのリスト。レスポンス・アイテムのいずれかに固有ではないことを意味します。これらのアクションは、通常はチャット・ウィンドウの下部に表示されます。たとえば、Facebook Messengerでは、これらのオプションはクイック返信と呼ばれます。 | いいえ |
keywords |
ユーザーが入力したキーワードを対応するポストバック・ペイロードに一致させるキーワードのリスト。キーワードは、アクション・ボタンが適切にレンダリングされないテキストのみのチャネルをサポートします。 | いいえ |
プロパティ | 説明 | 必須? | |
---|---|---|---|
type |
メッセージ・フォーマットを決定するレスポンス・アイテムのタイプ。メッセージは、text 、attachment またはcards として設定できます。
|
はい | |
name |
内部的に使用されるレスポンス・アイテムの名前。実行時には使用されません。 | いいえ | |
iteratorVariable |
変数要素を反復することで、複数のテキスト、アタッチメントまたはキーワード・アイテムをレスポンスに動的に追加します。 | いいえ | |
iteratorExpression |
iteratorVariable プロパティで指定された変数内にネストされた配列の値を表示するために使用されるFreeMarker式。
たとえば、 |
いいえ | |
visible |
ユーザー入力およびチャネルごとにメッセージの表示方法を決定します。「可視プロパティ」を参照してください。 | いいえ | |
rangeStart |
iteratorVariable を指定した場合、rangeStart プロパティをrangeSize プロパティと組み合せて指定することによって、レスポンス・アイテムのサブセットをスタンプ・アウトできます。ハードコードされた値を入力するか、範囲開始を保持するダイアログ・フロー変数を参照するFreeMarker式を使用できます。rangeStart 変数を使用することにより、参照オプションのペイロードでrangeStart 変数を設定して、次のデータ・セットにページングできます。CrcPizzaBotのOrderPizza 状態で、rangeStart およびrangeSize プロパティの例を確認できます。
|
いいえ | |
rangeSize |
iteratorVariable およびrangeStart プロパティで指定されたように表示されるレスポンス・アイテムの数。
|
いいえ | |
channelCustomProperties |
チャネル特有の機能をトリガーするプロパティのリスト。これらの機能はプラットフォーム固有であるため、共通レスポンス・コンポーネントの外部であり、したがって、コンポーネントのルート・レベルまたはレスポンス・アイテム・レベルのプロパティによって制御できません。このプロパティの例は、CrcPizzaBotのOrderPizza 状態にあります。
channelCustomProperties の使用および各チャネルで使用可能なプロパティの詳細は、チャネル固有の拡張機能を参照してください。
|
いいえ |
キーワード・メタデータ・プロパティ

次のスニペットは、PizzaSizeエンティティに対して定義された値のリストを保持する
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"
プロパティ | 説明 | 必須? |
---|---|---|
keyword |
payload プロパティによって定義されたポストバック・ペイロードをトリガーするキーワードのリスト。FreeMarker式を使用すると、interatorVariable プロパティによって値リスト・エンティティから生成されるキーワードを、type およびenumValues プロパティを使用して返すことができます(iteratorVariable: "pizzaSize.type.enumValues" )。
|
はい |
label |
アクションのラベル。テキスト文字列またはApache FreeMarker式です。たとえば、2文字のキーワードを示す式は次のようになります:
|
いいえ |
skipAutoNumber |
デジタル・アシスタントまたはスキル・レベルで「カードでの自動採番の有効化」が設定されている場合に、キー・アイテムの自動採番を抑制するには、true に設定します。
|
いいえ |
visible |
ユーザー入力およびチャネルごとにテキスト・メッセージの表示方法を決定します。「visibleプロパティ」を参照してください。 | いいえ |
iteratorVariable |
指定された変数に格納されているアイテムを反復して、複数のキーワードを動的に追加します。たとえば、iteratorVariable: "pizzaSize.type.enumValues" です。
|
いいえ |
iteratorExpression |
iteratorVariable プロパティで指定された変数内にネストされた配列の値を表示するために使用されるFreeMarker式。
たとえば、 |
|
payload |
ポストバック・ペイロード。次のプロパティがあります。
|
メッセージからのキーワードの抽出
ユーザーが番号を入力するとコンポーネントはポストバックをトリガーしますが、First,やlet's try the 1st itemなど、より幅広い入力をサポートするようにスキルを拡張できます。これを行うには、キーワード・フレーズの配列変数を作成します(first、1st、one、second、2nd、twoなど)。
keyword
プロパティで変数を参照します。たとえば、ピザを注文する際のフローは次のようになります。- 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>"
この定義では、lastというキーワードは現在の範囲開始に基づいています。これは、顧客がmoreを入力した回数に基づいて、現在表示されている最後のピザに設定されます。visibleプロパティ
visible
プロパティを使用して、ユーザー入力およびチャネルに従って表示を設定します。
プロパティ | 説明 | 必須? |
---|---|---|
expression |
テキスト、カードまたはアタッチメントを条件付きで表示または非表示にするApache FreeMarkerディレクティブ。たとえば、CrcPizzaBotのOrderPizza 状態は、""<#if cardsRangeStart?number+4 < pizzas.value?size && textOnly=='false'>true<#else>false</#if>" を使用します |
いいえ |
|
include およびexclude の場合は、テキスト、カードまたはアタッチメントを表示(include )または非表示(exclude )にする対象のチャネル・タイプのカンマ区切りリストを入力します。有効なチャネル値:
|
いいえ |
onInvalidUserInput |
ユーザーが有効な入力を行ったとき(value=false )またはユーザーが無効な入力を行ったとき(value=true )に、テキスト・アイテムまたはアタッチメントを表示するブール・フラグ。
|
いいえ |
onDisambiguation |
true の場合、あいまい性解消プロンプトが表示されるときのレスポンス・アイテム、カードまたはアクションのみが表示されます。
|
いいえ |
entitiesToResolve |
このプロパティを使用して、コンポジット・バッグ・アイテムごとにカスタマイズされたメッセージを作成します。レスポンス・アイテムを表示(include )または非表示(exclude )にするコンポジット・バッグ・アイテム名のカンマ区切りリストを追加します。
|
いいえ |
アクション・メタデータ・プロパティ
カードまたはリストのアクション、レスポンス・タイプ、またはコンポーネントのグローバル・アクション(Facebookのクイック返信アクションなど)を定義できます。アタッチメント・メッセージに対するアクションは構成できません。
プロパティ | 説明 | 必須? | |
---|---|---|---|
type |
アクション・タイプ:
|
はい | |
label |
アクションのラベル。このラベルをローカライズするには、FreeMarker式を使用してボットのリソース・バンドル内のエンティティを参照します。 | はい | |
iteratorVariable |
このオプションは、指定された変数に格納されているアイテムを反復して、複数のアクションを追加します。このプロパティは、共有アクションおよびロケーション・アクションでは使用できません。 | いいえ | |
iteratorExpression |
iteratorVariable プロパティで指定された変数内にネストされた配列の値を表示するために使用されるFreeMarker式。
たとえば、 |
いいえ | |
imageUrl |
アクションを識別するアイコンに対して使用するイメージのURL。このプロパティを使用して、Facebookのクイック返信ボタン(これはグローバル・アクションです)のアイコンを表示できます。 | いいえ | |
skipAutoNumbering |
true に設定すると、このプロパティによって個々のポストバック・アクションは自動採番の適用から除外されます。このプロパティは、テキストまたはカード・レスポンスに対して使用できます。
|
いいえ | |
channelCustomProperties |
標準のアクション・プロパティによって制御されないチャネル固有の機能をトリガーするプロパティのリスト。例は、CrcPizzaBotのOrderPizza 状態にあります。
|
いいえ | |
name |
デジタル・アシスタント・プラットフォームでのアクションを識別する名前。この名前は内部的に使用され、メッセージには表示されません。 | いいえ | |
visible |
ユーザー入力およびチャネルごとにアタッチメントの表示方法を決定します。「可視プロパティ」を参照してください。 | いいえ | |
payload |
call 、url およびpostback レスポンス・アイテムのペイロード・オブジェクト。ペイロード・プロパティを参照してください。
|
いいえ |
ペイロード・プロパティ
プロパティ | 説明 | 必須? |
---|---|---|
action |
ユーザーがこのアクションを選択するとトリガーされるaction 遷移。
|
いいえ |
variables |
アクション・タイプをpostback に設定し、変数に対して指定されたペイロード・プロパティを追加した場合に、変数の値を設定します。ユーザーがアクションをタップすると、変数はこのプロパティで指定された値に設定されます。
|
いいえ |
url |
ユーザーがこのアクションをタップしたときに開くWebサイトのURL。 | このプロパティは、url アクション・タイプに必要です。
|
phoneNumber |
ユーザーがこのアクションをタップしたときに呼び出される電話番号。 | このプロパティは、call アクション・タイプに必要です。
|
テキストのみのチャネルで非ポストバック・アクションをレンダリングする方法
共通レスポンス・コンポーネントのこれらのアクション・メタデータ・プロパティに注意する事項があります。
-
テキストのみのチャネルでハイパーリンクがサポートされている場合、グローバル・アクション・タイプが
url
またはcall
のときは、ボタンのかわりにハイパーリンクを使用できます。 -
share
およびlocation
アクション・タイプは、無視されるかレンダリングされません。
ヒント:
url
やcall
のような非ポストバック・アクションには採番できません。これらはダイアログ・エンジンに渡されず、したがってキーワードによってトリガーできないためです。その結果、2つのタイプのアクションを混在させると、一部のオプションのみに番号が付けられるため、ボットのメッセージの整合性が取れなくなります。
SDKを使用して、ポストバックの自動採番を無効にすることで、より一貫性のある出力を作成できます。例:
{
"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": { ...}
}
]
}
テキスト・レスポンス・アイテム
共通レスポンス・コンポーネントのテキスト・レスポンス・アイテムのプロパティを次に示します。
プロパティ | 説明 | 必須? | |
---|---|---|---|
text |
ユーザーに入力を求めるテキスト。 | はい | |
iteratorExpression |
iteratorVariable プロパティで指定された変数内にネストされた配列の値を表示するために使用されるFreeMarker式。
たとえば、 |
||
iteratorVariable |
変数要素を反復することで、複数のテキスト、アタッチメントまたはキーワード・アイテムをレスポンスに動的に追加します。 | いいえ | |
footerText |
メッセージの下部に表示されるテキスト(テキスト・アクションおよびボタン・アクションがある場合は両方の下)。フッターを追加して、テキストのみのチャネルでの出力を拡張します。フッターで説明されているように、FreeMarker式を使用して、テキストのみのチャネルのフッター・テキストに条件を設定できます。 | いいえ | |
separateBubbles |
このプロパティは、iteratorVariable プロパティも定義する場合に定義できます。このプロパティをtrue に設定すると、CrcPizzaBotのShowMenu およびOrderPizza 状態のPizzasやPastasのように、各テキスト・アイテムは個別のメッセージとして送信されます。false に設定すると、1つのテキスト・メッセージ(各テキスト・アイテムが新しい行で開始されるメッセージ)が送信されます。
|
いいえ | |
visible |
ユーザー入力およびチャネルごとにテキスト・メッセージの表示方法を決定します。「可視プロパティ」を参照してください。 | いいえ | |
actions |
ポストバック・アクション。テキストのみのサポートの場合は、キーワードを定義できます。 | いいえ |
showMenu
状態のメタデータを参照してください:

postback
はアクションとして指定されるため、スキルでは、最新のメッセージから選択するのではなく古いメッセージからアイテムを選択するなど、予期しないユーザー動作を処理できます。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"
カード・レスポンス・アイテム
共通レスポンス・コンポーネントのカード・レスポンス・アイテムのプロパティを次に示します。
プロパティ | 説明 | 必須? | |
---|---|---|---|
cardLayout |
カード・レイアウト: horizontal (デフォルト)およびvertical 。
|
はい | |
headerText |
ヘッダー・テキストたとえば、headerText: "<#if cardsRangeStart?number == 0>Here are our pizzas you can order today:<#else>Some more pizzas for you:</#if>" です。
|
いいえ | |
title |
カード・タイトル | はい | |
description |
カードの説明。サブタイトルとして表示されます。 | いいえ | |
imageUrl |
サブタイトルの下に表示されるイメージのURL。 | いいえ | |
cardUrl |
WebサイトのURL。カードにハイパーリンクとして表示され、これをユーザーがタップして開きます。 | いいえ | |
iteratorExpression |
iteratorVariable プロパティで指定された変数内にネストされた配列の値を表示するために使用されるFreeMarker式。
たとえば、 |
||
iteratorVariable |
このプロパティに対して指定した変数に格納されているアイテムを反復することで、複数のカードをレスポンスに動的に追加します。変数を文字列として定義しますが、イテレータ変数として使用される場合はJSON配列が保持されます。配列のオブジェクト内のプロパティは、${iteratorVarName.propertyName} のような式で参照できます。たとえば、pizzas というイテレータ変数では、ピザのnameプロパティは式${pizzas.name} を使用して参照できます。
|
いいえ | |
rangeStart |
iteratorVariable を指定した場合、rangeStart プロパティをrangeSize プロパティと組み合せて指定することによって、カードのサブセットをスタンプ・アウトできます。ハードコードされた値を入力するか、範囲開始を保持する変数を参照するFreeMarker式を使用できます。rangeStart 変数を使用することにより、参照オプションのペイロードでrangeStart 変数を設定して、次のデータ・セットにページングできます。
|
いいえ | |
rangeSize |
iteratorVariable およびrangeStart プロパティで指定されたように表示されるカードの数。
|
いいえ | |
visible |
ユーザー入力およびチャネルごとにアクション・ラベルのレンダリング方法を決定します。「可視プロパティ」を参照してください。 | いいえ |
特定のカードに固有のアクションのセット、またはカード・リストの最後にアタッチされるアクションのリストを割り当てることができます。
OrderPizza
状態には、カード・レスポンス・アイテムの定義が含まれています: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')}"
テキストのみのチャネルでカードをレンダリングする方法
一般的なレスポンス・コンポーネントは、レスポンスをカードとしてレンダリングします。スキルがテキストのみのチャネルで実行されると、カード・レスポンス・アイテムの一部のプロパティは、異なる動作をします。次の点に注意してください。
-
垂直方向または水平方向のスクロール(
cardLayout
オプションによって設定される動作)はありません。すべてのカードは1つのメッセージ・バブル内にレンダリングされます。これにはヘッダーとフッターが含まれる場合があります。カードのtitle
プロパティとdescription
プロパティは、改行文字によって区切られます。カードのtitleプロパティには番号を付けることができます。 -
ハイパーリンクは、テキストのみのチャネルでもサポートされます。改行文字で区切られた
title
プロパティとdescription
プロパティに加えて、cardUrl
プロパティ用に構成されたアドレスがバブル内にレンダリングされます。 -
imageURL
プロパティによって指定されたイメージがレンダリングされます。 - アクション・ボタンのラベル・テキストが表示されます(ボタン自体はレンダリングされません)。ユーザーがテキストを入力することもできますが、自動採番が有効になっている場合は、利便性を高めるために対応する番号を入力することもできます。

キーワードを使用したテキストのみのチャネルでのカードの最適化
ほとんどのカードには、単一アクション(CRCPizzaBotの「Order Now」ボタンなど)とグローバル・アクション(カルーセルに次のカードをロードする「More」など)があります。テキストのみのチャネルでカードをレンダリングする方法に示すように、スキルがSMSチャネル/テキストのみのチャネルで実行される場合は、各アクションのラベルに自動的に番号が付けられます。これらのチャネルでは、カード・セットは1つのバブル内に表示されるため、長くなり、読みにくくなる場合があります。これを回避するには、アクション・ラベルには関連付けられていないが、ユーザー・キーワード(1、2、3、cheese、moreなど)によって実行されるポストバック・アクションを構成します。
これらの一般的なガイドラインを使用してスキルがテキストのみのチャネルで実行される場合は、アクション・ラベルを非表示にできます。
keywords
プロパティを定義します。次のCRCPizzaBotスニペットでは、キーワード・プロパティに設定された${pizza.name}
式によって、各ピザ名のキーワードが定義されます: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}" ...
これらのキーワードは、
textOnly
がtrueの場合にのみ追加されます。
card
メタデータの場合:
title
プロパティを定義します。次のスニペットでは、式でFreeMarkerのindex
変数を使用して、タイトルの前に番号を付けます(textOnly
変数値がtrue
の場合は、${pizzas.name}
によって返されます)。つまり、顧客がmoreを入力すると、スキルによって、番号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"
- 次のスニペットでは、
textOnly
変数値がfalse
の場合にのみカード・アクション("Order"
および"More Pizzas"
)が表示されます:- label: "More Pizzas" keyword: "more" type: "postback" skipAutoNumber: true visible: expression: "<#if cardsRangeStart?number+4 < pizzas.value?size && textOnly=='false'>true<#else>false</#if>"
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>"
アタッチメント・レスポンス・アイテム
attachment
レスポンス・アイテムには、次のプロパティが含まれます。
プロパティ | 説明 | 必須? |
---|---|---|
attachmentType |
アタッチメントのタイプ: image 、audio 、video およびfile 。
|
はい |
attachmentURL |
アタッチメントのダウンロードURLまたはソース。 | はい |
Confirmation
状態では、アタッチメント・レスポンス・アイテムを使用して、オーダーのピクチャ(メニューで示されたアイテムとは異なるもの)を表示します。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}"
アクション
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
type |
アクション・タイプ | string | はい |
label |
アクションの説明的なラベル。 | string | label またはimageUrl を少なくとも1つ含める必要があります。
|
imageUrl |
アクションのイメージ | string | 少なくとも1つのlabel またはimageUrl プロパティを含める必要があります。
|
style |
ボタンのレンダリング・スタイル | "primary" , "danger" , "default" |
いいえ |
displayType |
アクション要素のタイプのレンダリング(ボタン、リンクまたはアイコン) | "button" , "link" , "icon" |
いいえ |
channelExtensions |
アクションに関連付けられたチャネル固有の拡張プロパティ | JSONObject | いいえ |
フィールド
Field
要素には、次のプロパティが含まれます。
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
displayType |
フィールド・タイプ | String |
いいえ |
label |
フィールド・ラベル | String |
はい |
channelExtensions |
チャネル固有の拡張プロパティのセット。 | Map<ChannelType, JSONObject> |
いいえ |
marginTop |
同じ列のこのフィールドと前のフィールドの間の垂直方向のスペースの量。使用可能な値は、none 、medium (デフォルト)およびlarge です。
|
String |
いいえ |
labelFontSize |
フィールド・ラベルに使用するフォント・サイズ。使用可能な値は、small 、medium (デフォルト)およびlarge です。
|
String |
いいえ |
labelFontWeight |
フィールド・ラベルに使用されるフォントの太さ。使用可能な値は、light 、medium (デフォルト)および太字です。
|
String |
いいえ |
displayInTable |
dataSetレスポンス・アイテムで表レイアウトにフィールドを条件付きで含めることができるブール型FreeMarker式。 | String |
いいえ(デフォルトはtrue )
|
displayInForm |
editFormレスポンス・アイテムまたはdataSetレスポンス・アイテムのフォーム・レイアウトにフィールドを条件付きで含めることができるブール型FreeMarker式 | String |
いいえ(デフォルトはtrue )
|
ReadOnlyフィールド
Field
プロパティを継承し、次の追加プロパティを持ちます。
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
value |
フィールドの値。 | string | はい |
width |
表レイアウトでフィールドが占める合計使用可能幅の推奨パーセント。 | 数値 | いいえ |
alignment |
表の列内の値の位置合せ。デフォルトの配置はright です。
|
"left" 、"center" および"right" |
いいえ |
Oracle Digital Assistantのリリース23.06では、メッセージ・ペイロードで受信された場合でも、読取り専用フィールドは入力フォーム内でレンダリングされません。
TextField
TextField
要素は、すべてのReadOnlyフィールド・プロパティを継承します。この要素のdisplayType
は"text"
です。これには、次の追加プロパティがあります。
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
truncateAt |
長いテキストが切り捨てられ、値が切り捨てられたことを示す省略記号が追加される位置。 | 整数 | いいえ |
fontSize |
field 値に使用されるフォント・サイズ。使用可能な値は、small 、medium (デフォルト)およびlarge です。
|
文字列 | いいえ |
fontWeight |
field 値に使用されるフォントの太さ。使用可能な値は、light、medium (デフォルト)およびboldです。
|
文字列 | いいえ |
LinkField
LinkField
要素は、すべてのReadOnlyフィールド・プロパティを継承します。これには、次の追加プロパティがあります。
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
linkLabel |
ハイパーリンクに使用されるラベル | 文字列 | いいえ |
imageUrl |
クリック時にリンクを開くイメージのURL。 | 文字列 | いいえ |
MediaField
MediaField
要素は、すべてのReadOnlyフィールド・プロパティを継承します。これには、次の追加プロパティがあります。
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
mediaType |
フィールド・メディア・タイプ("video" 、"audio" 、"image" )
|
String |
はい |
ActionField
ActionField
要素は、すべてのReadOnlyフィールド・プロパティを継承します。これには、次の追加プロパティがあります。
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
action |
ユーザーがアクションボタンをクリックしたときに実行されるアクション。 | アクション | はい |
フォーム
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
title |
フォーム・レイアウトの上に表示されるタイトル | 文字列 | いいえ |
fields |
フォーム内の読取り専用フィールドのリスト | リスト<ReadOnlyField> | はい |
formRows |
フォームに表示される行のリスト。 | リスト<FormRow> | |
actions |
アクションのリスト | リスト<アクション> | いいえ |
selectAction |
フォームが選択されたときに実行されるアクション。ユーザーがフォームの上にカーソルを置くと、アクションのラベルがツールチップとして表示されます(チャネルでサポートされている場合)。 | アクション | いいえ |
channelExtensions |
メッセージに関連付けられたチャネル固有の拡張プロパティ | JSONObject | いいえ |
列
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
fields |
列内に垂直に表示されるフィールドのリスト。列がForm 内のFormRow で使用される場合、これらのフィールドはReadOnlyField インスタンスである必要があります。FormRow がEditFormMessagePayload 内で使用されている場合、フィールドは読取り専用フィールドと編集可能フィールドの両方にできます。
|
リスト<フィールド> | はい |
verticalAlignment |
同じフォーム行の他のカラムに対するカラムの垂直配置。 | 文字列 | いいえ |
width |
フォーム行内の列の幅を決定します。使用可能な値は、auto (デフォルト)およびstretch です。stretch に設定すると、自動幅の列がレンダリングされた後、列には残りのすべての幅が使用されます。stretch に設定された列が複数ある場合は、残りの幅を均等に分割します。
|
文字列 | いいえ |
channelExtensions |
メッセージに関連付けられたチャネル固有の拡張プロパティ | JSONObject | いいえ |
editFormレスポンス・アイテム
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
type |
レスポンス・アイテム・タイプ。 | editform |
はい |
title |
フォーム・タイトル | 文字列 | いいえ |
items |
読取り専用および編集可能なフィールドのリスト。 | リスト<field> |
はい |
formColumns |
フォーム・レイアウトに使用される列数。デフォルトは1列です。 | Integer | いいえ |
actions |
カード関連のアクションのリスト。 | リスト<Action> |
いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
textInputフィールド
自由形式テキストを入力するためのフィールド。このフィールドの最小文字数と最大文字数を設定し、正規表現を使用して強制的に書式設定できます。
submittedFields
変数(マップ)を参照してユーザー入力を収集する方法を示しています。
- 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
このスニペットは、コンポジット・バッグ変数を参照してユーザー入力を収集する方法を示しています。参照されるコンポジット・バッグ・アイテムには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
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
displayType |
フィールド・タイプ | textInput (文字列)
|
はい |
name |
入力フォーム内のフィールドの一意の名前。この名前は、実行時に識別子として使用されます。 | 文字列 | はい |
label |
フィールド・ラベル | 文字列 | いいえ |
defaultValue |
初期値。テンプレートのFreeMarker式では、参照されるバッグ・アイテム(myText で表される)に値("${(submittedFields.value.myText)!''}" )がない場合、値は文字列になります。
|
文字列 | いいえ |
validationRegularExpression |
テキスト入力の形式を指定する正規表現。 | 文字列 | いいえ |
multiline |
このプロパティをtrue に設定すると、ユーザーは複数行のテキストを入力できます。
|
Boolean | いいえ |
minlength |
フィールドの検証に必要な最小文字数。入力する文字数が少なすぎると、エラー・メッセージが表示されます。 | Integer | いいえ |
maxLength |
文字の最大数または制限。 | Integer | いいえ |
inputStyle |
クライアントに適用されている形式。書式は次のとおりです。
|
文字列 | いいえ |
placeholder |
このフィールドの使用方法を説明するヒント。このテキストは、ユーザーが入力をまだ入力していない場合に表示されます。例:
|
文字列 | いいえ |
autoSubmit |
true に設定すると、ユーザーがフィールドに値を入力したときにフォームが一部送信されます。FormSubmissionMessagePayload では、partialSubmitField は、autoSubmit がtrue に設定されているフィールドの名前に設定されます。条件に依存するフィールドに自動送信を構成することをお薦めします。たとえば、あるフィールドを別のフィールドの値に基づいて表示または非表示にする場合、またはあるフィールドの許容値が別のフィールドの値セットに依存する場合は、このプロパティを設定します。他のフィールドが依存するフィールドを自動送信することで、依存フィールドに対する関連する変更でフォームを即時に更新できます。
|
文字列 | いいえ |
required |
フォーム提出でこのフィールドにユーザー入力が必要かどうか | boolean |
いいえ |
clientErrorMessage |
クライアント側の検証が失敗したときに、一部のクライアント(MS Teams、Apple Business Messaging)で使用されるメッセージ。Slackでは、このプロパティは、編集可能なフォームが会話ページ内に表示される場合にのみ使用されます。モーダル・ダイアログには表示されません。 | 文字列 | いいえ |
serverErrorMessage |
フォーム・フィールド値のサーバー側検証が失敗したときにクライアントに送信されるエラー・メッセージ。このソートのサーバー側のエラーが発生した場合は、最後のフォーム・メッセージを置換する必要があることを示すchannelExtensions プロパティを構成して、現在のフォーム・メッセージを会話に追加された新しいメッセージではなく置換することをお薦めします。
|
文字列 | いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
datePickerフィールド
maxDate
およびminDate
プロパティは、ユーザー入力を検証します。
Slackチャネルでは、この最小値と最大値の検証はサポートされていません。
submittedFields
変数(マップ)を使用してユーザー入力を取得する方法を示しています。 - 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
このスニペットは、コンポジット・バッグ変数を参照してユーザー入力を取得する方法を示しています。 - 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
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
displayType |
フィールド・タイプ | datePicker (文字列)
|
はい |
id |
入力フォーム内のフィールドの一意の名前。この名前は、実行時に識別子として使用されます。 | 文字列 | はい |
label |
わかりやすいラベル。 | 文字列 | いいえ |
defaultValue |
フィールドのデフォルト値(YYYY-MM-DDの書式)。このテンプレートは、参照されるコンポジット・バッグ・アイテム(myDate で表される)がnull値の場合に空の文字列を返すApache FreeMarker式としてこの文字列を定義します。
|
文字列 | いいえ |
minDate |
許容日数範囲内の最初の日付。Slackチャネルは、このクライアント側検証をサポートしていません。 | 文字列 | いいえ |
maxDate |
許容日数範囲内の最終日。テンプレートでは、この文字列を現在日("${.now?iso_utc[0..9]}" )として定義します。Slackチャネルは、このクライアント側検証をサポートしていません。
|
文字列 | いいえ |
placeholder |
ユーザーが日付をまだ選択していない場合に表示される予想入力の摘要。 | 文字列 | いいえ |
autoSubmit |
true に設定すると、ユーザーがフィールドに値を入力したときにフォームが一部送信されます。FormSubmissionMessagePayload では、partialSubmitField は、autoSubmit がtrue に設定されているフィールドの名前に設定されます。条件に依存するフィールドに自動送信を構成することをお薦めします。たとえば、あるフィールドを別のフィールドの値に基づいて表示または非表示にする場合、またはあるフィールドの許容値が別のフィールドの値セットに依存する場合は、このプロパティを設定します。他のフィールドが依存するフィールドを自動送信することで、依存フィールドに対する関連する変更でフォームを即時に更新できます。
|
文字列 | いいえ |
required |
フォーム提出でこのフィールドにユーザー入力が必要かどうか | boolean | いいえ |
clientErrorMessage |
クライアント側の検証が失敗したときに、一部のクライアント(MS Teams、Apple Business Messaging)で使用されるメッセージ。Slackでは、このプロパティは、編集可能なフォームが会話ページ内に表示される場合にのみ使用されます。モーダル・ダイアログには表示されません。 | 文字列 | いいえ |
serverErrorMessage |
フォーム・フィールド値のサーバー側検証が失敗したときにクライアントに送信されるエラー・メッセージ。このソートのサーバー側のエラーが発生した場合は、最後のフォーム・メッセージを置換する必要があることを示すchannelExtensions プロパティを構成して、現在のフォーム・メッセージを会話に追加された新しいメッセージではなく置換することをお薦めします。
|
文字列 | いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
timePickerフィールド
maxTime
およびminTime
プロパティは、ユーザー入力を検証します。
Slackチャネルは、最小値と最大値の検証をサポートしていません。
submittedFields
変数(マップ)を使用してユーザー入力を取得する方法を示しています。 - 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
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
displayType |
フィールド・タイプ | timePicker (文字列)
|
はい |
id |
入力フォーム内のフィールドの一意の名前。この名前は、実行時に識別子として使用されます。 | 文字列 | はい |
label |
時間選択パラメータを説明するラベル。 | 文字列 | はい |
defaultValue |
このフィールドの初期値(24時間形式)。このテンプレートは、参照されるコンポジット・バッグ・アイテム(myTime で表される)がnull値の場合に空の文字列を返すApache FreeMarker式としてこの文字列を定義します。
|
文字列 | いいえ |
minTime |
24時間形式でHH:MMとして入力された、最も早い許容時間を定義します。例、 00:00 |
文字列 | いいえ |
maxTime |
HH:MMとして24時間形式で入力された、最遅許容時間を定義します。例: 13:00
|
文字列 | いいえ |
placeholder |
入力のヒント。テンプレートごとに、placeholder の例はPick a time in the morning で、00:00 および12:00 のテンプレートの例minTime およびmaxTime 値を反映しています。
|
文字列 | いいえ |
autoSubmit |
true に設定すると、ユーザーがフィールドに値を入力したときにフォームが一部送信されます。FormSubmissionMessagePayload では、partialSubmitField は、autoSubmit がtrue に設定されているフィールドの名前に設定されます。条件に依存するフィールドに自動送信を構成することをお薦めします。たとえば、あるフィールドを別のフィールドの値に基づいて表示または非表示にする場合、またはあるフィールドの許容値が別のフィールドの値セットに依存する場合は、このプロパティを設定します。他のフィールドが依存するフィールドを自動送信することで、依存フィールドに対する関連する変更でフォームを即時に更新できます。
|
文字列 | いいえ |
required |
フォーム提出でこのフィールドにユーザー入力が必要かどうか | boolean |
いいえ |
clientErrorMessage |
クライアント側の検証が失敗したときに、一部のクライアント(MS Teams、Apple Business Messaging)で使用されるメッセージ。たとえば、Time must be in the morning です。Slackでは、このプロパティは、編集可能なフォームが会話ページ内に表示される場合にのみ使用されます。モーダル・ダイアログには表示されません。
|
文字列 | いいえ |
serverErrorMessage |
フォーム・フィールド値のサーバー側検証が失敗したときにクライアントに送信されるエラー・メッセージ。このソートのサーバー側のエラーが発生した場合は、最後のフォーム・メッセージを置換する必要があることを示すchannelExtensions プロパティを構成して、現在のフォーム・メッセージを会話に追加された新しいメッセージではなく置換することをお薦めします。
|
文字列 | いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
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
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
displayType |
フィールド・タイプ | numberInput (文字列)
|
はい |
name |
入力フォーム内のフィールドの一意の名前。この名前は、実行時に識別子として使用されます。 | 文字列 | はい |
label |
ユーザーが必要とする日付値のわかりやすいラベル。 | 文字列 | いいえ |
defaultValue |
初期値。テンプレートでは、この文字列をApache FreeMarker式として定義し、参照されるコンポジット・バッグ・アイテム(myNumber で表される)がnull値の場合に空の文字列を返します。"${(submittedFields.value.myNumber)!''}" |
文字列 | いいえ |
maxvalue |
許容される最大の数値。Slackチャネルは、最小値または最大値の検証をサポートしていません。 | Integer | いいえ |
minvalue |
最小許容数 | Integer | いいえ |
placeholder |
フィールドの使用方法を説明するヒント。このテキストは、ユーザーがまだ番号を入力していない場合に表示されます。 | 文字列 | いいえ |
autoSubmit |
true に設定すると、ユーザーがフィールドに値を入力したときにフォームが一部送信されます。FormSubmissionMessagePayload では、partialSubmitField は、autoSubmit がtrue に設定されているフィールドの名前に設定されます。条件に依存するフィールドに自動送信を構成することをお薦めします。たとえば、あるフィールドを別のフィールドの値に基づいて表示または非表示にする場合、またはあるフィールドの許容値が別のフィールドの値セットに依存する場合は、このプロパティを設定します。他のフィールドが依存するフィールドを自動送信することで、依存フィールドに対する関連する変更でフォームを即時に更新できます。
|
文字列 | いいえ |
required |
フォーム提出でこのフィールドにユーザー入力が必要かどうか | boolean |
いいえ |
clientErrorMessage |
クライアント側の検証が失敗したときに、一部のクライアント(MS Teams、Apple Business Messaging)で使用されるメッセージ。Slackでは、このプロパティは、編集可能なフォームが会話ページ内に表示される場合にのみ使用されます。モーダル・ダイアログには表示されません。 | 文字列 | いいえ |
serverErrorMessage |
フォーム・フィールド値のサーバー側検証が失敗したときにクライアントに送信されるエラー・メッセージ。このソートのサーバー側のエラーが発生した場合は、最後のフォーム・メッセージを置換する必要があることを示すchannelExtensions プロパティを構成して、現在のフォーム・メッセージを会話に追加された新しいメッセージではなく置換することをお薦めします。
|
文字列 | いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
singleSelectフィールド
- Microsoft Teamsチャネルでは、適応型カードではラジオ・ボタンがサポートされていないため、この要素は常にリストとしてレンダリングされます(
layoutStyle
がradioGroup
に設定されている場合でも)。 - Slackチャネルでは、10を超えるオプションがある場合、この要素はラジオ・グループではなくリストとしてレンダリングされます。
submittedFields
変数(マップ変数)を使用したリストの移入を示しています - 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
ヒント:
clientErrorMessage
はオプション属性ですが、Microsoft Teamsチャネルで実行されているスキルに対して定義することをお薦めします。Adaptive Cardsでは、クライアント側の検証が失敗してもメッセージは生成されないためです。
- 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
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
displayType |
フィールド・タイプ | singleSelect (文字列)
|
はい |
name |
入力フォーム内のフィールドの一意の名前。この名前は、実行時に識別子として使用されます。 | 文字列 | はい |
label |
単一選択リストの内容を説明するフィールド・ラベル・テキスト。 | 文字列 | はい |
defaultValue |
デフォルトで選択されています。テンプレートでは、この文字列値をApache FreeMarker式として定義し、参照されるコンポジット・バッグ・アイテム(mySingleSelect) で表される)がNULL値の場合に空の文字列を返します。"${(submittedFields.value.mySingleSelect)!''}" |
文字列 | いいえ |
options |
使用可能なオプションの配列。テンプレートでは、これらのオプションを静的に個々のlabel およびvalue ペアと文字列値を使用して定義しますが、iteratorVariable およびiteratorExpression プロパティを使用して選択オプションを動的に移入できます。 このスニペットでは、type およびenum プロパティによって返される経費タイプ値は、split 組込みを使用してリスト内で順序付けされます。
|
リスト<オプション> | はい |
layoutStyle |
フォームでの単一選択オプションのレイアウト方法。リスト(layoutStyle: list )またはラジオ・ボタン(layoutStyle: radioGroup )としてグループ化できます。
|
文字列 | |
placeholder |
フィールドの使用方法を説明するヒント。これは、ユーザーがまだ選択を行っていない場合に表示されます。例:
このプレースホルダは、リスト・レイアウトのレンダリングにのみ表示されます。 |
文字列 | いいえ |
autoSubmit |
true に設定すると、ユーザーがフィールドに値を入力したときにフォームが一部送信されます。FormSubmissionMessagePayload では、partialSubmitField は、autoSubmit がtrue に設定されているフィールドの名前に設定されます。条件に依存するフィールドに自動送信を構成することをお薦めします。たとえば、あるフィールドを別のフィールドの値に基づいて表示または非表示にする場合、またはあるフィールドの許容値が別のフィールドの値セットに依存する場合は、このプロパティを設定します。他のフィールドが依存するフィールドを自動送信することで、依存フィールドに対する関連する変更でフォームを即時に更新できます。
|
文字列 | いいえ |
required |
フォーム提出でこのフィールドにユーザー入力が必要かどうか | boolean |
いいえ |
clientErrorMessage |
クライアント側の検証が失敗したときに、一部のクライアント(MS Teams、Apple Business Messaging)で使用されるメッセージ。Slackでは、このプロパティは、編集可能なフォームが会話ページ内に表示される場合にのみ使用されます。モーダル・ダイアログには表示されません。 | 文字列 | いいえ |
serverErrorMessage |
フォーム・フィールド値のサーバー側検証が失敗したときにクライアントに送信されるエラー・メッセージ。このソートのサーバー側のエラーが発生した場合は、最後のフォーム・メッセージを置換する必要があることを示すchannelExtensions プロパティを構成して、現在のフォーム・メッセージを会話に追加された新しいメッセージではなく置換することをお薦めします。
|
文字列 | いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
multiSelectフィールド
- Microsoft Teamsチャネルでは、適応型カードでは複数選択チェック・ボックスがサポートされていないため、この要素は常にリストとしてレンダリングされます(
layoutStyle
がcheckboxes
に設定されている場合でも)。 - Slackチャネルでは、10を超えるオプションがある場合、この要素は複数選択チェック・ボックスのセットではなくリストとしてレンダリングされます。
submittedFields
変数(マップ)を参照してリストを移入する方法を示しています。 - 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
このスニペットは、リストに移入するコンポジット・バッグ・エンティティの参照を示しています。 - 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
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
displayType |
フィールド・タイプ | multiselect (文字列)
|
はい |
name |
入力フォーム内のフィールドの一意の名前。この名前は、実行時に識別子として使用されます。 | 文字列 | はい |
label |
multiSelectリストの内容を説明するフィールド・ラベル。 | 文字列 | はい |
defaultValue |
デフォルトで選択されています。このテンプレートは、参照されるコンポジット・バッグ・アイテム(myMultiSelect で表される)がnull値の場合に空の文字列を返すApache FreeMarker式としてこの文字列を定義します。
|
List<String> |
いいえ |
options |
使用可能なオプションの配列。テンプレートでは、これらのオプションを静的に個々のlabel およびvalue ペアと文字列値を使用して定義しますが、iteratorVariable およびiteratorExpression プロパティを使用して選択オプションを動的に移入できます。
|
List<option> |
はい |
placeholder |
フィールドの使用方法を説明するヒント。ユーザーが何も選択していない場合に表示されます。
このプレースホルダは、リスト・レイアウトに対してのみ表示されます。チェックボックス・レイアウトでは使用できません。 |
文字列 | いいえ |
layoutStyle |
multiSelectオプションのレイアウト。オプションは、list およびcheckboxes です。
|
文字列 | いいえ |
autoSubmit |
true に設定すると、ユーザーがフィールドに値を入力したときにフォームが一部送信されます。FormSubmissionMessagePayload では、partialSubmitField は、autoSubmit がtrue に設定されているフィールドの名前に設定されます。条件に依存するフィールドに自動送信を構成することをお薦めします。たとえば、あるフィールドを別のフィールドの値に基づいて表示または非表示にする場合、またはあるフィールドの許容値が別のフィールドの値セットに依存する場合は、このプロパティを設定します。他のフィールドが依存するフィールドを自動送信することで、依存フィールドに対する関連する変更でフォームを即時に更新できます。
|
文字列 | いいえ |
required |
フォーム提出でこのフィールドにユーザー入力が必要かどうか | boolean | いいえ |
clientErrorMessage |
クライアント側の検証が失敗したときに、一部のクライアント(MS Teams、Apple Business Messaging)で使用されるメッセージ。Slackでは、このプロパティは、編集可能なフォームが会話ページ内に表示される場合にのみ使用されます。モーダル・ダイアログには表示されません。 | 文字列 | いいえ |
serverErrorMessage |
フォーム・フィールド値のサーバー側検証が失敗したときにクライアントに送信されるエラー・メッセージ。このソートのサーバー側のエラーが発生した場合は、最後のフォーム・メッセージを置換する必要があることを示すchannelExtensions プロパティを構成して、現在のフォーム・メッセージを会話に追加された新しいメッセージではなく置換することをお薦めします。
|
文字列 | いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
トグル・フィールド
Slackチャネルでは、この要素はラジオ・ボタンのペアとしてレンダリングされます。
- displayType: toggle
defaultValue: "false"
name: TipIncluded
labelOn: Tip
label: Tip Included?
valueOff: "false"
labelOff: No Tip
valueOn: "true"
このスニペットは、コンポジット・バッグ変数を参照してユーザー入力を取得する方法を示しています。 - 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"
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
displayType |
フィールド・タイプ | toggle (文字列)
|
はい |
id |
入力フォーム内のフィールドの一意の名前。この名前は、実行時に識別子として使用されます。 | 文字列 | はい |
label |
トグルがオンになったときに何が起こるかを示すラベル。 | 文字列 | はい |
defaultValue |
初期値。トグルを最初にオンにする場合は、これをvalueOn の値に設定します。テンプレートでは、この文字列をApache FreeMarker式として定義し、参照されるコンポジット・バッグ・アイテム( myToggle で表される)がnull値の場合にトグルを切り替えます。
|
文字列 | はい |
valueOff |
トグルがオフになったときの値。テンプレートごとのデフォルト値はfalse (valueOff: "false" )です。
|
文字列 | はい |
valueOn |
トグルがオンのときの値。テンプレートのデフォルト値はtrue (value On: "true" )です。
|
文字列 | はい |
labelOn |
トグルの位置のラベル | 文字列 | いいえ |
labelOff |
トグルのオフ位置のラベル。 | 文字列 | いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
テキスト・フィールド
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
displayType |
要素タイプです。 | text (文字列)
|
はい |
name |
入力フォーム内のフィールドの一意の名前。この名前は、実行時に識別子として使用されます。 | 文字列 | はい |
value |
フィールドのRAW値 | 文字列 | はい |
width |
アイテムがテーブル・レイアウトで占める合計使用可能幅の割合。100から指定された幅の項目を差し引いた残りの幅は、幅を指定せずに項目に均等に分割されます。 | Integer | いいえ |
alignment |
値と表の列の位置合せ。 | left 、center およびright 。デフォルトはright です。
|
いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
リンク・フィールド
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
displayType |
フィールド・タイプ | link (文字列)
|
はい |
name |
入力フォーム内のフィールドの一意の名前。この名前は、実行時に識別子として使用されます。 | 文字列 | はい |
value |
URLアドレス。例: http:www.oracle.com |
文字列 | はい |
width |
アイテムがテーブル・レイアウトで占める合計使用可能幅の割合。100から指定された幅の項目を差し引いた残りの幅は、幅を指定せずに項目に均等に分割されます。 | Integer | いいえ |
alignment |
値と表の列の位置合せ。指定可能な値は、left 、center およびright です。デフォルトはright です。
|
文字列 | いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
EditFormMessagePayload
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
type |
メッセージ・ペイロード・タイプ。 | editForm (文字列)
|
はい |
headerText |
フォームの上に表示されるヘッダー・テキスト。 | 文字列 | いいえ |
footerText |
フォームおよびアクションの下に表示されますが、グローバル・アクションの上に表示されます。 | 文字列 | いいえ |
title |
フォーム・タイトル | 文字列 | いいえ |
formRows |
フォームに表示される行のリスト。 | リスト<FormRow> |
いいえ |
fields |
読取り専用および編集可能なフィールドのリスト。 | リスト<field> |
はい |
formColumns |
フォーム・レイアウトに使用される列数。デフォルトは1列です。 | Integer | いいえ |
actions |
アクションのリスト。 | リスト<Action> |
いいえ |
globalActions |
グローバル・アクションのリスト。これらのアクションのレンダリングはチャネル固有です。たとえば、Facebookのアクションはreply_actions によってレンダリングされます。
|
リスト<Action> |
いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
フィールドの自動送信
autoSubmit
プロパティがtrue
に設定されている場合、クライアントは、これまでに入力された有効なフィールド値、または自動発行フィールドの値のみを含むsubmittedField
マップを含むFormSubmissionMessagePayload
を送信します(実装はチャネル固有です)。まだ設定されていないフィールド(必須かどうかに関係なく)、またはクライアント側の検証に違反するフィールドは、submittedField
マップに含まれません。自動発行フィールド自体に無効な値が含まれている場合、FormSubmissionMessagePayload
は送信されず、かわりにクライアント・エラー・メッセージが表示されます。
Microsoft Teamsでは自動発行はサポートされていません。
SubmitFormAction
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
type |
アクション・タイプ | submitForm (文字列)
|
はい |
postback |
ポストバック・ペイロード。ナビゲーションをトリガーするアクション・プロパティを含めることができます。このプロパティの値は、FormSubmissionMessagePayload ポストバック・オブジェクトから取得することをお薦めします。
|
JSONObject | いいえ |
variable |
送信された値を格納する変数の名前。これらの値はFormSubmissionMessagePayload にあります。
|
文字列 | いいえ |
processingMethod |
送信されたフィールド値に対してエンティティの変換コンポーネントで使用される処理手順。これをFormSubmissionMessagePayload に設定できますが、次のように設定することもできます:
|
文字列 | はい |
label |
表示アクションのラベル。 | 文字列 | はい – label 値またはimageUrl 値を少なくとも1つ指定する必要があります。
|
imageUrl |
表示アクションのイメージ。 | 文字列 | 少なくとも1つのlabel またはimageUrl 値を指定する必要があります。
|
channelExtensions |
チャネル固有の拡張プロパティのセット。たとえば、Facebook Messengerの最大高さを設定できます。 | マップ<ChannelType, JSONObject> |
いいえ |
FormSubmissionMessagePayload
SubmitFormAction
ボタンをクリックしてフォームを送信すると、チャネルによってODAパイプラインに戻ります。これには、次のプロパティがあります。
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
type |
ペイロードのタイプ。 | "formSubmission" (文字列値)
|
はい |
submittedFields |
送信されたフィールド値のキーと値のペア。キーは、フィールドの名前(ID)です。 | マップ<文字列、オブジェクト> | はい |
postback |
ポストバック・ペイロード。ナビゲーションをトリガーするアクション・プロパティが含まれる場合があります。値はSubmitFormAction から取得することをお薦めします。 |
JSONObject | いいえ |
partialSubmitField |
部分フォーム提出をトリガーするフィールドの名前。自動送信が有効になっているフィールド(autoSubmit: true )は、フォームの一部の送信をトリガーできます。
|
文字列 | いいえ |
入力フォームの更新
autosubmit
がtrue
に設定されているか、ユーザーがsubmitForm
アクション・ボタンをタップしたために、ユーザーがすべての必須情報を指定しなかった場合、または一部のフィールド値に無効な値が含まれている場合があります。このような場合、ダイアログ・エンジンは新しいEditFormMessagePayload
を送信します。ただし、そのメッセージは前のフォーム・メッセージを置き換える必要があります。前のフォーム・メッセージを置換するようにクライアント・チャネルに指示するには、会話に新しいフォーム・メッセージを追加するかわりに、チャネル拡張プロパティreplaceMessage
を次のように構成します。- channel: ${system.channelType}
properties:
replaceMessage: "${system.message.messagePayload.type == 'formSubmission'}"
channelExtensions
要素に追加されます。...,
"channelExtensions": { "replaceMessage": "true"}
TableMessagePayload
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
type |
メッセージ・ペイロード・タイプ | "table" |
はい |
headings |
表列ヘッダーのリスト | リスト<TableHeading> | はい |
rows |
表の行のリスト | リスト<行> | はい |
forms |
フォームのリスト | リスト | はい |
formColumns |
フォーム・レイアウトで使用される列数。デフォルトは1です。 | Integer | はい |
paginationInfo |
前または次のセット・ボタンのレンダリングに使用できるページ区切り情報 | PaginationInfo | はい |
Row
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
fields |
読取り専用フィールドのリスト | リスト<ReadOnlyフィールド> | はい |
selectAction |
フォームが選択されたときに実行されるアクション。ユーザーがフォームにカーソルを置くと、アクションのラベルがツールチップとして表示されます(チャネルでサポートされている場合)。 | アクション | いいえ |
channelExtensions |
メッセージに関連付けられたチャネル固有の拡張プロパティ | マップ<ChannelType>、JSONObject | いいえ |
TableHeading
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
label |
ヘッダー・ラベル | 文字列 | はい |
width |
見出しのラベル幅 | 文字列 | いいえ |
alignment |
列値(left 、right またはcenter )の配置。デフォルトはright です。
|
文字列 | いいえ |
channelExtensions |
チャネル固有の拡張プロパティのセット。 |
|
いいえ |
PaginationInfo
Table
、Form
およびTable-Form
オブジェクト内の結果のページング情報を表します。
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
totalCount |
合計結果数 | 数値 | はい |
rangeSize |
1ページ当たりの結果の範囲サイズ | 数値 | はい |
status |
ページング・ステータス・メッセージ | string | はい |
currentRangeSize |
結果のキュレント範囲のサイズ | 数値 | はい |
rangeStart |
結果の現在の範囲の開始オフセット | 数値 | はい |
nextRangeSize |
結果の次の範囲のサイズ | 数値 | はい |
hasPrevious |
前の結果セットがあるかどうかを示します | boolean | はい |
hasNext |
次の結果セットがあるかどうかを示します | boolean | はい |
tableFormMessageLayout
名前 | 説明 | タイプ | 必須? |
---|---|---|---|
type |
メッセージ・ペイロード・タイプ | "tableForm" |
はい |
headings |
表列ヘッダーのリスト | リスト<TableHeading> | はい |
rows |
表の行のリスト | リスト<行> | はい |
forms |
フォームのリスト | リスト | はい |
formColumns |
フォーム・レイアウトで使用される列数。デフォルトは1です。 | Integer | はい |
showFormButtonLabel |
特定の行のフォーム・レイアウトの表示に使用されるボタンのラベル。 | 文字列 | はい |
paginationInfo |
前または次のセット・ボタンのレンダリングに使用できるページ区切り情報 | PaginationInfo | はい |
dataSetレスポンス・アイテム
dataSet
レスポンス・アイテムを使用すると、表およびフォームを作成できます。次のプロパティーが含まれています。
プロパティ | 説明 | 必須? |
---|---|---|
layout |
dataSetのレンダリングに使用されるレイアウト・スタイル。使用可能な値は、table 、form およびtableForm です。
|
はい |
formColumns |
フォーム・レイアウトでのアイテムのレンダリングに使用される列の数。レイアウトがform または tableForm の場合にのみ適用されます。デフォルトは1 です。
|
いいえ |
showFormButtonLabel |
フォーム・ダイアログをtableForm レイアウト・スタイルで開くために使用するラベル。現在、Slackチャネルでのみ使用されています。その他のチャネルでは、フォーム・レイアウトに追加のアイテムを表示するための表の行の拡張がサポートされています。
|
いいえ |
data |
dataSet でデータ・エントリを定義するために使用されます。DataSet data Propertiesを参照してください。 |
はい |
DataSetデータ・プロパティ
dataSet
レスポンス・アイテムのdata
プロパティには、次のサブプロパティが含まれます。
プロパティ | 説明 | 必須? |
---|---|---|
iteratorExpression |
反復するエントリのリストを返すFreemarker式を定義し、複数のデータ・エントリをdataSet に動的に追加できるようにします。
|
いいえ |
iteratorVariable |
反復処理されるデータ・エントリのリスト内の現在のデータ・エントリを参照するために使用できるイテレータ変数の名前を指定します。 | いいえ |
rangeSize |
iteratorExpression およびiteratorVariable プロパティを指定したときに一度に表示されるデータ・エントリの数。
|
いいえ |
visible |
ユーザー入力およびチャネルごとにメッセージの表示方法を決定します。「可視プロパティ」を参照してください。 | いいえ |
formTitle |
SlackチャネルのtableForm レイアウトのフォーム・ダイアログに使用されるタイトル。デフォルトは、View details です。
|
いいえ |
items |
データ入力ごとに表示されるデータ項目。DataSet Data Item Propertiesを参照してください。 | はい |
DataSetデータ・アイテムのプロパティ
プロパティ | 説明 | 必須? |
---|---|---|
width |
アイテムがテーブル・レイアウトで使用する合計使用可能幅の割合(整数で表現)です。100から指定された幅の項目を差し引いた残りの幅は、幅を指定せずに項目に均等に分割されます。 | いいえ |
alignment |
値と表の列の位置合せ。使用可能な値は、left 、center およびright です。デフォルトはleft です。
|
いいえ |
displayType |
アイテムの表示タイプ。使用可能な値は、text およびlink です。デフォルトはtext です。
|
いいえ |
linkLabel |
表示タイプがlink に設定されている場合にハイパーリンクに使用されるラベル。デフォルトは、アイテムのvalue プロパティの値です。
|
いいえ |
displayInTable |
アイテムを表の列として表示するかどうかを定義します。このプロパティは、tableForm レイアウトでのみ適用可能です。デフォルトはfalse です。
|
いいえ |
displayInForm |
フォームのフィールドとしてアイテムを表示するかどうかを定義します。このプロパティは、tableForm レイアウトでのみ適用可能です。デフォルトはfalse です。
|
いいえ |
label |
データ・アイテムのラベル。 | はい |
value |
データ・アイテムの値。 | はい |
system.entityToResolve変数
system.entityToResolve
変数は、エンティティの解決コンポーネントおよび共通レスポンス・コンポーネントによって実行されるエンティティ解決プロセスの現在のステータスに関する情報を提供します。メッセージをカスタマイズする場合は、通常、共通レスポンス・コンポーネントのメタデータでこの変数値のプロパティを参照します。これを使用して、エンティティのエラー・メッセージのロジックや、エンティティの解決および共通レスポンス・コンポーネントに属する様々なプロパティのロジックを定義できます。現在のエンティティ値を返すには、次のプロパティを追加します:
userInput
prompt
promptCount
updatedEntities
outOfOrderMatches
disambiguationValues
enumValues
needShowMoreButton
rangeStartVar
nextRangeStart
prompt
、errorMessage
、検証ルールなどのバッグ・アイテム・プロパティを使用することもできます。
Sorry,'${system.entityToResolve.value.userInput!'this'}' is not a valid pizza size.
system.entityToResolve
定義の使用例を次に示します。その中に、text
プロパティに対して定義されたメッセージがあります。これは、Apache FreeMarkerのlist
ディレクティブおよび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
および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"
「さらに表示」ラベルには、system.showMore
(action: "system.showMore"
)が含まれている必要があります。そうしないと、機能しません。
ユーザー・メッセージの検証
variable
プロパティに対して設定される、ユーザーが入力したフリー・テキスト値を検証します。たとえば、variable
プロパティがプリミティブ型(string、 boolean、 float、 double)として定義されている場合、これらのコンポーネントは値をプリミティブ型の1つと照合しようとします。variableプロパティがエンティティ・タイプの変数に対して定義されている場合、これらのコンポーネントはNLPエンジンをコールして、値をエンティティのいずれかに解決します。ただし、これらのコンポーネントが値を検証できない場合、ボットはエラー・メッセージを表示できます。

system.invalidUserInput
変数を参照することで、条件付きエラー・メッセージをボットの返信に追加できます。この変数はブールであるため、FreeMarkerのif
ディレクティブとともに条件として使用して、ユーザーが無効な値を入力した場合にのみメッセージを表示できます。それ以外の場合、メッセージは表示されません。if
ディレクティブによって評価されるFreeMarkerテンプレート内にこの変数を条件として追加することにより、次のスニペットで参照されるCrcPizzaBotのAskPizzaSize
状態がこれを示しています。true
に設定されているため、ユーザーが無効な値を入力したときに、ボットはエラー・メッセージを標準メッセージ(What size do you want?)に追加します。
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