IBM Cloud Docs
教程: 根据当前页面定制问候语操作

教程: 根据当前页面定制问候语操作

本教程说明如何根据用户当前正在查看的页面动态定制由 Web 聊天触发的问候语操作。

有关本教程中描述的示例的完整工作版本,请参阅 Select 问候操作 for watsonx Assistant Web chat

如果未启用主屏幕,那么打开 Web 聊天时的缺省行为是向助手发送空消息以启动对话。 此空消息将触发 问候客户 操作,这通常会发送欢迎消息。

您可能希望用户看到特定于他们已查看的页面的提示,而不是使用通用问候语启动对话。 例如,如果用户已浏览到有关信用卡的页面,然后打开 Web 交谈,那么您可能希望使用特定于信用卡的消息来启动对话。

虽然此示例显示如何根据当前页面来调整文本,但您可以使用相同的基本方法根据任何客户机条件 (例如,时间或用户的地理位置) 来调整文本。

要根据用户正在查看的当前页面来更改问候操作,请执行以下步骤:

  1. 确定用户当前正在查看的页面。 根据应用程序的设计,有多种方法来执行此操作,但一个简单的机制是检查 URL 查询参数的值 (在此示例中, page):

    const page = new URLSearchParams(window.location.search).get('page');
    
  2. pre:send 事件创建处理程序,此处理程序在将消息发送到助手之前触发。 此处理程序通过检查 is_welcome_request 属性来启动,以确定要发送的消息是否为通过触发 问候客户 操作来启动对话的空消息。

    如果是,那么处理程序将检查当前显示的页面,并将传出的空消息替换为将触发特定于该页面的操作的消息。 (此示例仅显示将消息设置为 Credit Cards,但其他 if 条件可以为其他页面定制消息。)

    function preSendHandler(event) {
      if (event.data.history && event.data.history.is_welcome_request) {
        if (page === 'cards') {
          event.data.input.text = 'Credit Cards';
        }
      }
    }
    
  3. onLoad 事件处理程序中,使用 once() 实例方法来预订 pre:send 事件,并将 preSendHandler() 函数注册为回调。 (我们可以使用 once() 而不是 on() ,因为需要仅针对会话中的第一条消息调用此处理程序。)

    instance.once({ type: 'pre:send', handler: preSendHandler});
    

要获取完整的工作代码,请参阅 Select 问候操作 for watsonx Assistant Web chat 示例。