以 Google Chat 应用响应斜杠命令

本页介绍了如何设置和响应 Google Chat 应用。

斜杠命令是用户调用 Chat 应用。斜杠命令也有助于用户发现和 使用 Chat 应用的主要功能。

若要使用斜杠命令,用户需要输入一条斜杠 (/),然后输入一个简短的文本命令, 例如 /about,用于获取有关 Chat 应用的信息。 用户只需在 Google Chat,显示了一个窗口,其中列出了 Chat 应用:

斜杠命令窗口
图 1:用户在 Google Chat 中输入正斜线时显示的窗口。

决定是否应该设置斜杠命令,并了解如何 设计用户互动,请参见 定义所有用户历程

带有私密回复的斜杠命令

当用户发送包含斜杠命令的消息时,该消息只会显示给用户和 Chat 应用。如果您已将 Chat 应用配置为添加到包含多人的聊天室,则可以考虑私下回复斜杠命令,以便用户与 Chat 应用之间的互动保持私密。

例如,如需了解用户在聊天室中发现的 Chat 应用,用户可以使用 /about/help 等命令。为避免通知聊天室中的所有其他人,Chat 应用可以私下回复,提供有关如何使用 Chat 应用和获取支持的信息。

前提条件

Node.js

启用了交互功能的 Google Chat 应用。要创建 交互式 Chat 应用,请完成此快速入门

Apps 脚本

启用了交互功能的 Google Chat 应用。要创建 交互式 Chat 应用,请完成此快速入门

Python

一款已启用互动功能的 Google Chat 应用。如需使用 HTTP 服务创建交互式 Chat 应用,请完成此快速入门

Java

一款已启用互动功能的 Google Chat 应用。要创建 交互式 Chat 应用,请完成此快速入门

设置斜杠命令

本部分介绍了如何完成以下步骤来设置斜杠 命令:

  1. 为斜杠命令创建名称
  2. 在 Google Chat API 中配置斜杠命令

为斜杠命令命名

斜杠命令的名称是用户在 Chat 消息中输入的内容,用于调用 Chat 应用。名称下方还会显示简短说明,以便进一步提示用户如何使用该命令:

<ph type="x-smartling-placeholder">
</ph> 斜杆 (/) 命令名称和说明
图 2:斜杠命令的名称和说明。

为斜杠命令选择名称和说明时,请考虑以下建议:

  • 如需为斜杠命令命名,请执行以下操作:

    • 使用简短、描述性强且切实可行的字词或短语,让用户能够清晰简明地执行命令。例如,不要使用 /createAReminder,请使用 /remindMe
    • 如果您的命令包含多个字词,请将第一个字词全部用小写形式,然后将其他字词的第一个字母大写,以便用户轻松阅读该命令。例如,使用 /updateContact,而不是 /updatecontact
    • 考虑为命令使用唯一名称还是常用名称。如果您的命令描述的是典型的互动或功能,您可以使用用户熟悉且期望的通用名称,例如 /settings/feedback。否则,请尝试使用唯一的命令名称,因为如果您的命令名称与其他 Chat 应用的命令名称相同,用户就必须过滤出类似的命令才能找到并使用您的命令。
  • 如需描述您的斜杠命令,请执行以下操作:

    • 请使用简短、清晰的说明,以便用户知道在调用该命令时会发生什么。
    • 告知用户该命令是否有任何格式设置要求。 例如,如果您创建了一个需要参数的 /remindMe 命令, 请将说明设置为类似 Remind me to do [something] at [time] 的内容。
    • 告知用户 Chat 应用是否会回复 也可以只与调用相应命令的用户私下分享 例如,对于正斜线命令 /about,您可以将其描述为 Learn about this app (Only visible to you)

在 Google Chat API 中配置斜杠命令

要创建斜杠命令,您需要在 您的 Chat 应用的 Google Chat API 配置。

如需在 Google Chat API 中配置斜杠命令,请完成以下操作 步骤:

  1. 在 Google Cloud 控制台中,点击“菜单” &gt; API 和服务 &gt; 已启用的 API 和服务 &gt; Google Chat API

    前往“Google Chat API”页面

  2. 点击配置

  3. 斜杠命令下,点击添加斜杠命令

  4. 为该命令输入名称、命令 ID 和说明:

    1. 名称:命令的显示名称,即用户用于调用应用的输入内容。必须以斜线开头,仅包含文本,且不得超过 50 个字符。
    2. 说明:用于说明如何使用和设置命令格式的文本。说明最多可包含 50 个字符。
    3. 命令 ID:一个介于 1 到 1000 之间的数字,Chat 应用使用该数字来识别斜杠命令并返回响应。
  5. 可选:如果您希望 Chat 应用回复 使用对话框执行命令,请选择 打开对话框复选框。

  6. 点击保存

现在,Chat 应用的斜杠命令已配置完毕。

响应斜杠命令

如果用户创建包含斜杠命令的 Chat 消息, 您的 Chat 应用收到 MESSAGE 互动事件。 事件载荷包含 slashCommandslashCommandMetadata 对象。这些对象包含有关消息中使用的命令的详细信息(包括命令 ID),以便您返回适当的响应。

面向 Cymbal Labs Chat 应用的私信。该消息指出 Chat 应用由 Cymbal Labs 创建,并分享了文档链接和用于与支持团队联系的链接。
Chat 应用会私下响应斜杠命令 /help,说明如何获取支持。

以下代码展示了 Chat 应用的示例 响应 /about 斜杠命令,方法是处理 MESSAGE 个互动事件和检测 消息是否包含匹配的命令 ID。如果消息包含命令 ID,Chat 应用会返回私信:

Node.js

node/avatar-app/index.js
// Checks for the presence of a slash command in the message.
if (event.message.slashCommand) {
  // Executes the slash command logic based on its ID.
  // Slash command IDs are set in the Google Chat API configuration.
  switch (event.message.slashCommand.commandId) {
    case ABOUT_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
  }
}

Apps 脚本

apps-script/avatar-app/avatar-app.gs
// Checks for the presence of a slash command in the message.
if (event.message.slashCommand) {
  // Executes the slash command logic based on its ID.
  // Slash command IDs are set in the Google Chat API configuration.
  switch (event.message.slashCommand.commandId) {
    case ABOUT_COMMAND_ID:
      return {
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      };
  }
}

Python

python/avatar-app/main.py
# Checks for the presence of a slash command in the message.
if "slashCommand" in request_json["message"]:
  # Executes the slash command logic based on its ID.
  # Slash command IDs are set in the Google Chat API configuration.
  if request_json["message"]["slashCommand"]["commandId"] == ABOUT_COMMAND_ID:
    return {
      "privateMessageViewer": request_json["user"],
      "text": 'The Avatar app replies to Google Chat messages.'
    }

Java

java/avatar-app/src/main/java/App.java
// Checks for the presence of a slash command in the message.
if (body.getAsJsonObject("message").has("slashCommand")) {
  // Executes the slash command logic based on its ID.
  // Slash command IDs are set in the Google Chat API configuration.
  JsonObject slashCommand = body.getAsJsonObject("message").getAsJsonObject("slashCommand");
  switch (slashCommand.get("commandId").getAsString()) {
    case ABOUT_COMMAND_ID:
    JsonObject aboutMessage = new JsonObject();
    aboutMessage.addProperty("text", "The Avatar app replies to Google Chat messages.");
    aboutMessage.add("privateMessageViewer", body.getAsJsonObject("user"));
      response.getWriter().write(gson.toJson(aboutMessage));
      return;
  }
}

使用您在设置 ABOUT_COMMAND_ID在 Chat API 中配置了斜杠命令。 如需测试此代码,请参阅测试 Google Chat 应用的交互功能