npm 包 botbuilder-handoff 使用教程

阅读时长 8 分钟读完

在当今的人工智能时代,机器人与人类的互动越来越频繁,尤其是在聊天机器人的开发方面。借助 Microsoft Bot Framework,我们可以将聊天机器人应用于广泛的场景中。而 botbuilder-handoff 这个 npm 包,则是在 Microsoft Bot Framework 的基础上,提供了更加完善的用户转接功能。

本篇文章将详细介绍 botbuilder-handoff 的使用方法,并配有代码示例,帮助您更好地理解如何使用这个 npm 包。

安装和引用

首先,我们需要在我们的项目中安装 botbuilder-handoff。使用 npm 命令即可完成:

然后,在我们的 JavaScript 文件中引用它:

初始化

在使用 botbuilder-handoff 的功能前,我们需要对它进行初始化。这需要提供一个 BotBuilder 实例以及一些其他选项。以下是初始化的例子:

-- -------------------- ---- -------
----- ------- - ------------------------------
----- --- - --- --------------------------------
----- ------------- - -
  ----
  ---- ---
  ---------------------- -- -- ----------
  -------- ------- -- ---------------------------------------------
--
----------------------------------

代码中,我们首先需要提供一个 BotBuilder 实例,即 bot 。然后,我们需要创建一个 handoffConfig 对象,并在此对象中指定一些选项:

  • app 对象,用于存储代理人的状态信息。
  • conversationIdFactory 函数,用于生成代理交互所需的 conversationId,可以用一个唯一的字符串。
  • isAgent 函数,则用于根据用户的信息判断其是否为代理人。

最后,使用 handoff.initialize 函数对 botbuilder-handoff 进行初始化。

设置代理人

在初始化完成后,我们需要为我们的机器人设置代理人,以达到用户与代理人自由转接的目的。

首先,我们需要通过 handoff.addAgent 函数,将代理人的信息进行注册。以下是代理人注册的例子:

我们提供了代理人的信息,包括 id (代理人唯一 ID)、name (代理人名称)和 skill (代理人技能值)。

然后,我们需要为我们的机器人设置一个代理人处理程序。这个处理程序将响应用户的请求,并查找可用的代理人来处理该请求。以下是如何进行设置:

-- -------------------- ---- -------
---------------------- ------- -- -
  ----------------------------------------------
    -------- -- -
      ------------------ -- ----- -- --- -- ----- --- -------
    --
    --------- -- -
      -------------------- ----- --- -- ------ --------- -- --- ------- ------ --- ----- ---------
    ---
---

我们使用 bot.dialog 函数来创建一个针对“手动转接”事件(手动转接的触发方式可以根据自己的需求来设置)的处理程序,即 /handoff。当用户触发了此事件时,将使用 handoff.queueCustomerForAgent 函数,将用户加入到代理人的队列中。如果有可用的代理人,则立即转接。如果没有可用的代理人,则通知用户。

自动转接

在有些情况下,我们希望机器人能够自动转接到代理人,而无需用户发起转接的请求。

以下是如何设置自动转接:

-- -------------------- ---- -------
------------------------ ------- -- -
  -- --------------------- --- -------- -
    -------------------------- - ------ ---- -------- ------- --
      -------- -- -
        ------------------ ------------ --- ---- ------ --- ---- -- ------- -- --- ---- --------- ---------
      --
      --------- -- -
        -------------------- ----- --- -- ------ --------- -- --- ------- ------ --- ----- ---------
      ---
  - ---- -
    --------------- -- -- --------- --------- ------ --- --- -- ----- -- ------ -----------
  -
---

在此例中,我们使用了 handoff.autoQueue 函数,以自动转接到可用的代理人。

转接事件

在进行转接时,我们可能需要跟踪转接事件。botbuilder-handoff 为此提供了 handoffEventMiddleware 函数,用于收集和记录有关转接的事件数据。以下是如何使用它:

-- -------------------- ---- -------
----- ------ - --- ----------------
  ----------- -
    --- ----------------------------
      --------- -----
      ------------ ----
    --
  -
---

----------------------------------------

我们首先需要实例化一个日志对象,例如 winston。然后,在我们的机器人中使用 bot.use 函数,并将日志对象作为参数传递给 handoffEventMiddleware 函数。

结论

如此,我们便完成了对 botbuilder-handoff 的介绍。使用 botbuilder-handoff,我们可以轻松地实现代理人的转接,为用户提供更好的服务体验。

示例代码

全部代码如下:

-- -------------------- ---- -------
----- ------- - ----------------------
----- ------- - ------------------------------
----- ------- - -------------------

----- --------- - --- ---------------------------
----- --- - --- --------------------------------
----- ------------- - -
  ----
  ---- ---
  ---------------------- -- -- ----------
  -------- ------- -- ---------------------------------------------
--
----------------------------------

-- -------- -----
------------------ --- -------- ----- ---- ------- ------ ---- ---

-- ------ ------- ----- -------
---------------------- ------- -- -
  ----------------------------------------------
    -------- -- -
      ------------------ -- ----- -- --- -- ----- --- -------
    --
    --------- -- -
      -------------------- ----- --- -- ------ --------- -- --- ------- ------ --- ----- ---------
    ---
---

-- --------- -------
------------------------ ------- -- -
  -- --------------------- --- -------- -
    -------------------------- - ------ ---- -------- ------- --
      -------- -- -
        ------------------ ------------ --- ---- ------ --- ---- -- ------- -- --- ---- --------- ---------
      --
      --------- -- -
        -------------------- ----- --- -- ------ --------- -- --- ------- ------ --- ----- ---------
      ---
  - ---- -
    --------------- -- -- --------- --------- ------ --- --- -- ----- -- ------ -----------
  -
---

-- ----- --------
----- ------ - --- ----------------
  ----------- -
    --- ----------------------------
      --------- -----
      ------------ ----
    --
  -
---

----------------------------------------

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60065b4bc6eb7e50355dc002

纠错
反馈