LLOneBot项目中send_private_forward_msg接口调用问题解析
LLOneBot 使你的NTQQ支持OneBot11协议进行QQ机器人开发 项目地址: https://gitcode.com/gh_mirrors/ll/LLOneBot
在LLOneBot项目使用过程中,开发者可能会遇到调用send_private_forward_msg接口时出现异常的问题。本文将详细分析该问题的原因及解决方案,帮助开发者更好地理解和使用这一功能。
问题现象
当开发者尝试通过HTTP或WebSocket方式调用send_private_forward_msg接口时,可能会遇到以下两种典型错误:
- HTTP调用返回426状态码及"Upgrade Required"错误
- WebSocket调用返回"expected array but got [object Object]"错误
问题原因分析
HTTP调用426错误
该错误通常是由于开发者错误地将HTTP请求发送到了WebSocket端口导致的。LLOneBot项目中,HTTP和WebSocket服务默认使用不同的端口,开发者需要确保使用正确的HTTP端口进行API调用。
WebSocket调用参数错误
WebSocket调用时出现的"expected array but got [object Object]"错误,是由于messages参数格式不正确导致的。正确的messages参数应该是一个数组,但开发者错误地传递了一个对象。
解决方案
HTTP调用正确方式
确保使用LLOneBot配置中指定的HTTP端口进行调用,而不是WebSocket端口。典型的HTTP调用示例如下:
import requests
import json
url = "http://localhost:3100/send_private_forward_msg" # 确保端口正确
payload = json.dumps({
"user_id": "2196226572",
"messages": [
{
"type": "node",
"data": {
"content": [
{
"type": "text",
"data": {
"text": "消息内容"
}
}
]
}
}
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, data=payload)
WebSocket调用正确方式
确保messages参数是一个数组,即使只包含一个消息节点。正确的WebSocket调用参数格式如下:
{
"action": "send_private_forward_msg",
"params": {
"user_id": "2196226582",
"messages": [
{
"type": "node",
"data": {
"content": [
{
"type": "text",
"data": {
"text": "消息内容"
}
}
]
}
}
]
},
"echo": "api"
}
技术要点总结
-
端口区分:LLOneBot项目中HTTP和WebSocket服务使用不同端口,开发者需要明确区分并正确使用。
-
参数格式:send_private_forward_msg接口的messages参数必须是一个数组,即使只包含一个消息节点。
-
转义字符处理:在构造包含换行符等特殊字符的消息内容时,要注意JSON格式的正确性,避免因转义字符导致的解析错误。
通过理解这些技术要点,开发者可以避免常见的调用错误,确保LLOneBot的消息转发功能正常工作。
LLOneBot 使你的NTQQ支持OneBot11协议进行QQ机器人开发 项目地址: https://gitcode.com/gh_mirrors/ll/LLOneBot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考