Skip to content

Milky 协议

Waylay 支持 Milky 协议,提供 HTTP API 调用和 WebSocket/SSE/Webhook 事件推送。

启用

设置 MILKY_HTTP_PORT 环境变量:

yaml
environment:
  - MILKY_HTTP_PORT=8082

连接方式

HTTP API

POST http://host:8082/api/:action
Content-Type: application/json
Authorization: Bearer your_token

{ "group_id": "123456", "message": [...] }

响应格式:

json
{
  "status": "ok",
  "retcode": 0,
  "data": { ... }
}

SSE 事件流

GET http://host:8082/event
Authorization: Bearer your_token

服务端推送:

event: message_receive
data: {"event_type":"message_receive","time":1712640000,"self_id":"123456789","data":{...}}

WebSocket 事件流

ws://host:8082/event?access_token=your_token

收到的每条消息是一个 JSON 事件对象。

Webhook

配置 MILKY_WEBHOOK_URLS 环境变量,Waylay 会将事件 POST 到指定 URL:

yaml
environment:
  - MILKY_WEBHOOK_URLS=["http://your-server:8080/webhook"]

鉴权

设置 MILKY_TOKEN 后,所有请求需携带 Bearer Token:

Authorization: Bearer your_token

或通过 URL 参数:

?access_token=your_token

API 列表

系统

API说明
get_login_info获取登录信息
get_impl_info获取实现信息
get_user_profile获取用户资料

消息

API参数说明
send_private_messageuser_id, message发送私聊消息
send_group_messagegroup_id, message发送群消息
recall_private_messageuser_id, message_seq撤回私聊消息
recall_group_messagegroup_id, message_seq撤回群消息
get_messagemessage_seq获取消息详情

好友

API参数说明
get_friend_list获取好友列表
get_friend_infouser_id获取好友信息
send_friend_nudgeuser_id好友戳一戳
accept_friend_requestrequest_id接受好友请求
reject_friend_requestrequest_id拒绝好友请求

群组

API参数说明
get_group_list获取群列表
get_group_infogroup_id获取群信息
get_group_member_listgroup_id获取群成员列表
get_group_member_infogroup_id, user_id获取群成员信息
set_group_namegroup_id, group_name设置群名
set_group_member_cardgroup_id, user_id, card设置群名片
set_group_member_admingroup_id, user_id, is_admin设置管理员
set_group_member_mutegroup_id, user_id, duration禁言成员
set_group_whole_mutegroup_id, is_mute全体禁言
kick_group_membergroup_id, user_id踢出成员
quit_groupgroup_id退群
send_group_nudgegroup_id, user_id群戳一戳
accept_group_join_requestrequest_id接受加群请求
reject_group_join_requestrequest_id, reason拒绝加群请求

事件列表

消息事件

message_receive

json
{
  "event_type": "message_receive",
  "time": 1712640000,
  "self_id": "123456789",
  "data": {
    "message_seq": 42,
    "message_scene": "group",
    "peer_id": "614990477",
    "sender": {
      "user_id": "123456",
      "nickname": "用户名",
      "card": "群名片"
    },
    "message": [
      { "type": "text", "data": { "text": "Hello" } }
    ],
    "time": 1712640000
  }
}

message_scene 取值:friend(好友)、group(群聊)、temp(临时会话)

message_recall

json
{
  "event_type": "message_recall",
  "data": {
    "message_seq": 42,
    "message_scene": "group",
    "peer_id": "614990477",
    "operator_id": "123456"
  }
}

好友事件

事件说明
friend_request好友请求
friend_nudge好友戳一戳
friend_file_upload好友文件上传

群组事件

事件说明
group_join_request加群请求
group_invited_join_request被邀请入群
group_admin_change管理员变动
group_member_increase成员增加
group_member_decrease成员减少
group_mute成员禁言
group_nudge群戳一戳
group_file_upload群文件上传

消息段类型

接收

类型字段说明
texttext纯文本
mentionuser_id@成员
mention_all@全体成员
faceface_idQQ 表情
replymessage_seq回复消息
imagefile_id, url, file_name, file_size图片
recordfile_id, url语音
videofile_id, url视频
filefile_id, name, size文件
forwardforward_id合并转发
market_faceemoji_id, emoji_package_id, summary, url商城表情
light_appapp_name, json_dataJSON 卡片
xmlxml_dataXML 消息

发送

类型字段说明
texttext纯文本
mentionuser_id@成员
mention_all@全体成员
faceface_idQQ 表情
replymessage_seq回复消息
imageurlfile_id图片(URL/base64/本地路径)
recordurlfile_id语音
videourlfile_id视频
light_appjson_dataJSON 卡片

示例

发送群消息

bash
curl -X POST http://localhost:8082/api/send_group_message \
  -H "Content-Type: application/json" \
  -d '{
    "group_id": "614990477",
    "message": [
      { "type": "text", "data": { "text": "Hello from Milky!" } }
    ]
  }'

发送带图片和 @ 的群消息

bash
curl -X POST http://localhost:8082/api/send_group_message \
  -H "Content-Type: application/json" \
  -d '{
    "group_id": "614990477",
    "message": [
      { "type": "mention", "data": { "user_id": "123456" } },
      { "type": "text", "data": { "text": " 看看这张图" } },
      { "type": "image", "data": { "url": "https://example.com/image.png" } }
    ]
  }'

获取群列表

bash
curl -X POST http://localhost:8082/api/get_group_list

Released under the Apache 2.0 License.