给企业微信加个群机器人

现在很多企业在使用企业微信或钉钉进行工作交流,我们可以在群里添加一个自定义群机器人,定时发送一些提醒或咨询信息,它可以作为一个小组手,也为工作增加一点乐趣。

群机器人

下面是企业微信和钉钉的群机器人文档:

企业微信群机器人文档

钉钉群机器人文档

它们的功能和用法基本是一致的,本文将以企业微信为例进行讲解。

我们在群里添加一个机器人后,可以获取到这个机器人的 Webhook:

通过向这个地址发起 POST 请求,就可以实现机器人在群里发送消息。

群机器人是要在群里才能添加的,但这里有个小技巧,我们可以先拉一个群然后把别人都踢掉,这样就变成自己一个人的群了。这样方便我们测试,也可以创建一个私人的小组手。

Hello World

万物源于 Hello World,群机器人也不例外。其实就是发起一个 POST 请求而已,用什么开发语言看个人爱好了。

我这里以 node.js 为例,添加了请求库 axios 的依赖,代码如下:

const axios = require('axios')

axios.post('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx', {
        "msgtype": "text",
        "text": {
            "content": "Hello World"
        }
    })
    .then(response => {
        console.log(response.data);
    })
    .catch(error => {
        console.log(error)
    })

不出意外的话,运行这段代码,就能在群里看到机器人发的消息了:

知乎日报

确定可以发送成功之后,我们就可以开发更多的玩法了。比如通过调用一些开放接口,获取到数据后转发到群里。

这里以知乎日报为例,代码如下:

const axios = require('axios')

postZhiHu()

function postZhiHu() {
    axios.get('https://news-at.zhihu.com/api/4/news/latest')
        .then(response => {
            var stories = response.data.stories
            postMessage(stories)
        })
        .catch(error => {
            console.log(error);
        })
}

function postMessage(stories) {
    var articles = []
    stories.forEach(story => {
        articles.push({
            "title": story.title,
            "url": story.url,
            "picurl": story.images[0]
        })
    })
    axios.post('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx', {
            "msgtype": "news",
            "news": {
                "articles": articles
            }
        })
        .then(response => {
            console.log(response.data);
        })
        .catch(error => {
            console.log(error);
        })
}

运行上面代码,就能收到机器人发的知乎日报了:

机器人可以发多种样式的消息,这里的知乎日报是图文类型的,具体有哪些类型大家可以看官方文档。

定时任务

我们自然是希望机器人可以自动发消息的,这时候就要用到定时任务了。

在 node.js 上可以用 schedule 实现定时任务:

const schedule = require('node-schedule')

schedule.scheduleJob({hour: 9, minute: 30}, function(){
    postZhiHu()
})

上面代码可以让机器人在每天上午九点半的时候,发送一条知乎日报的消息。

但为了保证每天都能收到消息,就需要计算机一直运行这个定时任务,关机或待机的时候就收不到消息了。你可以把任务运行在服务器上,或者是用下面教大家的方法。

云函数

腾讯云提供的云函数服务,可以让我们在指定条件下运行代码,特别适合我们的群机器人使用,提供的免费额度对群机器人来说是绰绰有余的。云函数的具体使用方法,大家可以看官方文档:

云函数文档

下面给大家简单讲一下用云函数实现群机器人。

依赖配置

我们依旧使用 node.js 作为运行环境。我们可以使用模板创建云函数,但如果是添加了第三方依赖,在新建云函数时需要把 node_modules 文件夹一起打包上传。

在新建云函数的时候,提交方法选择「本地上传zip包」:

然后把 index.js 文件和 node_modules 文件夹打包成 zip 上传:

这样就能愉快的在云函数里使用第三方依赖了。

函数代码

main_handler 是云函数的执行入口,我们对上面知乎日报的代码做一点小小的改造,把下面代码添加到云函数的 index.js 中:

const axios = require('axios')

exports.main_handler = (event, context, callback) => {
    axios.get('https://news-at.zhihu.com/api/4/news/latest')
        .then(response => {
            stories = response.data.stories
            postMessage(stories)
        })
        .catch(error => {
            console.log(error);
        })
}

function postMessage(stories) {
    var articles = []
    stories.forEach(story => {
        articles.push({
            "title": story.title,
            "url": story.url,
            "picurl": story.images[0]
        })
    })
    axios.post('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx', {
            "msgtype": "news",
            "news": {
                "articles": articles
            }
        })
        .then(response => {
            console.log(response.data);
        })
        .catch(error => {
            console.log(error);
        })
}

点击下面的保存后,再点击测试,就能看机器人的知乎日报消息了,跟在本地执行是一样的效果。

触发方式

在云函数里添加触发方式,可以让云函数在指定条件下自动执行。

我们添加一个触发方式,使用定时触发。比如我想在周一到周五每天的上午九点半发送消息,就可以这样设置:

关于 Cron 表达式,具体用法大家可以参考文档:

定时触发器文档

更多玩法?

到这里,我们基本就可以玩转企业微信和钉钉的群机器人功能了。除了上面说的知乎日报,我们还可以给机器人添加天气、新闻、吃饭提醒、会议提醒等消息。

不知道大家还能想到什么有趣的功能,欢迎留言讨论。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,708评论 0 15
  • 阳光的明媚融入到家的欢乐,看这欢乐的时刻
    竹报平安_2ed7阅读 296评论 0 0
  • 文章来源: 原创 编辑: 刘恒琳 你所浪费的今天,是昨天死去的人奢望的明天; 你所厌恶的现在,是未来的你回不...
    快乐每一天lhl阅读 119评论 0 0
  • 集客的前提是要把车修好,服务闭环 客户只给你一次机会,并且只有一次 不管行业如何变化,深耕细作、练习内功,别人家事...
    京心达张新波阅读 124评论 0 0