弃用方面的最佳做法

本指南介绍了对话型 Action(将于 2023 年 6 月 13 日弃用)的用户消息传递和迁移路径。涵盖以下领域:

  • 弃用阶段:Actions 目前以及弃用后的运作方式。
  • 推荐的消息:可添加到 Action 中的推荐通知。
  • 可能的迁移途径:用于在弃用后留住用户的选项。

主动发布的博文(可选)

每个 Action、代理机构和商家都是不同的。除了使用本指南中推荐的消息更新您的 Action 外,您还可以考虑发布一篇博文,积极回答以下常见的用户问题:

  • 发生了什么?
  • 我的体验何时会发生变化?
  • 如何才能继续使用类似功能?

我们建议在任何弃用公告中都提供迁移路径选项。您可以通过电子邮件、简报和社交媒体分享帖子。

弃用阶段

下表介绍了对话型 Action 目前的行为方式、停用日期后对话型 Action 将如何变化,以及一些建议更新,以帮助用户通知用户。

弃用日期之前(2023 年 6 月 13 日) 弃用后
操作行为 现有 Action 体验 操作调用已停用
推荐的开发者动态 向 Action 添加弃用通知(建议 不适用
Google 用户体验更新 调用时,Google 可能会提供文字转语音 (TTS) 通知,说明在弃用日期之后,相应 Action 将不再可用。 调用时,Google 会提供 TTS,以告知用户此操作已不可用。

如果您决定在弃用日期之前不主动停用您的 Action,调用该 Action 的用户会收到 Google 提供的 TTS 通知。此通知的确切措辞仍在定义中,但最终的措辞不会包含面向用户的迁移信息。

推荐消息

如需告知用户即将停用,最好的方法是在用户调用您的操作时通知他们。您还可以利用以下机会向客户介绍使用类似功能的迁移路径

  • 沟通目的:通知用户即将发生的变更,并告知用户可用的迁移选项。

  • 消息发送时间范围:在弃用前至少提前 30 天通知用户(2022 年 5 月 13 日至 2022 年 6 月 13 日)。

处理停用查询

如需具体回答用户提出的弃用问题,请创建一个新的全局自定义 intent,并使用下面的建议措辞:

  • “我们将在date上关闭Action Name。如需了解详情,请查看 short link | migration path message。”

Interactive Canvas

智能显示屏上显示通知横幅。

如果您的 Action 使用 Interactive Canvas,请将通知横幅添加到使用以下示例措辞的画布加载页面:

  • Action Name将于 date关闭。如需了解详情,请前往 shortlink url。”
  • Action Name将于 migration path messagedate关闭。”

通信内容(可选)

您还可以通过其他方式更新现有操作,以通知用户即将发生的变更。请考虑为现有的 Action 消息添加弃用通知的后缀:

  • existing message。另外提醒一下,Action Name将于 date (关闭 | 正在关闭)开始。”
  • existing message。另外,想提醒你一下,Action Name 将于 migration pathdate(关闭 | 正在关闭)。”

您还可以为 Action 可能实现的特殊功能添加通知:

  • 深层链接调用:显示提供信息的基本卡片(示例)。

  • Last prompt 消息:您可以向以下任何提示类型添加 last prompt 消息(示例):

    • 内置 intent (BII)。适用于 Play 游戏、讲故事和教育 BII。
    • 日常安排建议。
    • 欢迎提示。
  • 退出提示:您还可以向退出提示 (actions.intent.CANCEL) 添加特殊的 last prompt 消息(示例)。

  • 推送通知:将以下建议的措辞添加到使用 Action Builder 或 Dialogflow 构建的任何推送通知中:

    • “提醒:Action Name 将于 date关停。如需了解详情,请前往 shortlink url。”
    • “提醒:Action Name将于 migration path messagedate关闭。

可能的迁移途径

虽然对话型 Action 可能没有类似的迁移路径,但请根据用户需求和可用的开发者资源考虑以下选项。

媒体内容

媒体操作可让用户在 Google 助理上发现您的内容,并直接在您的应用中开始播放内容。您可以使用以下示例消息帮助用户过渡到媒体操作:

  • “只要说“Hey Google,播放Media Brand Name”,您随时可以找到我们。”
  • “只要说“Hey Google,听Media Brand Name上的‘song’,您就可以随时找到我们。”

媒体操作与对话操作不同:

  • 使用媒体操作时,用户不会直接与第三方“互动”,而是通过 Google 助理与第三方互动。
  • 媒体操作不是对话式的,仅支持“单次”查询。

Android 应用

Google 助理与应用有关的 Action 是一项 Android 功能,可让用户使用 Google 助理通过语音启动和控制 Android 应用。您可以通过此示例消息功能告知用户您的应用操作:

  • “您可以随时说“Hey Google,打开 App Name”,找到我们。
  • “只要说“Hey Google,BII,即可打开我们的 Android 应用。” App Name
  • “只要说“Hey Google,打开 App Name”,即可安装我们的 Android 应用。

与应用有关的 Action 的工作机制与对话型 Action 存在一些不同:

  • 与应用有关的 Action BII 提供有限的语言和语言区域支持。
  • 需要 Android 应用才能启动应用操作。
  • 智能显示屏不支持与应用有关的 Action。
  • 与应用有关的 Action 不是对话式的,仅支持“单次”查询。

硬件

Google 智能家居允许开发者使用 Google 助理为设备启用语音功能。您可以通过以下示例消息,向用户介绍您的智能家居 Action:

  • “您可以随时使用 device name(网址为 store)与我们联系”
  • “你可以在 Google Home 应用中通过device name与我们联系”

智能家居与对话型 Action 存在以下区别:

  • 智能家居只能添加到兼容的设备上。
  • 智能家居不是对话式的,仅支持“单次”询问。

聊天代理

如需通过聊天机器人与用户来回对话,可以使用以下产品:

  • Dialogflow CX 可为大型和复杂的代理提供高级代理类型。它提供与 Dialogflow CX Phone Gateway、Dialogflow Messenger、Messenger from Facebook 和 LINE 等产品的集成。请参阅完整的集成列表
  • Dialogflow EX 提供了一种标准代理类型,适合规模较小、较为简单的代理。它集成了 Slack、Telegram、LINE、Facebook 的 Messenger、Meta 中的 Workplace 等。请参阅完整的集成列表

您可以通过以下示例消息功能向用户介绍聊天代理:

  • “如需日后支持,请拨打 support number。”
  • “如需未来的支持,请访问我们的网站: short link url。”
  • “今后如有反馈,请通过 Slack 频道Company Name与我们聊天。”

聊天代理服务与对话型 Action 存在一些不同:

  • 智能显示屏不支持代理。
  • 代理无法与 Google 助理集成。

客户服务

借助聊天机器人、语音聊天机器人和电话帮助台,所有这些功能均内置于 Agent AssistCCAI InsightsContact Center AI 产品中,从而更快地满足客户需求。 您可以使用此示例消息功能向用户介绍客户服务选项:

  • 如需日后的支持服务,请拨打 support number。”
  • “如需未来的支持,请访问我们的网站,网址为 short link url。”
  • 今后,欢迎在‘Company name’的 Slack 频道上与我们聊天。”

客户服务选项与对话型 Action 存在一些不同:

  • 智能显示屏不支持此设置。
  • 无法与 Google 助理集成。

网站

您可以将用户引导至您的网站可能提供的功能。您可以使用此示例消息功能向用户介绍 Web 选项:

  • “如需未来的支持,请访问我们的网站,网址为 short link url。”

网站与对话型 Action 存在以下不同:

  • 智能显示屏不支持网站。
  • 网站无法直接与 Google 助理集成

代码示例

使用这些代码示例,为对话型 Action 构建与日落相关的响应。

基本卡片示例

YAML

candidates:
  - first_simple:
    variants:
    - speech: >-
      We are turning off  on . For more details check out 
    text: >-
      We are turning off  on . For more details check out 
    content:
      card:
        title: Turning Off 
        subtitle: 
        text: >-
          `We are turning off  on . For more details check out .`
        button:
          name: Learn more
          open:
            url: 
    

JSON

{
  "candidates": [
    {
      "first_simple": {
        "variants": [
          {
            "speech": "We are turning off  on . For details, check out .",
            "text": "We are turning off  on . For details, check out ."
          }
        ]
      },
      "content": {
        "card": {
          "title": "Turning Off ",
          "subtitle": "",
          "text": "`We are turning off  on . For details, check out .`",
          "button": {
            "name": "Learn more",
            "open": {
              "url": ""
            }
          }
        }
      }
    }
  ]
}
      

Node.js

app.handle('Card', conv => {
  conv.add('We are turning off  on . For details, check out .');
  conv.add(new Card({
    "title": "Turning Off ",
    "subtitle": "",
    "text": "Card Content",
    "button": new Link({
      name: 'Learn more',
      open: {
          url: '',
        },
    })
  }));
});
    

JSON

{
  "responseJson": {
    "session": {
      "id": "session_id",
      "params": {}
    },
    "prompt": {
      "override": false,
      "content": {
        "card": {
          "title": "Turning Off ",
          "subtitle": "",
          "text": "We are turning off  on . For, details check out .",
          "button": {
            "name": "Learn more",
            "open": {
              "url": ""
            }
          }
        }
      },
      "firstSimple": {
        "speech": "We are turning off  on . For details, check out .",
        "text": "We are turning off  on . For details, check out ."
      }
    }
  }
}
      

最后一个问题示例

YAML

candidates:
  - first_simple:
      variants:
        - speech: 
          text: 
    last_simple:
      variants:
        - speech: Also, just reminding you that  will be turning off on 
          text: Also, just reminding you that  will be turning off on 

JSON

{
  "candidates": [
    {
      "first_simple": {
        "variants": [
          {
            "speech": "",
            "text": ""
          }
        ]
      },
      "last_simple": {
        "variants": [
          {
            "speech": "Also, just reminding you that  will be turning off on ",
            "text": "Also, just reminding you that  will be turning off on "
          }
        ]
      }
    }
  ]
}

Node.js

app.handle('Simple', conv => {
  conv.add(new Simple({
    speech: '',
    text: ''
  }));
  conv.add(new Simple({
    speech: 'Also, just reminding you that  will be turning off on ',
    text: 'Also, just reminding you that  will be turning off on '
  }));
});

JSON

{
  "responseJson": {
    "session": {
      "id": "session_id",
      "params": {}
    },
    "prompt": {
      "override": false,
      "firstSimple": {
        "speech": "",
        "text": ""
      },
      "lastSimple": {
        "speech": "Also, just reminding you that  will be turning off on ",
        "text": "Also, just reminding you that  will be turning off on "
      }
    }
  }
}

上一个提示(退出/取消)示例

YAML

candidates:
  - first_simple:
      variants:
        - speech: 
          text: 
    last_simple:
      variants:
        - speech: Also, just reminding you that  will be turning off on . Bye.
          text: Also, just reminding you that  will be turning off on . Bye.

JSON

{
  "candidates": [
    {
      "first_simple": {
        "variants": [
          {
            "speech": "",
            "text": ""
          }
        ]
      },
      "last_simple": {
        "variants": [
          {
            "speech": "Also, just reminding you that  will be turning off on . Bye.",
            "text": "Also, just reminding you that  will be turning off on . Bye."
          }
        ]
      }
    }
  ]
}

Node.js

app.handle('Simple', conv => {
  conv.add(new Simple({
    speech: '',
    text: ''
  }));
  conv.add(new Simple({
    speech: 'Also, just reminding you that  will be turning off on . Bye.',
    text: 'Also, just reminding you that  will be turning off on . Bye.'
  }));
});

JSON

{
  "responseJson": {
    "session": {
      "id": "session_id",
      "params": {}
    },
    "prompt": {
      "override": false,
      "firstSimple": {
        "speech": "",
        "text": ""
      },
      "lastSimple": {
        "speech": "Also, just reminding you that  will be turning off on . Bye.",
        "text": "Also, just reminding you that  will be turning off on . Bye."
      }
    }
  }
}