为Metabase Pulses添加slack代理支持
1 简介
Pulses是Metabase中定期报告的叫法,可以通过email或slack发送,具体介绍看这里。但由于slack无法直接访问的问题,需要配置代理,metabase没有提供代理支持,不过添加代理的功能还是非常简单的,几行代码就解决了问题。
2 代码更改
修改文件src\metabase\integrations\slack.clj中的do-slack-request函数,主要用于slack请求,它调用的clj-http实现http请求,添加代理的配置项就可以达到目的。代码修改如下:
1: (defn get-slack-proxy 2: "add slack proxy support" 3: [] 4: (let [slack-proxy-host (config/config-str :mb-slack-proxy-host) 5: slack-proxy-port (config/config-int :mb-slack-proxy-port)] 6: (when (and slack-proxy-host slack-proxy-port) 7: {:proxy-host slack-proxy-host 8: :proxy-port slack-proxy-port}))) 9: 10: (defn- do-slack-request [request-fn params-key endpoint & {:keys [token], :as params, :or {token (slack-token)}}] 11: (when token 12: (let [proxy (get-slack-proxy)] 13: (handle-response (request-fn (str slack-api-base-url "/" (name endpoint)) 14: (merge {params-key (assoc params :token token) 15: :as :stream 16: :conn-timeout 1000 17: :socket-timeout 1000} 18: proxy)))))) 19:
get-slack-proxy主要从系统配置中读取配置项,config/config-*是metabase读取系统配置的基本方法。然后do-slack-request中添加clj-http的代理配置即可。修改之后重新编译metabase。 然后设置环境变量,windows如下设置:
set MB_SLACK_PROXY_HOST=127.0.0.1 set MB_SLACK_PROXY_PORT=8080
linux使用export设置环境变量。再启动metabase,即可使用此代理访问slack。
3 slack的配置
slack的具体配置,参考官方文档。
新建pulse测试发现收到的图片,中文显示乱码,如下图,下一篇文章再解决。