对来自企业微信平台的回调 XML 消息进行分类,将其转换为 JSON 并发布到 MQTT 以供下游使用。
该项目仍在开发中。
- 回调消息签名验证和解密
- 响应回调地址注册测试请求
- 将已识别的 XML 消息转换为 JSON
- 将带有可识别名称的 JSON 消息发布给 MQTT
- 按照文档要求对回调的消息进行正确响应
非功能
- 处理回调消息的任何业务逻辑
- TLS
docker pull ghcr.io/imulab/wetriage:latest
# 对于特定版本,请使用短提交 SHA 作为标记。例如:
# docker pull ghcr.io/imulab/wetriage:117eb11f
#
# 注意这只是一个例子,不是最新的SHA
支持以下标志:
标志 | 描述 | 默认 | 环境 |
---|---|---|---|
--port |
要监听的端口 | 8080 |
WT_PORT |
--debug |
启用调试模式 | false |
WT_DEBUG |
--path |
自定义回调端点路径 | /callback |
WT_PATH |
--token |
在微信注册的回调令牌 | - | WT_TOKEN |
--aes-key |
在微信注册的 Base64 编码的 AES 密钥 | - | WT_AES_KEY |
--topic , -t |
需要订阅的回调信息类型 | - | WT_TOPICS , WT_TOPIC |
--mqtt-url |
MQTT 经纪商网址。详情见下文 | - | WT_MQTT_URL |
下面显示了使用该镜像的示例。
docker run -d \
-p 8080:8080 \
-e WT_TOKEN=token \
-e WT_AES_KEY=base64_encoded_aes_key \
-e WT_MQTT_URL=tcp://localhost:1883 \
-e WT_TOPICS=suite_ticket_info,create_auth_info \
ghcr.io/imulab/wetriage:latest
当前,支持以下消息主题。
话题 | 描述 |
---|---|
suite_ticket_info |
推送应用模板凭证 |
create_auth_info |
授权成功通知 |
change_auth_info |
変更授权通知 |
cancel_auth_info |
取消授权通知 |
reset_permanent_code_info |
重置永久授权码通知 |
随着项目的进展,将添加更多主题。如果需要申请某个消息话题,请创建一个Issue。
已识别的主题将转换为一个结构类似的 JSON 对象。例如,suite_ticket_info
消息 XML:
<xml>
<SuiteId><![CDATA[ww4asffe99e54c0fxxxx]]></SuiteId>
<InfoType><![CDATA[suite_ticket]]></InfoType>
<TimeStamp>1403610513 </TimeStamp>
<SuiteTicket><![CDATA[asdfasfdasdfasdf]]></SuiteTicket>
</xml>
转换为 JSON 后:
{
"suite_id": "ww4asffe99e54c0fxxxx",
"info_type": "suite_ticket",
"timestamp": 1403610513,
"suite_ticket": "asdfasfdasdfasdf"
}
要确保 JSON 的确切格式,请参阅 topic package 了解详情。
上面的 JSON 消息将封装在结构体中,并以 T/WeTriage/<topic>
为主题发布到 MQTT 。
例如,上面的 suite_ticket_info
消息将在 T/WeTriage/suite_ticket_info
下发布:
{
"id": "a unique id",
"created_at": 1403610513,
"topic": "suite_ticket_info",
"content": {
"suite_id": "ww4asffe99e54c0fxxxx",
"info_type": "suite_ticket",
"timestamp": 1403610513,
"suite_ticket": "asdfasfdasdfasdf"
}
}