开发说明
大别野机器人开放平台将提供一系列接口和事件,帮助开发者开发自己的群聊机器人,DIY更多的群聊玩法。
平台接口说明
- 一系列 OPENAPI 使机器人能够获取大别野的一部分数据。
- http 接口形式的事件回调接口,使机器人能够感知到大别野内发生的事件。
⚠️ 暂不提供 websocket 实时事件通知,在后续的版本中会考虑支持,敬请期待!
机器人凭证
当开发者申请了一个机器人之后会下发几个凭证
- bot_id: 机器人的唯一标志
- bot_secret: 机器人鉴权唯一标志
接口调用方式说明
机器人调用接口
开放接口访问域名:https://bbs-api.miyoushe.com
机器人调用大别野接口的时候,需要在 http header 中带上机器人凭证,内容如下:
字段名 | 类型 | 含义 |
---|---|---|
x-rpc-bot_secret | string | 签名字符串 |
x-rpc-bot_id | string | 机器人 id |
x-rpc-bot_villa_id | int64 | villa_id,大别野 id |
⚠️ x-rpc-bot_secret 作为机器人鉴权密钥,属于保密信息!请不要泄露到外部
平台会校验 bot_secret 是否与 bot_id 相匹配,校验该机器人是否被大别野房主授权使用数据
不同接口需要大别野房主授予对应的权限,只有拥有权限后,机器人才能访问相关的接口(接口权限表)
secret 密文传输
deprecated,推荐使用下述2.0算法
机器人开放平台为每一个机器人都生成一个 pub_key
(在开发者WEB平台可以查看),机器人在调用openapi接口时,使用 pub_key 对 secret 加密,将加密后的字符串放入请求头 x-rpc-bot_secret
中
加密算法为 HMAC/SHA256
加密代码:
Golang
func Sha256HMac(pubKey string, botSecret string) string {
h := hmac.New(sha256.New, []byte(pubKey))
raw := []byte(botSecret)
h.Write(raw)
return hex.EncodeToString(h.Sum(nil))
}
Java
public static String hmacSha256(String pubKey, String botSecret) {
try {
SecretKeySpec signingKey = new SecretKeySpec(pubKey.getBytes("utf-8"), "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(botSecret.getBytes("utf-8"));
return bytesToHex(rawHmac);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
Python
import hashlib
import hmac
signature2 = hmac.new(pub_key, bot_secret, hashlib.sha256).hexdigest()
print(signature2)
机器人识别大别野用户
当用户通过米游社跳转到机器人服务的 h5 页面的时候,开放平台在 bot_id 维度下发给用户一个 access_token
该 access_token 会直接拼在跳转链接的后面,如
https://webstatic-test.miyoushe.com/app/community-villa/bot.html?access_token=c85497cf9a086084d4b1
平台提供根据 access_token 识别用户身份的接口,机器人可以通过这个接口识别大别野用户。
关于 SDK
⚠️ 大别野即将提供完善的 Go SDK 方便开发者快速接入,敬请期待。