大家好,我是鱼皮,今天分享一个用程序解决生活工作问题的真实案例。
说来惭愧,事情是这样的,在我们公司,每天都要轮流安排一名员工(当然也包括我)去楼层中间一个很牛的饮水机那里接水。但由于大家每天都有自己的工作,经常出现忘记接水的情况,导致大家口渴难耐。
怎么解决这个问题呢?
我想到了几种方法:
1)每天大家轮流提醒。但是别说提醒别人了,自己都不记得什么时候轮到自己接水。
2)由一个员工负责提醒大家接水,必要时招募一个 “接水提醒员”。
3)在企业微信的日历功能给员工安排接水日程,就像下面这样:
但问题是我们的人数和天数不是完全对应的、反复安排日程也很麻烦。
你觉得上面哪种方案好呢?其实我觉得第二个方案是最好的 —— 招募一个 “接水提醒员”。
别笑,我认真的!
只不过这个 “接水提醒员” 何必是人?
没错,作为一名程序员,我们可以搞一个机器人,让它在企业微信群聊中每天提醒不同的员工去接水即可。
其实这个功能和员工排班打卡系统是很类似的,只不过更轻量一些。我也调研了很多排班系统,但是都要收费,索性自己开发一个好了。
在企业微信中接入机器人其实非常简单,因为企业微信官方就支持群聊机器人功能,所以这次的任务我就安排给了实习生,他很快就完成了,所以我相信大家应该也都能学会~
企微群聊机器人开发学习开发第三方应用时,一定要先完整阅读官方文档,比如企业微信群机器人配置文档。
设计 SDK 结构指路:https://developer.work.weixin.qq.com/document/path/99110
虽然我们的目标是做一个提醒接水机器人,但是企业微信群聊机器人其实是一个通用的功能,所以我们决定开发一个企微机器人 SDK,以后公司其他业务需要时都能够快速复用。(比如开发一个定时喝水提醒机器人)
设计好 SDK 是需要一定技巧的,之前给大家分享过:如何设计一个优秀的 SDK ,可以阅读参考。
在查阅企微机器人文档后,了解到企业微信机器人支持发送多种类型的消息,包括文本、 Markdown 、图片、图文、文件、语音和模块卡片等,文档中对每一种类型的请求参数和字段含义都做了详尽的解释。
吐槽一下,跟微信开发者文档比起来,企微机器人的文档写得清晰多了!
企微文本消息格式
由于每种消息最终都是要转换成 JSON 格式作为 HTTP 请求的参数的,所以我们可以设计一个基础的消息类(Message)来存放公共参数,然后定义各种不同的具体消息类来集成它(比如文本消息 TextMessage、Markdown 消息 MarkdownMessage 等)。
为了简化开发者使用 SDK 来发送消息,定义统一的 MessageSender 类,在类中提供发送消息的方法(比如发送文本消息 sendText),可以接受 Message 并发送到企业微信服务器。
最终,客户端只需调用统一的消息发送方法即可。SDK 的整体结构如下图所示: