使用飞书群机器人发送消息

createh54个月前 (12-12)技术教程83

一、简单介绍

飞书群中的自定义机器人是通过webhook的形式发送消息到群聊中,比如我们使用可以发送告警消息,业务通知。

二、操作流程

1、在群聊中使用群机器人

进入群聊,打开会话设置,找到群机器人,并点击添加机器人。选择添加需要的机器人加入群聊。机器人添加到群聊后,群内成员即可在群聊中使用该机器人的功能。

2、在群聊中使用自定义机器人

为了使自定义机器人向群聊中即时推送来自外部系统的消息,你需要以 webhook 的形式向群聊发送消息。进入你的目标群组,打开会话设置,找到群机器人,并点击添加机器人。选择 Custom Bot(自定义机器人)加入群聊。

备注:详细操作步骤可以查看官方文档

三、安全设置

如果未妥善保管webhook地址,可能存在webhook地址泄露后,被恶意开发者调用,发送垃圾信息的风险,我们强烈建议对其进行安全设置。在此我们重点介绍签名校验以及进行编码

官方签名的算法:把 timestamp + "\n" + 密钥 当做签名字符串,使用 HmacSHA256 算法计算签名,再进行 Base64 编码。

签名算法代码示例(Python3)

# Python 3.9
import base64
import hmac
import time
from hashlib import sha256

timestamp = str(round(time.time()))
secret = "你的密钥"

key = f'{timestamp}\n{secret}'
key_enc = key.encode('utf-8')
msg = ""
msg_enc = msg.encode('utf-8')
hmac_code = hmac.new(key_enc, msg_enc, digestmod=sha256).digest()
sign = base64.b64encode(hmac_code).decode('utf-8')
print(timestamp)
print(sign)

签名算法代码示例(Python2)

# Python 2.7
import base64
import hmac
import time
from hashlib import sha256

timestamp = long(round(time.time()))
secret = "你的密钥"

key = '{}\n{}'.format(timestamp, secret)
key_enc = bytes(key).encode('utf-8')
msg = ""
msg_enc = bytes(msg).encode('utf-8')
hmac_code = hmac.new(key_enc, msg_enc, digestmod=sha256).digest()
sign = base64.b64encode(hmac_code).decode('utf-8')
print(timestamp)
print(sign)

签名算法代码示例(Go)

func GenSign(secret string, timestamp int64) (string, error) {
	stringToSign := fmt.Sprintf("%v", timestamp) + "\n" + secret

	var data []byte
	h := hmac.New(sha256.New, []byte(stringToSign))
	_, err := h.Write(data)
	if err != nil {
		return "", err
	}

	signature := base64.StdEncoding.EncodeToString(h.Sum(nil))
	return signature, nil
}

签名算法代码示例(PHP)

function getSign(){
	$timestamp = time();
	$secret = '你的密钥';
	$string = "{$timestamp}\n{$secret}";
	return base64_encode(hash_hmac('sha256',"", $string,true));
}

PHP详细代码可以查看 https://github.com/yuncopy/feishu-robot-msg

相关文章

JAVA后端推送企业微信消息到普通微信

接收消息的用户不需要安装企业微信,普通微信就可以。特殊情况开发者需要推送某些即时消息到普通微信端的时候可用,支持推送文字,图文,视频,文件,markdown,及模板等消息# 1.申请注册企业微信(目前...