-
Notifications
You must be signed in to change notification settings - Fork 287
API‐接受消息
danni.cool edited this page May 20, 2024
·
10 revisions
使用接受消息 api 可以让你做到自定义回复等复杂功能, 具体来说:
- 当你通过docker部署项目,配置了docker容器的环境变量
RECVD_MSG_API=https://example.com/your/url
, 那么每次收到消息都会调用你提供的url - 如果只是本地运行,你也可以找到项目里.env 文件的 LOCAL_RECVD_MSG_API 去配置
-
methods:
POST
-
contentType:
multipart/form-data
- form格式如下
formData | 说明 | 数据类型 | 可选值 | 示例 |
---|---|---|---|---|
type |
功能类型
其他类型
系统类型
|
String |
text file urlLink friendship unknown system_event_login system_event_logout system_event_error system_event_push_notify
|
- |
content | 传输的内容, 文本或传输的文件共用这个字段,结构映射请看示例 |
String Binary
|
示例 | |
source | 消息的相关发送方数据, JSON String | String |
示例 | |
isMentioned | 该消息是@我的消息 #38 | String |
1 0
|
- |
isMsgFromSelf | 是否是来自自己的消息 #159 | String |
1 0
|
- |
服务端处理 formData 一般需要对应的处理程序,假设你已经完成这一步,你将得到以下 request
{
"type": "text",
"content": "你好",
"source": "{\"room\":\"\",\"to\":{\"_events\":{},\"_eventsCount\":0,\"id\":\"@f387910fa45\",\"payload\":{\"alias\":\"\",\"avatar\":\"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=1302335654&username=@f38bfd1e0567910fa45&skey=@crypaafc30\",\"friend\":false,\"gender\":1,\"id\":\"@f38bfd1e10fa45\",\"name\":\"ch.\",\"phone\":[],\"star\":false,\"type\":1}},\"from\":{\"_events\":{},\"_eventsCount\":0,\"id\":\"@6b5111dcc269b6901fbb58\",\"payload\":{\"address\":\"\",\"alias\":\"\",\"avatar\":\"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=123234564&username=@6b5dbb58&skey=@crypt_ec356afc30\",\"city\":\"Mars\",\"friend\":false,\"gender\":1,\"id\":\"@6b5dbd3facb58\",\"name\":\"Daniel\",\"phone\":[],\"province\":\"Earth\",\"signature\":\"\",\"star\":false,\"weixin\":\"\",\"type\":1}}}",
"isMentioned": "0",
"isMsgFromSelf": "0",
"isSystemEvent": "0" // 考虑废弃,请使用type类型判断系统消息
}
收消息 api curl示例(直接导入postman调试)
curl --location 'https://your.recvdapi.com' \
--form 'type="file"' \
--form 'content=@"/Users/Downloads/13482835.jpeg"' \
--form 'source="{\\\"room\\\":\\\"\\\",\\\"to\\\":{\\\"_events\\\":{},\\\"_eventsCount\\\":0,\\\"id\\\":\\\"@f387910fa45\\\",\\\"payload\\\":{\\\"alias\\\":\\\"\\\",\\\"avatar\\\":\\\"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=1302335654&username=@f38bfd1e0567910fa45&skey=@crypaafc30\\\",\\\"friend\\\":false,\\\"gender\\\":1,\\\"id\\\":\\\"@f38bfd1e10fa45\\\",\\\"name\\\":\\\"ch.\\\",\\\"phone\\\":[],\\\"star\\\":false,\\\"type\\\":1}},\\\"from\\\":{\\\"_events\\\":{},\\\"_eventsCount\\\":0,\\\"id\\\":\\\"@6b5111dcc269b6901fbb58\\\",\\\"payload\\\":{\\\"address\\\":\\\"\\\",\\\"alias\\\":\\\"\\\",\\\"avatar\\\":\\\"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=123234564&username=@6b5dbb58&skey=@crypt_ec356afc30\\\",\\\"city\\\":\\\"Mars\\\",\\\"friend\\\":false,\\\"gender\\\":1,\\\"id\\\":\\\"@6b5dbd3facb58\\\",\\\"name\\\":\\\"Daniel\\\",\\\"phone\\\":[],\\\"province\\\":\\\"Earth\\\",\\\"signature\\\":\\\"\\\",\\\"star\\\":false,\\\"weixin\\\":\\\"\\\",\\\"type\\\":1}}}"' \
--form 'isMentioned="0"'
如果期望用
RECVD_MSG_API
收消息后立即回复(快捷回复),请按以下结构返回返回值,无返回值则不会回复消息,
注意,接口响应时间过长会导致客户端断开http连接,大概60s的样子,对于需要长时间计算逻辑的回复时候建议手动去找到昵称发送
- ContentType:
json
参数 | 说明 | 数据类型 | 默认值 | 可否为空 | 可选参数 |
---|---|---|---|---|---|
success | 该条请求成功与否,返回 false 或者无该字段,不会处理回复,有一些特殊消息也通过这个字段控制,比如加好友邀请,返回 true 则会通过好友请求
|
Boolean |
- | Y |
true false
|
data | 如果需要回复消息的话,需要定义data字段 |
Object Object Array
|
- | Y |
参数 | 说明 | 数据类型 | 默认值 | 可否为空 | 可选参数 |
---|---|---|---|---|---|
type | 消息类型, 字段留空解析为纯文本 |
String text
|
- | Y |
text fileUrl base64
|
content |
消息内容,type 为 fileUrl 或 base64 时会解析 content 成文件 |
String |
- | N | - |
fileAlias |
发送的文件名别名 仅当 type 为 fileUrl 或 base64 有效,用来解决自定义发送文件名问题,base64类型,不填该参数,默认为 时间戳+文件后缀名 |
String |
- | Y | - |
{
"success": true,
"data": {
"type": "text",
"content": "hello world!"
}
}
{
"success": true,
"data": [
{
"type": "text",
"content": "hello world!"
},
{
"type": "fileUrl",
"content": "https://samplelib.com/lib/preview/mp3/sample-3s.mp3"
}
]
}
{
"success": true,
"data": {
"type": "text",
"content": "你好!新朋友"
}
}