大家伙,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。
一、前言
今天,给大家介绍一下,如何在机器人中配置回调地址和接口编写。很多时候我们可能有这样的场景,收到消息后,想自己处理一下消息的内容,然后操作完后给用户返回出去,那么,这种场景下,就离不开接口的回调了。
目前支持的回调:
- 收到消息
- 撤回消息
- 注入成功
- 登录成功
- 进群
- 退群
- 通过好友申请
- 转账退款
- 转账收款
- …其他的还在开发中
二、开发回调接口
我这边以python
为例,因为回调接口我们需要接收一个json
格式的数据,所以,先创建个类,如下所示:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import Optional, List
from fastapi import APIRouter
app = FastAPI()
huidiao_router = APIRouter()
# 消息实体
class CallBackDataEntity(BaseModel):
wxid: Optional[str] = None # wxid
wxNum: Optional[str] = None # 微信号
nick: Optional[str] = None # 昵称
device: Optional[str] = None # 登录设备
phone: Optional[str] = None # 电话
avatarUrl: Optional[str] = None # 头像
country: Optional[str] = None # 国家
province: Optional[str] = None # 省
city: Optional[str] = None # 城市
email: Optional[str] = None # 邮箱
qq: Optional[str] = None # QQ
timeStamp: Optional[int] = None # 时间戳
fromType: Optional[int] = None # 来源类型:1|私聊 2|群聊 3|公众号
# 消息类型:1|文本 3|图片 34|语音 42|名片 43|视频 47|动态表情
# 48|地理位置 49|分享链接或附件 2001|红包 2002|小程序
# 2003|群邀请 10000|系统消息
# 60 撤回消息 61 登录成功 62退群 63 进群 64通过好友申请 65注入成功 66转账
msgType: Optional[int] = None
msgSource: Optional[int] = None # 消息来源:0|别人发送 1|自己手机发送
fromWxid: Optional[str] = None # fromType=1时为好友wxid,fromType=2时为群wxid,fromType=3时公众号wxid
fromNick: Optional[str] = None # fromType=1时为好友wxid,fromType=2时为群昵称,fromType=3时公众号昵称
finalFromWxid: Optional[str] = None # 仅fromType=2时有效,为群内发言人wxid
finalFromNick: Optional[str] = None # 仅fromType=2时有效,为群内发言人昵称
atWxidList: Optional[list] = None # 仅fromType=2,且msgSource=0时有效,为消息中艾特人wxid列表
silence: Optional[int] = None # 仅fromType=2时有效,0
membercount: Optional[int]= None # 仅fromType=2时有效,群成员数量
signature: Optional[str] = None
# 消息内容
msg: Optional[str]= None
# 性别
sex: Optional[str]= None
# 创建get方法
def get(self, param):
return getattr(self, param)
接下来就比较简单了,写个接口,接收一下消息就行。
# 回调接口信息处理
@huidiao_router.post("/receive_message_callback")
async def receive_message(data: CallBackDataEntity):
# 将收到的消息转换成json
data = data.dict()
print(f"接收到了回调消息,内容是:{data}")
# 这里可以添加你的业务逻辑
return {"message": "success"}
可以从实体中看到,我们将所有关键信息都已经传递到回调接口中,剩下的实现就得看自己的了。
收到消息的json:
{
"atWxidList": [
],
"finalFromNick": "雄雄的小课堂",
"finalFromWxid": "wxid_ehfdz38cq3bt22",
"fromNick": "雄雄的大家庭",
"fromType": 2,
"fromWxid": "47747688531@chatroom",
"membercount": 4,
"msg": "哈哈",
"msgSource": 0,
"msgType": 1,
"signature": "V1_HbNcDfZr|v1_HbNcDfZr",
"silence": 0,
"timeStamp": "1716713595"
}
其他类型的消息也都差不多,只不过,需要注意一下:msgType
的值,各个值的注释如下:
消息类型:1|文本 3|图片 34|语音 42|名片 43|视频 47|动态表情 48|地理位置 49|分享链接或附件 2001|红包 2002|小程序 2003|群邀请 10000|系统消息 60 撤回消息 61 登录成功 62退群 63 进群 64通过好友申请 65注入成功 66转账
60以后得都是我们回调事件用到的,其他的事收到的消息用到的。
三、服务端配置回调地址
首先,我们需要从服务端上,将回调地址配置一下,如下所示:
找到【基础配置】中的【回调接口配置】,然后点击新增按钮,选择接口类型、接口地址,备注可以填可以不填。
我这边使用了个测试的地址:http://127.0.0.1:7582/callback/receive_message_callback
信息填写完成后,点击确定即可,然后最重要的一步,就是【同步】功能,需要将服务端的配置信息,发送到客户端的配置文件中,然后就可以使用了。
四、测试
我们从群里发个消息,可以看到日志中就会输出来回调的信息。