Skip to content

Latest commit

 

History

History
114 lines (87 loc) · 4.33 KB

README.zh.md

File metadata and controls

114 lines (87 loc) · 4.33 KB

WeTriage

English

对来自企业微信平台的回调 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 了解详情。

MQTT

上面的 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"
  }
}