# 为你的兔小巢加上实时消息推送

- Link: https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/
- Published: 2020-05-03T18:50:05+08:00
- Author: 白宦成

文章目录

 [Toggle](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#)

 * [需求](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#%e9%9c%80%e6%b1%82)
 * [流程说明](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#%e6%b5%81%e7%a8%8b%e8%af%b4%e6%98%8e)
 * [优势](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#%e4%bc%98%e5%8a%bf)
 * [操作步骤](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#%e6%93%8d%e4%bd%9c%e6%ad%a5%e9%aa%a4)
    - [找到你的兔小巢产品 ID](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#%e6%89%be%e5%88%b0%e4%bd%a0%e7%9a%84%e5%85%94%e5%b0%8f%e5%b7%a2%e4%ba%a7%e5%93%81_id)
    - [创建一个企业微信机器人](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#%e5%88%9b%e5%bb%ba%e4%b8%80%e4%b8%aa%e4%bc%81%e4%b8%9a%e5%be%ae%e4%bf%a1%e6%9c%ba%e5%99%a8%e4%ba%ba)
    - [创建一个腾讯云云函数](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#%e5%88%9b%e5%bb%ba%e4%b8%80%e4%b8%aa%e8%85%be%e8%ae%af%e4%ba%91%e4%ba%91%e5%87%bd%e6%95%b0)
    - [配置函数请求地址](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#%e9%85%8d%e7%bd%ae%e5%87%bd%e6%95%b0%e8%af%b7%e6%b1%82%e5%9c%b0%e5%9d%80)
    - [兔小巢后台设置 Webhook](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#%e5%85%94%e5%b0%8f%e5%b7%a2%e5%90%8e%e5%8f%b0%e8%ae%be%e7%bd%ae_webhook)
 * [测试效果](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#%e6%b5%8b%e8%af%95%e6%95%88%e6%9e%9c)
 * [总结](https://www.ixiqin.com/2020/05/03/to-push-your-small-rabbit-nest-combined-with-real-time-news/#%e6%80%bb%e7%bb%93)

如果你也和我一样，使用[兔小巢][1]来作为你的产品用户社区，那么你一定会遇到一个问题：**
反馈不及时**，由于兔小巢本身没有和用户的强关联，只有当用户主动填写了个人信息，或
关注了兔小巢的服务通知，你才能对用户进行消息的触达。因此，你的回复的时效就十分重要
了，快速的回复可以让你的用户在还没有失去和你的联系时获得反馈，完成一次有效的用户
交流。因此，实时的信息反馈就十分重要了。

但是，兔小巢本身并不具备实时推送问答的能力，因此，我们需要借助一些第三方工具来完成
自己的目的，在这篇文章中，我将向你介绍，如何使用腾讯云云函数将兔小巢的消息转发到
企业微信当中。当然，如果你使用的聊天工具不是企业微信，而是诸如飞书、Slack、Bearychat，
你也可以参考这里的说明，完成自己的相应的需求的实现。

## 需求

 1. 腾讯云账号
 2. 兔小巢

## 流程说明

![](https://postimg.aliavv.com/mbp/yk5da.png)

**这里使用兔小巢的提供的 WebHook ，来接管所有的用户请求，并辅以腾讯云的 API 网关
和云函数的能力，将实时推送的消息转发至企业微信**。

这里我实现了企业微信，但对于你来说，还可以用来实现其他同类似渠道的能力。

## 优势

 * **轻量**：如果你的需求仅仅是实时转发，那你不再需要重新启动一个项目，配置各种环境，
   通过云函数就可以完成这些工作。
 * **无需代码基础**：如果你是一个运营，而不是一个开发，那么我这段代码你复制即可，
   简单修改其中的一些基本信息，就可以完成实时推送的功能，对于没有代码基础的同学来说，
   是十分方便的。

## 操作步骤

由于这篇文章是兔小巢的高级用法，因此，对于如何创建一个兔小巢产品，就不再赘述，此外，
以下步骤均在电脑端操作，因此，请使用电脑来执行下述流程。

### 找到你的兔小巢产品 ID

首先，你需要打开兔小巢的管理后台，打开**产品设置** ，在其中找到 **产品 ID**，复制
这里的产品 ID，后续我们会用到。

![产品 ID](https://postimg.aliavv.com/mbp/ofrxy.png)

### 创建一个企业微信机器人

由于我们本次要实现的是兔小巢消息推送到企业微信，因此，我们需要创建一个企业微信机器
人。

在你需要推送消息的群上，右击，选择其中的**添加群机器人**，

![](https://postimg.aliavv.com/mbp/fx38f.png)

并在弹出的窗口中选择**从新创建一个机器人**

![](https://postimg.aliavv.com/mbp/k2ccc.png)

在新弹出的窗口中输入机器人的基本信息，并点击添加

![](https://postimg.aliavv.com/mbp/eyo6f.png)

添加完成后你会获得一个 WebHook 地址，复制这个地址，后续会用到

![](https://postimg.aliavv.com/mbp/d270k.png)

### 创建一个腾讯云云函数

访问[腾讯云云函数](https://console.cloud.tencent.com/scf/list)控制台，点击界面中的**
新建**，新建一个云函数。

![](https://postimg.aliavv.com/mbp/4hv9a.png)

> 这里函数的地域可以根据你的需要选择，几乎没有影响，我选择的是广州地域。

随后，在新建函数的时候，输入函数名称、运行环境（**运行环境选择 Node.js 8.9**），
以及创建方式，选择空白函数。

![](https://postimg.aliavv.com/mbp/6klat.png)

填写完成后，点击下一步，在新的页面，设置函数的描述，这里需要注意，**执行方法不要
做任何修改，使用默认的，除非你知道你在干什么。**

![](https://postimg.aliavv.com/mbp/ylpng.png)

然后，复制这段代码，粘贴在下方的代码框中，操作步骤参考动图

![](https://postimg.aliavv.com/mbp/lnnis.gif)

    ```javascript
    'use strict';
    const request = require("request")
    const productId = ""
    const botUrl = ""
    function requestPromise(r,t){return new Promise(function(e,n){request({uri:r,method:"POST",body:JSON.stringify(t)},function(r,t,i){if(r)return n(r);try{e(i)}catch(r){n(r)}})})}
    exports.main_handler = async (event, context, callback) => {
        const txcData = JSON.parse(event.body);
        if (txcData.type == "post.created") {
            await requestPromise(botUrl, {
                "msgtype": "markdown",
                "markdown": {
                    "content": `**新增用户反馈**\n\n${txcData.payload.post.content}\n\n[点击查看详情](https://support.qq.com/products/${productId}/post/${txcData.payload.post.id})`
                }
            })
        }
        return "ok"
    };
    Code language: JavaScript (javascript)
    ```

然后，将第三行的 productId 中加入你的兔小巢产品 ID，将第四行的 botUrl 中加入你的
微信机器人地址。
比如，我的修改完是这样的

    ```javascript
    'use strict';
    const request = require("request")
    const productId = "149567"
    const botUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d8c1e6b1-ccbf-467e-8dcc-31c1961baf41"
    Code language: JavaScript (javascript)
    ```

这里需要注意，不要删除放好的引号，把 ID 和 WebHook URL 放在引号内部就好，以免你的
输入法输入了中文引号导致出错。

修改完成后，保存文件（按下 Ctrl + S 或 Command + S），点击下方的 **完成**，进入到
函数的详情页。

![](https://postimg.aliavv.com/mbp/32s1w.png)

### 配置函数请求地址

接下来，我们为函数生成一个请求地址，用作后续兔小巢的消息提醒。

在函数的详情页，点击左侧的**触发管理**，选择**创建触发器**，创建一个 **API 网关触发
器**

触发器的具体配置可以参考下方的图片。

![](https://postimg.aliavv.com/mbp/8betg.png)

创建成功后，你会获得一个访问路径，这个路径就是你的函数请求地址了。复制这个地址，
下一步我们就会用到。

![](https://postimg.aliavv.com/mbp/qqaef.png)

### 兔小巢后台设置 Webhook

回到兔小巢的后台，找到左侧菜单栏中的 **开发** – **新反馈实时通知**

![](https://postimg.aliavv.com/mbp/p8yln.png)

将刚刚你生成的函数的访问地址，粘贴在这里，点击**保存并发布**

![](https://postimg.aliavv.com/mbp/oekm7.png)

保存成功后，就可以去你的兔小巢中发反馈，测试一下效果啦

## 测试效果

当我在兔小巢社区发了一个新的反馈后，我的企业微信群内就出现了一个新的消息提醒，提醒
我有了新的反馈，同时，还带上了一个链接。点击这个链接，就可以跳转到我的兔小巢对应
的反馈页面，方便快速回复。

![](https://postimg.aliavv.com/mbp/h4z1e.png)

## 总结

通过简单的配置，我们就可以很轻松的实现兔小巢反馈的实时推送，十分的方便。对于广大
使用兔小巢的运营同学来说，现在你可以不用每隔几分钟就去刷新一下社区了，耐心的等待
机器人的推送就好了～工作效率大大的得到的了提升。
