产品功能
多渠道短信管理后台的设计可以考虑如下几个方面:
- 渠道管理: 管理不同的短信渠道,比如阿里云短信,腾讯云短信,网易云短信等。每个渠道需要配置相关的 API 信息,账户信息等。
- 模板管理: 管理短信模板,一个模板对应一个渠道。模板需要配置模板内容,占位符等信息。
- 发送记录: 记录每次发送短信的详细信息,包括发送时间,发送人,接收人,发送内容,所使用模板,发送状态(成功/失败),失败原因等。
- 发送任务: 提供发送短信的接口,调用方传入接收人手机号,模板ID,模板参数等,后台将根据配置找到对应渠道进行短信发送。
- 报表统计: 提供短信发送数量,成功率等统计报表。报表可以按天,周,月进行统计汇总。
- 权限管理: 提供用户管理,角色管理和权限管理。不同的用户可以有不同的使用权限,比如有的用户只能发送短信,有的用户可以管理模板和渠道等。
- API 文档: 提供开放 API 以支持其他系统对短信后台的调用和使用。文档需要明确 API 定义,请求参数,返回数据格式等信息。
架构应该如何设计
多渠道短信管理后台的架构设计可以考虑:
- WEB 层:提供 WEB UI 界面给用户使用,负责请求处理,页面渲染等。
- API 层:提供开放 API 给外部系统调用,比如发送短信 API 等。
- 业务层:负责具体业务逻辑处理,如短信渠道管理,模板管理,发送任务处理等。
- DAO 层:数据库访问层,负责数据库 CRUD 操作。
- 数据库:存储短信渠道,短信模板,发送记录等信息。
综上,整体架构可以设计为:
数据库
- 短信渠道表
- 短信模板表
- 发送记录表
业务层
- 渠道业务
- 模板业务
- 发送任务业务
- 统计报表业务
API 层
- 发送短信API
- 其他API
WEB 层
- 首页
- 渠道管理
- 模板管理
- 发送记录
- 报表统计
- 用户管理
架构采用三层设计,UI 层面向用户,业务层面向业务处理,DAO 层面向数据库。各层通过接口相互调用。
API 层对外提供接口服务,WEB 层作为管理后台。数据库存储核心业务数据。
这种分层的架构设计可以使系统扩展性好,可维护性高。各层级相互解耦,有利于后期优化和迭代。
如何实现不同短信渠道对接的统一性
实现不同短信渠道对接的统一性,可以考虑以下几点:
- 定义统一的短信发送接口:对外提供一个统一的发送短信的接口,接口接收参数如手机号,模板ID,模板参数等。这个接口去调度不同渠道的发送接口,实现结果的统一返回。
- 统一短信模板:对不同渠道的短信模板进行统一,比如定义一套通用的短信模板,然后在具体发送时,根据渠道去适配模板,达到在管理界面统一管理模板的目的。
- 统一发送记录存储:对不同渠道发送的短信发送记录进行统一存储,存储内容包括发送时间,手机号,模板ID,状态等信息。这些字段是通用的,存储后可以实现统一的发送记录查询。
- 统一渠道管理界面:在管理系统提供统一的短信渠道管理界面,比如可以输入渠道名称,渠道类型(阿里云,腾讯云等),账号,密钥等信息。然后系统内部去适配这个渠道的具体发送 API 等。
- 结果状态映射:不同渠道的发送状态可能使用不同的状态码,需要进行映射统一,比如都映射为"成功"、"失败"等常用状态。方便统一处理发送结果。
- 发送流程抽象:抽象出一个统一的短信发送流程,然后每个具体渠道去实现这个流程。流程可以包含:校验参数->调用渠道API发送->获取发送结果->解析结果并返回。这样可以在流程层面达到统一,隐藏具体渠道实现的差异。
所以,总之要在接口定义,数据存储,流程抽象,管理界面等方面进行统一和抽象,把不同渠道的对接细节隐藏在系统内部,对外提供统一而简单的短信发送服务。这才能真正实现不同短信渠道的良好对接
短信管理后台的报表统计
短信管理后台的报表统计可以包含以下内容:
- 发送量统计:按天/周/月统计发送短信的总量,这可以看出整体的发送频次,用来判断短信通道的负载等。
- 成功率统计:按天/周/月统计短信发送成功率,成功率=发送成功量/发送总量。这可以查看短信发送质量,如果成功率过低需要检查短信渠道等。
- 每小时发送量:统计每小时内发送短信的数量,用来查看短信发送的高峰期和低峰期,以用于后续优化。
- 每日发送量周期图:统计每天24小时内发送短信的数量周期图,更直观地查看发送周期特征。
- 发送量地域分布:按省/市统计发送短信的数量,查看短信发送量的地域热点分布。
- 发送状态分布:统计不同发送状态(成功/失败等)的短信数量,成功状态可以再按具体成功子状态进行分布查看。用来检查失败原因等。
- 短信模板使用排行:按使用次数统计短信模板的使用排行,查看短信功能使用热度,以决定模板的优化顺序。
- 用户发送排行:按发送短信的数量统计用户的发送排行,查看哪些用户短信发送积极度高,方便针对性优化。
- 错误码分布:如果短信发送失败,统计不同错误码对应的失败短信数量, 错误码的分布可以定位常见的失败原因。
- 其他自定义报表:可以根据业务需要开发一些自定义的报表,比如流失用户短信发送统计等。