Event

Google Chat 应用互动事件,表示并包含有关用户与 Chat 应用互动的数据。如需将 Chat 应用配置为接收互动事件,请参阅接收和响应用户互动。

除了接收用户互动事件之外,Chat 应用还可以接收有关聊天室更改的事件,例如向聊天室添加新成员。如需了解聊天室事件,请参阅处理 Google Chat 中的事件。

警告:此事件对象仅用于非插件的 Chat 应用。如果您的 Chat 应用是作为 Google Workspace 插件构建的,请改为参阅插件文档中的插件事件对象。如需确认应用收到的事件类型,请参阅确定事件类型。

JSON 表示法
{
  "type": enum (EventType),
  "eventTime": string,
  "token": string,
  "threadKey": string,
  "message": {
    object (Message)
  },
  "user": {
    object (User)
  },
  "thread": {
    object (Thread)
  },
  "space": {
    object (Space)
  },
  "action": {
    object (FormAction)
  },
  "configCompleteRedirectUrl": string,
  "isDialogEvent": boolean,
  "dialogEventType": enum (DialogEventType),
  "common": {
    object (CommonEventObject)
  },
  "appCommandMetadata": {
    object (AppCommandMetadata)
  },
  "systemCommandMetadata": {
    object (SystemCommandMetadata)
  }
}
字段
type

enum (EventType)

用户与 Chat 应用互动的类型,例如 MESSAGE 或 ADDED_TO_SPACE。

eventTime

string (Timestamp format)

指示互动事件发生时间的时间戳。

token

string

旧版 Chat 应用可用于验证请求是否来自 Google 的密钥值。Google 会随机生成令牌,其值保持不变。您可以在 Google Cloud 控制台的 Chat API 配置页面中获取、撤消或重新生成令牌。

现代 Chat 应用不使用此字段。它不会出现在 API 响应和 Chat API 配置页面中。

threadKey

string

与互动事件相关的会话串的 Chat 应用定义键。如需了解详情,请参阅 spaces.messages.thread.threadKey。

message

object (Message)

对于 ADDED_TO_SPACE、CARD_CLICKED 和 MESSAGE 互动事件,触发互动事件的消息(如果适用)。

user

object (User)

与 Chat 应用互动的用户。

thread

object (Thread)

用户与 Chat 应用互动的消息串。这可能是由新发送的消息创建的新消息串。如果互动事件与特定消息或会话串相关联,则会填充此字段。

space

object (Space)

用户与 Chat 应用互动的聊天室。

action

object (FormAction)

对于 CARD_CLICKED 互动事件,用户点击卡片或对话框时关联的表单操作数据。如需了解详情,请参阅读取用户在卡片上输入的表单数据。

configCompleteRedirectUrl

string

此网址会针对 MESSAGE、ADDED_TO_SPACE 和 APP_COMMAND 互动事件进行填充。在 Google Chat 之外完成授权或配置流程后,用户必须重定向到此网址,以向 Google Chat 发出授权或配置流程成功的信号。如需了解详情,请参阅将 Chat 应用与其他服务和工具关联。

isDialogEvent

boolean

对于 CARD_CLICKED 和 MESSAGE 互动事件,用户是否正在与对话框互动或即将与其互动。

dialogEventType

enum (DialogEventType)

收到的对话互动事件的类型。

common

object (CommonEventObject)

表示有关用户客户端的信息,例如语言区域、宿主应用和平台。对于 Chat 应用,CommonEventObject 包含用户在与对话框互动时提交的信息,例如在卡片上输入的数据。

appCommandMetadata

object (AppCommandMetadata)

有关 Chat 应用命令的元数据。

systemCommandMetadata

object (SystemCommandMetadata)

有关用户触发的系统命令(例如取消活跃的流消息)的元数据。

CommonEventObject

通用事件对象是整个事件对象的一部分,用于将与宿主无关的一般信息从用户客户端传递到插件。这些信息包括用户的语言区域、宿主应用和平台等详细信息。

除了首页和上下文触发器之外,当用户与 widget 互动时,插件还会构建事件对象并将其传递给操作回调函数。插件的回调函数可以查询通用事件对象,以确定用户客户端中打开的 widget 的内容。例如,您的插件可以在 eventObject.commentEventObject.formInputs 对象中找到用户在 TextInput widget 中输入的文本。

对于 Chat 应用,指用户在与微件互动时调用的函数的名称。

JSON 表示法
{
  "userLocale": string,
  "hostApp": enum (HostApp),
  "platform": enum (Platform),
  "timeZone": {
    object (TimeZone)
  },
  "formInputs": {
    string: {
      object (Inputs)
    },
    ...
  },
  "parameters": {
    string: string,
    ...
  },
  "invokedFunction": string
}
字段
userLocale

string

默认处于停用状态。用户的语言和国家/地区标识符,格式为 ISO 639 语言代码-ISO 3166 国家/地区代码。例如 en-US。

如需启用此字段,您必须在插件清单中将 addOns.common.useLocaleFromApp 设置为 true。插件的范围列表还必须包含 https://www.googleapis.com/auth/script.locale。如需了解详情,请参阅访问用户语言区域和时区。

hostApp

enum (HostApp)

指明生成事件对象时插件处于活动状态的主机应用。可能的值包括下列项:

  • GMAIL
  • CALENDAR
  • DRIVE
  • DOCS
  • SHEETS
  • SLIDES
  • CHAT
platform

enum (Platform)

平台枚举,用于指明事件源自哪个平台(WEB、IOS 或 ANDROID)。Chat 应用不支持此字段。

timeZone

object (TimeZone)

默认处于停用状态。时区 ID 以及相对于世界协调时间 (UTC) 的偏移量。如需启用此字段,您必须在插件清单中将 addOns.common.useLocaleFromApp 设置为 true。插件的范围列表还必须包含 https://www.googleapis.com/auth/script.locale。如需了解详情,请参阅访问用户语言区域和时区。

仅支持事件类型 CARD_CLICKED 和 SUBMIT_DIALOG。

formInputs

map (key: string, value: object (Inputs))

一个映射,其中包含所显示卡片中微件的当前值。映射键是分配给每个输入 widget(例如 TextInput.name、SelectionInput.name、DateTimePicker.name 或 DecoratedText.SwitchControl.name)的字符串 name 值。

映射值对象的结构取决于 widget 类型:

注意:以下示例已针对 Apps 脚本的 V8 运行时进行了格式设置。如果您使用的是 Rhino 运行时,则必须在值后面添加 [""]。例如,将事件对象格式设置为 e.commonEventObject.formInputs.employeeName[""].stringInputs.value[0],而不是 e.commonEventObject.formInputs.employeeName.stringInputs.value[0]。如需详细了解 Apps 脚本中的运行时,请参阅 V8 运行时概览。

  • 单值 widget(例如 TextInput widget,或类型为 DROPDOWN 或 RADIO_BUTTON 的 SelectionInput widget):包含单元素列表(如果未进行选择,则为空列表)的 StringInputs 对象。

示例:对于 name 为 employeeName 的文本输入 widget,使用以下代码访问文本输入值:e.commonEventObject.formInputs.employeeName.stringInputs.value[0]。

  • 多值 widget(例如,类型为 CHECK_BOX、SWITCH 或 MULTI_SELECT 的 SelectionInput widget):包含所选项 value 字符串列表的 StringInputs 对象。

示例:对于 name 为 participants 的多值 widget,请使用 e.commonEventObject.formInputs.participants.stringInputs.value 访问值数组。

  • DecoratedText.SwitchControl widget:StringInputs 对象。当 selected 为 true 时,stringInputs.value 包含开关的 value 字段(如果未指定 value,则为 "";如果多个开关共用同一个 name,则每个所选开关的 value 都会包含在列表中)。如果 selected 为 false,则 stringInputs.value 中会省略开关的 value。

  • 日期时间选择器 (DateTimePickerType.DATE_AND_TIME):DateTimeInput object。

示例:对于 name 为 myDTPicker 的选择器,请使用 e.commonEventObject.formInputs.myDTPicker.dateTimeInput 访问 DateTimeInput 对象。

示例:对于 name 为 myDatePicker 的选择器,请使用 e.commonEventObject.formInputs.myDatePicker.dateInput 访问 DateInput 对象。

示例:对于 name 为 myTimePicker 的选择器,请使用 e.commonEventObject.formInputs.myTimePicker.timeInput 访问 TimeInput 对象。

parameters

map (key: string, value: string)

您使用 actionParameters 或 Action.setParameters() 为操作提供的任何其他参数。

开发者预览版:对于扩展 Google Chat 的插件,如需根据用户在多选菜单中输入的内容推荐选项,请使用 "autocomplete_widget_query" 键 (event.commonEventObject.parameters["autocomplete_widget_query"]) 的值。您可以使用此值查询数据库,并在用户输入内容时向其推荐可选项。如需了解详情,请参阅收集和处理 Google Chat 用户的信息。

invokedFunction

string

要调用的函数的名称。

对于扩展 Google Chat 的 Google Workspace 插件,此字段不会填充。相反,如需接收标识符等函数数据,扩展 Chat 的插件应使用 parameters 字段。请参阅为 Chat 应用构建互动式界面。

TimeZone

时区 ID 以及相对于世界协调时间 (UTC) 的偏移量。仅支持事件类型 CARD_CLICKED 和 SUBMIT_DIALOG。

JSON 表示法
{
  "id": string,
  "offset": integer
}
字段
id

string

IANA TZ 时区数据库代码,例如“America/Toronto”。

offset

integer

用户时区相对于世界协调时间 (UTC) 的偏移量(以毫秒为单位)。

输入

用户可以在卡片或对话框中输入的数据类型。输入类型取决于微件接受的值类型。

JSON 表示法
{

  "stringInputs": {
    object (StringInputs)
  },
  "dateTimeInput": {
    object (DateTimeInput)
  },
  "dateInput": {
    object (DateInput)
  },
  "timeInput": {
    object (TimeInput)
  }
}
字段
以下是互斥字段的列表。在响应中,最多只能设置以下字段之一:
stringInputs

object (StringInputs)

表示用户在 widget 中输入的值的字符串列表。

如果微件仅接受一个值(例如 TextInput 微件),则该列表包含一个字符串对象。如果微件接受多个值(例如包含复选框的 SelectionInput 微件),则该列表会包含一个字符串对象,对应用户输入或选择的每个值。

dateTimeInput

object (DateTimeInput)

来自 DateTimePicker widget 的日期和时间输入值,该 widget 接受日期和时间。

dateInput

object (DateInput)

来自 DateTimePicker widget 的日期输入值,该 widget 仅接受日期值。

timeInput

object (TimeInput)

来自仅接受时间值的 DateTimePicker widget 的时间输入值。

互斥字段结束。

StringInputs

常规 widget 的输入参数。对于单值 widget,它是一个单值列表。对于多值微件(例如复选框),系统会显示所有值。

JSON 表示法
{
  "value": [
    string
  ]
}
字段
value[]

string

用户输入的字符串列表。

DateTimeInput

日期和时间输入值。

JSON 表示法
{
  "msSinceEpoch": string,
  "hasDate": boolean,
  "hasTime": boolean
}
字段
msSinceEpoch

string (int64 format)

自纪元时间以来的时间(以毫秒为单位)。

hasDate

boolean

datetime 输入是否包含日历日期。

hasTime

boolean

datetime 输入是否包含时间戳。

DateInput

日期输入值。

JSON 表示法
{
  "msSinceEpoch": string
}
字段
msSinceEpoch

string (int64 format)

自纪元时间以来的时间(以毫秒为单位)。

TimeInput

时间输入值。

JSON 表示法
{
  "hours": integer,
  "minutes": integer
}
字段
hours

integer

24 小时制的小时。

minutes

integer

整点过后的分钟数。有效值为 0 到 59。

AppCommandMetadata

Chat 应用命令的相关元数据。

JSON 表示法
{
  "appCommandId": integer,
  "appCommandType": enum (AppCommandType)
}
字段
appCommandId

integer

Chat API 配置中指定的命令的 ID。

appCommandType

enum (AppCommandType)

Chat 应用命令的类型。

SystemCommandMetadata

由用户触发的系统命令的相关元数据。

JSON 表示法
{

  "cancelStream": {
    object (CancelStream)
  }
}
字段
调用的系统命令。以下是互斥字段的列表。在响应中,最多只能设置以下字段之一:
cancelStream

object (CancelStream)

用于取消活跃流消息的命令。

互斥字段结束。

CancelStream

用于取消活跃流消息的命令。

JSON 表示法
{
  "streamMessage": string
}
字段
streamMessage

string

必需。执行了取消命令的流消息的资源名称。

格式:spaces/{space}/streamMessages/{streamMessage}