Rails 新 Gem 发布,为你的 Rails 应用雇佣一个企业微信机器人

lyfi2003 for 深圳至简天成科技有限公司 · May 23, 2019 · Last by lyfi2003 replied at May 27, 2019 · 4288 hits

现在选用企业微信的公司越来越多,企业微信拥有强大的 API 接口,于是乎,我们 dao42 团队做了以下成果,分享给大家。

首先创建一个企业微信应用

创建入口

记录你企业微信的 CORPID 和 CORPSECRET。下面要用到。

qywechat-notifier gem 包

为你的 Rails 应用添加企业微信异常监控。第一时间发现并解决 BUG。这是 dao42 团队第一款全新的 Gem 包,欢迎关注:https://github.com/dao42/qywechat-notifier

使用方法:

gem 'qywechat-notifier', github: 'dao42/qywechat-notifier'

创建群聊会话

$ rails create_groupchat

配置参数

# config/initializers/qywechat_notifier.rb
Qywechat::Notifier.configure do |config|
  config.corpid = 'yourcorpid'
  config.corpsecret = 'yourcorpsecret'
  config.chatid = 'yourchatid'
end

启用插件

# config/initializers/exception_notification.rb
require 'exception_notification/rails'
require 'exception_notification/sidekiq'

ExceptionNotification.configure do |config|
  ...
  ...
  config.add_notifier :qy_wechat, {}
end

此 Gem 包由团队成员 @chen1125he 主要贡献。

Jenkins 集成企业微信

现在采用企业微信的公司越来越多,为了方便业务开展,我们技术公司也从 Slack 切换到了企业微信。但 Slack 的机器人通知是很给力的,非常方便,企业微信这方面也不弱,企业微信现在也支持自定义开发,但成本较高,故考虑是否有现成的工具可用。所以经过一番调研,发现了一个特别好用但低调的 Jenkins 企业微信组件:

jenkins-wechat-notifier

下载安装

Release 页面 下载最新版本 hpi 包 ( 目前是 2.1.1 )。

登录 Jenkins 控制台,到【系统管理】> 【插件管理】>【高级】选项卡中。(如下图)

上传该 hpi 包。检查 Jenkins 首页如果有【企业微信】的选项就说明安装成功。(如下图)

使用说明

首先在企业微信中创建一个应用,并找到企业 ID,应用 ID,应用 Secret,填写在 Jenkins 的【系统管理】微信通知中。(如下图)

确认配置成功后,回到 Jenkins 首页,在【企业微信】中,创建一个群聊,至少要指定一个群主和一个成员。

然后选择你要添加通知的 Jenkins 集成项目,在【构建后操作中】添加【微信通知】,选择类型【群聊】,群为刚才创建的群聊名称。(如下图)

最终效果

我们采用自动发布的机制,现在只要有代码提交,Jenkins 会自动运行发布,并发送微信通知,非常方便。

最后,非常感谢 huangmb 以及团队提供的工具!

结论

通过以上努力,Rails 应用与企业微信做了良好的互动,小美同学也正式成为我们一名员工。

有点意思,有机会用一下

刚刚下载部署好了,真的很好用,赞!

Gem Load Error is: uninitialized constant ExceptionNotifier::BaseNotifier

Reply to stargwq

依赖于 exception_notification 这个 gem, 这个你配置了吗?

7 Floor has deleted
Reply to lyfi2003

配了,我以前集成 slack 和钉钉

Reply to stargwq

修改了一下,更新了一下依赖,你再试下看现在行不

Reply to chen1125he

嗯,我把包的顺序调整就好了,但是 Qywechat::Notifier::QyAPI::Client::Addressable 是在哪初始化的?

异常收集还是要用 sentry 这种

Reply to stargwq

添加了新依赖 从 http 中引入的

Reply to ruby_sky

可否细讲一下?

Reply to lyfi2003

是不是应该针对 token 做一个错误处理,如果是 token 错误可以重新获取一次

例如:手动更新了企业微信的 secret 或者其他项目重新获取了 token 导致 cache 的 token 失效啥的(不知道和公众号的是否一致,此处仅限于 YY)

Reply to zj0713001

好建议,api 调取错误时,如果发现是 token 问题,可以考虑重刷一个新的 token 重试

You need to Sign in before reply, if you don't have an account, please Sign up first.