监听消息
ws://10.10.88.88:8888/ws?Token=xxxxx
以下用Python演示链接WebSocket
# WS client example
import asyncio
import json
import random
import requests
import websockets
SERCIVE_TOKEN = "849909cfd662cf00b53b845d405f741f612758ec"
SERCIVE_HOST = "127.0.0.1:8888"
BOT_UID = 0
# 上传语音
def new_CdnUpload(Uid, ToUserId, MusicUrl):
url = "http://{}/v1/WeWork/CdnUpload?Uid={}&Token={}".format(
SERCIVE_HOST, Uid, SERCIVE_TOKEN
)
payload = {"FileType": 5, "ToUserId": ToUserId, "FilePath": MusicUrl}
re_data = requests.post(url, json=payload)
return re_data.json()
# 发送语音
def new_SendMsg(Uid, ToUserId, ToUserType, CdnInfo):
url = "http://{}/v1/WeWork/SendMsg?Uid={}&Token={}".format(
SERCIVE_HOST, Uid, SERCIVE_TOKEN
)
payload = {
"MsgType": 16,
"ToUserId": ToUserId,
"ToUserType": ToUserType,
"CdnInfo": CdnInfo,
}
re_data = requests.post(url, json=payload)
return re_data.json()
# 发送文字
def new_SendTextMsg(Uid, ToUserId, ToUserType, Content):
url = "http://{}/v1/WeWork/SendMsg?Uid={}&Token={}".format(
SERCIVE_HOST, Uid, SERCIVE_TOKEN
)
payload = {
"MsgType": 0,
"ToUserId": ToUserId,
"ToUserType": ToUserType,
"Content": Content,
}
re_data = requests.post(url, json=payload)
return re_data.json()
# 获取群成员
def new_GetGroupUsers(Uid, Gid):
url = "http://{}/v1/WeWork/Group/MemberList?Uid={}&Token={}".format(
SERCIVE_HOST, Uid, SERCIVE_TOKEN
)
payload = {"Gid": Gid}
re_data = requests.post(url, json=payload)
return re_data.json()
async def Wsdemo():
uri = "ws://{}/ws?Token={}".format(SERCIVE_HOST, SERCIVE_TOKEN)
try:
async with websockets.connect(uri) as websocket:
while True:
greeting = await websocket.recv()
EventJson = json.loads(greeting)
EventName = EventJson["CurrentPacket"]["EventName"]
EventData = EventJson["CurrentPacket"]["EventData"]
print(f"< {greeting} {EventName}")
if EventName == "ON_EVENT_TOKEN_EXPIRED": # Token过期关闭WebSocket
print(f"< {greeting} {EventName}")
return
if EventName == "ON_EVENT_NEW_MSG":
# print(f"< {greeting} {EventName}")
NewAddMsg = EventData
ToUserId = NewAddMsg["ToUserId"]
ToUserType = NewAddMsg["ToUserType"]
if NewAddMsg["MsgType"] == 0 or NewAddMsg["MsgType"] == 2:
if "ding" in NewAddMsg["Content"]:
new_SendTextMsg(
机器人Uid, ToUserId, ToUserType, "dong"
)
except:
#断线重连
t = random.randint(5, 8)
print(f"< 超时重连中... { t}")
await asyncio.sleep(t)
await Wsdemo()
asyncio.get_event_loop().run_until_complete(Wsdemo())
修改于 2022-04-12 07:51:09