SelectionInput
widget 提供一组可选择的项,例如复选框、单选按钮、开关或下拉菜单。您可以使用此微件向用户收集已定义和标准化的数据。如需向用户收集未定义的数据,请改用 TextInput
widget。
SelectionInput
widget 支持建议(可帮助用户输入统一数据)和变化操作(即 Actions
),在选择输入字段中发生更改(例如用户选择或取消选择某项)时运行。
聊天应用可以接收和处理所选项的价值。 如需详细了解如何使用表单输入,请参阅接收表单数据。
示例
本部分提供了使用 SelectionInput
widget 的卡片示例。这些示例使用不同类型的部分输入:
示例 1:复选框
以下代码会显示一个对话框,要求用户通过使用复选框的 SelectionInput
widget 指定联系人是专业联系人和/或个人联系人:
示例 2:单选按钮
以下代码会显示一个对话框,让用户通过一个使用单选按钮的 SelectionInput
widget 指定联系人是专业联系人还是个人联系人:
示例 3:开关
以下代码会显示一个对话框,要求用户通过使用开关的 SelectionInput
widget 指定联系人是专业联系人还是个人联系人:
示例 4:下拉菜单
以下代码会显示一个对话框,让用户通过一个使用下拉菜单的 SelectionInput
widget 指定联系人是专业联系人还是个人联系人:
示例 5:多选菜单
下面会显示一个对话框,要求用户从多选菜单中选择联系人:
适用于多选菜单的其他数据源
以下部分介绍了如何使用多选菜单填充来自动态来源(例如 Google Workspace 应用或外部数据源)的数据。
来自 Google Workspace 的数据源
您可以在 Google Workspace 中从以下数据源为多选菜单填充内容:
- Google Workspace 用户:您只能填充同一 Google Workspace 组织中的用户。
- Chat 聊天室:用户在多选菜单中输入内容时,只能查看和选择其 Google Workspace 组织中所属的聊天室。
如需使用 Google Workspace 数据源,请指定 platformDataSource
字段。与其他选择输入类型不同,您可以省略 SectionItem
对象,因为这些选择项是从 Google Workspace 动态获取的。
以下代码显示了一个多选的 Google Workspace 用户菜单。为了填充用户,选择输入会将 commonDataSource
设置为 USER
:
JSON
{
"selectionInput": {
"name": "contacts",
"type": "MULTI_SELECT",
"label": "Selected contacts",
"multiSelectMaxSelectedItems": 5,
"multiSelectMinQueryLength": 1,
"platformDataSource": {
"commonDataSource": "USER"
}
}
}
以下代码显示了 Chat 聊天室的多选菜单。如需填充空格,选择输入需指定 hostAppDataSource
字段。多选菜单还会将 defaultToCurrentSpace
设置为 true
,这会将当前空间设为菜单中的默认选择:
JSON
{
"selectionInput": {
"name": "spaces",
"type": "MULTI_SELECT",
"label": "Selected contacts",
"multiSelectMaxSelectedItems": 3,
"multiSelectMinQueryLength": 1,
"platformDataSource": {
"hostAppDataSource": {
"chatDataSource": {
"spaceDataSource": {
"defaultToCurrentSpace": true
}
}
}
}
}
}
Google Workspace 以外的数据源
多选菜单也可以填充来自第三方或外部数据源的项。例如,您可以使用多选菜单帮助用户从客户关系管理 (CRM) 系统中的潜在客户列表中进行选择。
如需使用外部数据源,请使用 externalDataSource
字段指定用于从数据源返回项的函数。
为了减少对外部数据源的请求,您可以添加在用户输入菜单内容之前显示在多选菜单中的建议项。例如,您可以为用户填充最近搜索过的联系人。如需填充来自外部数据源的建议内容,请指定 SelectionItem
对象。
以下代码显示了用户可从外部联系人集中的项多选菜单。默认情况下,该菜单会显示一个联系人,并运行 getContacts
函数以从外部数据源检索和填充项目:
JSON
{
"selectionInput": {
"name": "contacts",
"type": "MULTI_SELECT",
"label": "Selected contacts",
"multiSelectMaxSelectedItems": 5,
"multiSelectMinQueryLength": 2,
"externalDataSource": {
"function": "getContacts"
},
"items": [
{
"text": "Contact 3",
"value": "contact-3",
"startIconUri": "https://www.gstatic.com/images/branding/product/2x/contacts_48dp.png",
"bottomText": "Contact three description",
"selected": false
}
]
}
}
对于外部数据源,您还可以自动补全用户在多选菜单中开始输入的项。例如,如果用户开始为填充美国城市的菜单输入 Atl
,您的 Chat 应用可以在用户结束输入之前自动建议 Atlanta
。您最多可以自动填充 100 项。
如需自动填充列表项,您需要创建一个函数,该函数会查询外部数据源,并在每次用户在多选菜单中输入内容时返回相应项。该函数必须执行以下操作:
- 传递一个表示用户与菜单互动的事件对象。
- 确定互动事件的
invokedFunction
值与externalDataSource
字段中的函数匹配。 - 当函数匹配时,从外部数据源返回建议的项。如需根据用户类型建议商品,请获取
autocomplete_widget_query
键的值。此值表示用户在菜单中输入的内容。
以下代码会自动填充外部数据资源中的项。在前面的示例中,Chat 应用会根据函数 getContacts
的触发时间来建议项目:
Apps 脚本
Node.js
JSON 表示法和字段
JSON 表示法 |
---|
{ "name": string, "label": string, "type": enum ( |
字段 | |
---|---|
name
|
用于标识表单输入事件中的选择输入的名称。 如需详细了解如何使用表单输入内容,请参阅接收表单数据。 |
label
|
界面中选择输入字段上方显示的文本。 指定有助于用户输入应用所需信息的文本。例如,如果用户从下拉菜单中选择工作工单的紧急程度,则相应的标签可能是“紧急”或“选择紧急程度”。 |
type
|
在 |
items[]
|
可选项的数组。例如,单选按钮或复选框的数组。最多支持 100 项内容。 |
onChangeAction
|
如果已指定,则会在选择发生更改时提交表单。如果未指定,则必须指定一个用于提交表单的单独按钮。 如需详细了解如何使用表单输入内容,请参阅接收表单数据。 |
multiSelectMaxSelectedItems
|
对于多选菜单,这是指用户可以选择的最大项数。最小值为 1 项。如果未指定,则默认为 3 项。 |
multiSelectMinQueryLength
|
对于多选菜单,用户在 Chat 应用查询之前输入的文本字符数会自动填充,并在菜单中显示建议的项。 如果未指定,则静态数据源默认为 0 个字符,外部数据源默认为 3 个字符。 |
联合字段 multi_select_data_source 。仅限 Chat 应用。对于多选菜单,此为用于填充选择项的数据源。
multi_select_data_source 只能是下列其中一项:
|
|
externalDataSource
|
外部数据源,例如关系型数据库。 |
platformDataSource
|
来自 Google Workspace 的数据源。 |
SelectionType
枚举 | |
---|---|
CHECK_BOX
|
一组复选框。用户可以选中一个或多个复选框。 |
RADIO_BUTTON
|
一组单选按钮。用户可以选择一个单选按钮。 |
SWITCH
|
一组开关。用户可以开启一个或多个开关。 |
DROPDOWN
|
一个下拉菜单。用户可以从菜单中选择一项。 |
MULTI_SELECT
|
Chat 应用支持,但 Google Workspace 插件不支持。 静态或动态数据的多选菜单。用户可从菜单栏中选择一项或多项。用户还可以输入值来填充动态数据。例如,用户可以开始输入某个 Google Chat 聊天室的名称,而微件会自动建议该聊天室。 如需为多选菜单填充内容,您可以使用以下类型的数据源:
如需查看有关如何实现多选菜单的示例,请参阅
|
SelectionItem
JSON 表示法 |
---|
{ "text": string, "value": string, "selected": boolean, "startIconUri": string, "bottomText": string } |
字段 | |
---|---|
text
|
用于向用户标识或描述商品的文本。 |
value
|
与此商品相关联的值。客户端应将此值用作表单输入值。 如需详细了解如何使用表单输入内容,请参阅接收表单数据。 |
selected
|
默认情况下,项目是否处于选中状态。如果所选项输入仅接受一个值(例如单选按钮或下拉菜单),请仅为一项设置此字段。 |
startIconUri
|
对于多选菜单,是在项目的 |
bottomText
|
对于多选菜单,这是显示在该项的 |
操作
一个操作,用于描述提交表单时的行为。例如,您可以调用 Apps 脚本脚本来处理表单。如果操作被触发,表单值会发送到服务器。
JSON 表示法 |
---|
{ "function": string, "parameters": [ { object ( |
字段 | |
---|---|
function
|
点击或激活所含元素时要调用的自定义函数。 如需查看用法示例,请参阅创建互动卡片。 |
parameters[]
|
操作参数列表。 |
loadIndicator
|
指定在调用该操作时操作显示的加载指示器。 |
persistValues
|
指示表单值在操作后是否保留。默认值为
如果为
如果为 |
interaction
|
可选。打开对话框时必填。 在响应与用户互动(例如用户点击卡片消息中的按钮)时应执行的操作。
如果未指定,应用将通过照常执行
通过指定 Chat 应用支持,但 Google Workspace 插件不支持。如果为插件指定此值,系统会删除整个卡,且客户端中不会显示任何内容。 |
ActionParameter
调用操作方法时提供的字符串参数列表。例如,可以考虑使用三个延后按钮:“立即延后”“延后一天”或“下周延后”。您可以使用 action method = snooze()
,在字符串参数列表中传递暂停类型和暂停时间。
如需了解详情,请参阅 CommonEventObject
。
JSON 表示法 |
---|
{ "key": string, "value": string } |
字段 | |
---|---|
key
|
操作脚本的参数名称。 |
value
|
参数的值。 |
LoadIndicator
指定在调用该操作时操作显示的加载指示器。
枚举 | |
---|---|
SPINNER
|
显示一个旋转图标,表示正在加载内容。 |
NONE
|
系统不会显示任何内容。 |
互动
可选。打开对话框时必填。
在响应与用户互动(例如用户点击卡片消息中的按钮)时应执行的操作。
如果未指定,应用将通过照常执行 action
(如打开链接或运行函数)进行响应。
通过指定 interaction
,应用能够以特殊的交互方式做出响应。例如,通过将 interaction
设置为 OPEN_DIALOG
,应用可以打开对话框。
指定后,系统不会显示加载指示器。
Chat 应用支持,但 Google Workspace 插件不支持。如果为插件指定此值,系统会删除整个卡,且客户端中不会显示任何内容。
枚举 | |
---|---|
INTERACTION_UNSPECIFIED
|
默认值。action 会照常执行。
|
OPEN_DIALOG
|
打开一个对话框,这是一个基于卡片的窗口化界面,Chat 应用可使用该界面与用户互动。 仅适用于 Chat 应用响应卡片消息中的按钮点击操作时。 Google Workspace 插件不支持。如果为插件指定此值,系统会删除整个卡,且客户端中不会显示任何内容。 |
问题排查
当 Google Chat 应用或卡片返回错误时,Chat 界面会显示“出了点问题”或“无法处理您的请求”的消息。有时,Chat 界面不显示任何错误消息,但 Chat 应用或卡片产生意外结果;例如,卡片消息可能不会显示。
虽然 Chat 界面中可能不会显示错误消息,但为 Chat 应用启用错误日志记录功能,您可以借助描述性错误消息和日志数据来修复错误。如需获取查看、调试和修正错误方面的帮助,请参阅排查并修正 Google Chat 错误。