NPM 包 hubot-rocketchat-attachment 使用教程

阅读时长 7 分钟读完

前言

RocketChat 是一款开源的企业级聊天和协作工具,它提供丰富的 API 接口和插件系统。本教程将会介绍如何使用 hubot-rocketchat-attachment 这个 NPM 包来开发基于 RocketChat 的聊天机器人,该包提供的 API 可以用于发送带有附件的消息、快速构建菜单以及处理用户输入等。

安装

在开始之前,你需要拥有一个已经工作的 RocketChat 实例,然后使用 npm 包管理器安装 hubot-rocketchat-attachment:

发送消息

首先,我们需要初始化一个 RocketchatClient 对象,然后使用它来连接到 RocketChat 服务器和发送消息:

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

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

------------------------ -- -
  -- ----
  ----- ------ - ---------- -- ---- --
  ----- ------- - -
    ----- ------ -------- -- ----
    ------------ -
      -
        ------ ----------- -------
        ----------- - ----------- -------------
        ----- ----------- --------
      -
    -
  --
  -------------------------- ---------
---------------- -- -
  ---------------------
---
展开代码

在上面的示例中,我们首先创建了一个 RocketchatClient 对象,并传入了连接参数。然后从中获取到了一个连接对象,接着使用这个对象来连接到 Rocketchat 服务器上。连接成功后,我们通过调用 sendMessage 方法来发送一条带有附件的消息。

这里需要注意的是:发送附件时,您需要向 attachments 对象中添加一个或多个附件对象,并将它们作为消息对象的一部分发送。每个附件对象应包含以下属性:

  • title(可选):附件的标题
  • description(可选):附件的描述
  • text(必需):附件的内容

构建菜单

除了发送消息外,hubot-rocketchat-attachment 还可以用于构建消息菜单。菜单由一组按钮组成,每个按钮可触发不同的操作。以下是一个简单的示例:

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

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

------------------------ -- -
  ----- ------ - ----------
  ----- ------- - -
    ----- -------------
    ------------ -
      -
        --------- ----------------
        ----------- ----------
        ------ ----------
        --------------- ----------
        -------- -
          -
            ----- ---------
            ----- ---------
            ------ --------------
          --
          -
            ----- ---------
            ----- ---------
            ------ ---------
            -------- -
              ------ ----------
              ----- ----------
              -------- ------
              ------------- ----
            --
            ------ --------
          -
        -
      -
    -
  --
  -------------------------- ---------
---------------- -- -
  ---------------------
---
展开代码

在上面的示例中,我们使用了一组按钮来构建菜单。每个按钮对象都包含以下属性:

  • type:按钮类型,必须是 button。
  • text:按钮上显示的文本。
  • value:按钮的值,当用户点击它时会发送回到服务器。
  • style(可选):按钮的样式,例如 danger 表示红色按钮。
  • confirm(可选):确认删除等可能有害的操作之前,需要用户确认该操作。
  • (特定于菜单)fallback:如果用户的客户端不支持消息菜单,则必须提供任何替代消息。Rails 满足此需求。
  • (特定于菜单)callbackId:此菜单所需的专用回调 ID。button 行动会触发其父级消息的 onInteractiveMessage 。可能会被模态建模使用。
  • (特定于菜单)attachmentType:附件的类型,必须是 default。

当用户单击某个按钮时,客户端将采用以下格式将数据提交回服务器:

-- -------------------- ---- -------
-
  --------------- -------------------------------------
  ------- - --- --
  ---------- -
    -
      ------- ---------------
      -------- --------------
    -
  -
-
展开代码

开发者可以根据返回的数据来响应用户的行为。

处理用户输入

最后,让我们看一下如何处理用户输入。当用户与 Rocketchat 交互时,您可以使用 onInteractiveMessage 方法来处理用户提交的数据:

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

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

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

    -- ---------
  ---
---------------- -- -
  ---------------------
---
展开代码

在上面的示例中,我们使用 onInteractiveMessage 方法来监听用户提交的数据。该方法需要两个参数:菜单的 callbackId 和处理用户提交数据的回调函数。

当客户端接收到与菜单相关的消息时,会调用回调函数。该函数需要两个参数:消息和行动。消息对象包含与该消息相关的所有信息,例如所属房间和发件人,而操作对象包含有关用户选择的操作的信息。

在这个回调函数中,您可以使用 roomId 和 userId 属性来获取有关用户和房间的信息,并使用 action 和 value 属性来获取有关用户所选择的操作的信息。然后,您可以使用这些信息来处理用户的行为。

结论

hubot-rocketchat-attachment 是一个非常实用的 NPM 包,可以帮助我们轻松地创建基于 RocketChat 的聊天机器人。通过本教程的学习,相信您已经了解了如何使用该包来发送带有附件的消息、构建菜单以及处理用户输入等行为。希望本文对您有所帮助。

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

纠错
反馈

纠错反馈