Event

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

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

注意:此事件仅用于聊天互动事件。如果您的 Chat 应用是作为 Google Workspace 加载项构建的,请参阅加载项文档中的 Chat 事件对象

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)
  }
}
字段
type

enum (EventType)

与 Chat 应用的用户互动的类型,例如 MESSAGEADDED_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_SPACECARD_CLICKEDMESSAGE 互动事件,触发互动事件的消息(如果适用)。

user

object (User)

与 Chat 应用互动过的用户。

thread

object (Thread)

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

space

object (Space)

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

action

object (FormAction)

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

configCompleteRedirectUrl

string

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

isDialogEvent

boolean

对于 CARD_CLICKEDMESSAGE 互动事件,表示用户是否正在与对话框互动或即将与对话框互动。

dialogEventType

enum (DialogEventType)

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

common

object (CommonEventObject)

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

appCommandMetadata

object (AppCommandMetadata)

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

CommonEventObject

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

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

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

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)

平台枚举,用于指明事件的来源平台(WEBIOSANDROID)。Chat 应用不支持此参数。

timeZone

object (TimeZone)

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

仅支持 CARD_CLICKEDSUBMIT_DIALOG 事件类型。

formInputs

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

一个映射,其中包含所显示卡片中 widget 的当前值。地图键是为每个 widget 分配的字符串 ID。

地图值对象的结构取决于 widget 类型:

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

  • 单值 widget(例如文本框):字符串列表(只有一个元素)。

示例:对于 ID 为 employeeName 的文本输入微件,可以使用 e.commonEventObject.formInputs.employeeName.stringInputs.value[0] 访问文本输入值。

  • 多值 widget(例如复选框组):字符串列表。

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

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

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

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

parameters

map (key: string, value: string)

您使用 actionParametersAction.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_CLICKEDSUBMIT_DIALOG 事件类型。

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

string

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

offset

integer

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

输入

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

JSON 表示法
{

  // Union field inputs can be only one of the following:
  "stringInputs": {
    object (StringInputs)
  },
  "dateTimeInput": {
    object (DateTimeInput)
  },
  "dateInput": {
    object (DateInput)
  },
  "timeInput": {
    object (TimeInput)
  }
  // End of list of possible types for union field inputs.
}
字段

联合字段 inputs

inputs 只能是下列其中一项:

stringInputs

object (StringInputs)

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

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

dateTimeInput

object (DateTimeInput)

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

dateInput

object (DateInput)

仅接受日期值的 DateTimePicker widget 中的日期输入值。

timeInput

object (TimeInput)

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

StringInputs

常规 widget 的输入参数。对于单值 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)

聊天应用命令的类型。