消息网关(一)-- 开发设计

2022-11-15  本文已影响0人  天草二十六_简村人

一、背景

作为公司的基础服务之一,发送消息是必不可少的功能之一,包括发送手机短信、企业微信、钉钉消息和电子邮件等。

二、目标

三、数模设计

image.png

四、业务对接流图

image.png

五、关键术语

1、消息类型

指的是短信、企业微信、电子邮件等。

2、短信模板

消息平台定义好合法的短信模板,明确定义模板变量和编号,然后到第三方渠道申请短信模板。

image.png

数据结构示例:

/* 平台的短信编号是SMS_0001,
短信类型区分验证码类和通知类,
这里维护的第三方模板编号包括阿里云和华为云 
*/
{
    "_id" : ObjectId("5fab859e2073d196c7c175bf"),
    "type" : "VERIFY",
    "name" : "验证码",
    "code" : "SMS_0001",
    "content" : "您的验证码:${code},十分钟内有效。",
    "mapping" : "{\"SMS_ALIYUN\":\"SMS_205443030\",\"SMS_HUAWEIYUN\":\"ff5ba781be91472cac79178d1132df88\"}",
    "remark" : "",
    "createTime" : ISODate("2020-12-23T00:00:00.000Z"),
    "createBy" : "1",
    "modifiedTime" : ISODate("2020-12-23T00:00:00.000Z"),
    "modifiedBy" : "1"
}
image.png

3、渠道

渠道,也作第三方渠道,上层是应用(和渠道是一对多的关系)。

查询条件包括:消息类型和应用ID

// 查询应用是zpms,消息类型是手机短信的渠道列表
db.getCollection('channel').find({   
 "supportMessageType" : "SMS",   
 "applicationId" : "zpms", 
 })

属性设计说明:

4、应用

区分不同的签名,一个企业对应一个应用。当是发送短信的时候,应用的名称就是签名。

image.png

六、接口设计

1、消息发送记录

image.png

2、发送消息

// account 是手机号、邮箱等账号
// applicationId 对应application中的applicationId
// payload 传入消息模板的变量及值,json格式支持多个
// templateCode 模板编号
// subject 消息主题,类似于模板名称、邮件主题

{
  "messageType": "SMS",
  "subject": "验证码",
  "templateCode":"SMS_0001",
  "payload": "{\"code\":\"123456\"}",
  "account": "150xxxxxxx",
  "applicationId": "zpms"
}
上一篇下一篇

猜你喜欢

热点阅读