前情提要
最近公司正在改组,手上的工作都完成了,我所处的部门正在交接工作给其它团队準备转调新部门。
正处在无聊的时候主管交给我一个新任务,我们的品管部门想要有一个通知浏览器更新资讯的服务以能够在第一时间进行测试。
使用到的工具
Web api服务
Cloud Function语言及套件
node.js 10套件
express (如果架在自已的server可以用这个开web api接口,这篇使用GCP用不到)
request (发送http request)
让我们开始吧
1. 开始使用GCP Cloud Function
首先在左侧导览选单找到运算大类的Cloud Functions
点击建立函式
基本设定
编缉器介绍
2. 部属开发套件
这次我们用到的套件有request
及cheerio
,知道node的朋友可能会用npm在command下这样的指令npm install request cheerio
,但在GCP内我们需要直接编缉package.json来部属开发套件,所以打开package.json输入下图的内容吧!
{ "name": "sample-http", "version": "0.0.1", "dependencies": { "request": "latest" }}
*简单介绍一下package.json
package.json可以进行开发环境基本资料的定义,例如要跑一个node server需要在这定义程式进入点、作者是谁、如果要发布到公开环境上别人要用什么关键字来找到你的专案,甚至是定义一个脚本。
在这里我们只用到name (专案名称)
version (专案版本号)
dependencies (使用的相依套件)
,我们要加入的内容在dependencies
内,格式是。"套件名称": "版本"
在这里我们只使用最新版就好,其它的详细设定参数可以参考这篇https://reurl.cc/ldy9Nj
3. 设定Slack App
在写功能前,我们先申请好Slack的接口再进行开发,申请网址https://api.slack.com
进入网页后点击右上角的Your Apps
,接下来点击Create New App
会出现下图的Dialog,设定好后按下Create App
在这篇的需求中所需要达到的效果是得到浏览器版本后,发送讯息
至Slack的频道内,所以我们所需要用到的是Incoming Webhooks
,开启这个功能就可以发送一个Http Request POST method到Slack提供的api位址,Slack就会根据你的发送内容发讯息。
将Incoming Webhooks打开 OFF -> ON
打开后会出现以下画面,接下来我们要开启Slack的Webhook api,点击下图红框的Add New Webhook to Workspace
按钮
接下来选择要发送的频道,按下Allow
,需要注意的是要发送到N个频道就要开N个Webhook
得到Webhook api接口了~
4. 开始撰写Slack Bot
拿到Webhook api接口后就可以撰写Slack Bot了,以下提供一个範例程式,这里需要注意的是
SLACK_URL
要替换成刚刚拿到的api接口herders要依slack api设定页面上它所提示的讯息加上application/json
这个Content-type
const request = require('request')exports.helloWorld = (req, res) => { let result = { text: 'Hello Slack!!' } let options = { url: SLACK_URL, method: 'POST', headers: { 'Content-type': 'application/json', }, body: result } request(options, (err, res) => { if (!err && res.statusCode == 200) { // do something } else { // do something } } let message = req.query.message || req.body.message || 'Hello World!'; res.status(200).send(message);};
5. 测试Slack bot
撰写完程式后按下部属
*部属失败
部属失败时会出现下图状况,此时点击名称进入此程式的仪表板
点击详细资料会提示错误讯息,知道错误讯息了点击上方的编缉
去改到对吧!
注意
这部份GCP有个比较要注意的点是部属失败有时错误的程式码不会被储存,点击编缉时的版本会是上个部属成功的版本而不是现在这个失败的版本,这时候可以在仪表板点来源
页籤,去将你错误的程式码复製起来再进编缉贴上。
*部属成功
部属失败时会出现下图绿色勾勾
这时候就可以使用动作
的测试函式
去看看我们写的Slack Bot有没有正常动作了!
6. 完成!
最后如果想要在其他地方使用这个Cloud Function,只要在仪表板的触发条件
页籤内,将URL复製起来,就可以在你想要的地方去调用这个Slack Bot啰!!