大家伙,我是雄雄,歡迎關注微信公眾號:雄雄的小課堂。
一、前言
今天,給大家介紹一下,如何在機器人中配置回調地址和接口編寫。很多時候我們可能有這樣的場景,收到消息后,想自己處理一下消息的內容,然后操作完后給用戶返回出去,那么,這種場景下,就離不開接口的回調了。
目前支持的回調:
- 收到消息
- 撤回消息
- 注入成功
- 登錄成功
- 進群
- 退群
- 通過好友申請
- 轉賬退款
- 轉賬收款
- …其他的還在開發中
二、開發回調接口
我這邊以python
為例,因為回調接口我們需要接收一個json
格式的數據,所以,先創建個類,如下所示:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import Optional, List
from fastapi import APIRouterapp = FastAPI()huidiao_router = APIRouter()# 消息實體
class CallBackDataEntity(BaseModel):wxid: Optional[str] = None # wxidwxNum: 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 # QQtimeStamp: 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] = NonemsgSource: Optional[int] = None # 消息來源:0|別人發送 1|自己手機發送fromWxid: Optional[str] = None # fromType=1時為好友wxid,fromType=2時為群wxid,fromType=3時公眾號wxidfromNick: Optional[str] = None # fromType=1時為好友wxid,fromType=2時為群昵稱,fromType=3時公眾號昵稱finalFromWxid: Optional[str] = None # 僅fromType=2時有效,為群內發言人wxidfinalFromNick: Optional[str] = None # 僅fromType=2時有效,為群內發言人昵稱atWxidList: Optional[list] = None # 僅fromType=2,且msgSource=0時有效,為消息中艾特人wxid列表silence: Optional[int] = None # 僅fromType=2時有效,0membercount: 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):# 將收到的消息轉換成jsondata = 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
信息填寫完成后,點擊確定即可,然后最重要的一步,就是【同步】功能,需要將服務端的配置信息,發送到客戶端的配置文件中,然后就可以使用了。
四、測試
我們從群里發個消息,可以看到日志中就會輸出來回調的信息。