短信配置
短信配置用于接入第三方短信服务商,并通过模板化方式发送验证码、审批提醒、业务通知等短信。RuoYi Office 当前管理端包含短信渠道、短信模板和短信日志三类页面。
本地实现位置
| 层 | 位置 |
|---|---|
| 短信渠道页面 | ruoyi-office-vben/apps/web-antd/src/views/system/sms/channel |
| 短信模板页面 | views/system/sms/template |
| 短信日志页面 | views/system/sms/log |
| 后端 Controller | SmsChannelController.java、SmsTemplateController.java、SmsLogController.java、SmsCallbackController.java |
| 发送服务 | SmsSendService |
发送链路
短信渠道
短信渠道保存服务商接入信息,例如渠道编码、签名、访问密钥、回调地址和状态。管理端支持新增、编辑、删除、批量删除和分页查询。
常见接口:
| 操作 | 接口 | 权限标识 |
|---|---|---|
| 创建渠道 | POST /system/sms-channel/create | system:sms-channel:create |
| 更新渠道 | PUT /system/sms-channel/update | system:sms-channel:update |
| 删除渠道 | DELETE /system/sms-channel/delete | system:sms-channel:delete |
| 渠道分页 | GET /system/sms-channel/page | 页面查询使用 |
| 精简列表 | GET /system/sms-channel/list-all-simple、/simple-list | 模板下拉使用 |
短信模板
短信模板定义模板编号、模板 code、模板内容、参数和绑定渠道。页面支持新增、编辑、删除、批量删除、导出和测试发送。
| 操作 | 接口 | 权限标识 |
|---|---|---|
| 创建模板 | POST /system/sms-template/create | system:sms-template:create |
| 更新模板 | PUT /system/sms-template/update | system:sms-template:update |
| 删除模板 | DELETE /system/sms-template/delete | system:sms-template:delete |
| 模板分页 | GET /system/sms-template/page | 页面查询使用 |
| 导出模板 | GET /system/sms-template/export-excel | system:sms-template:export |
| 测试发送 | POST /system/sms-template/send-sms | system:sms-template:send-sms |
测试发送当前通过 SmsSendService#sendSingleSmsToAdmin 发送到指定手机号,适合验证渠道、签名和模板参数是否正确。
短信日志
短信日志记录每一次发送请求、接收手机号、模板、渠道、发送状态、服务商返回结果等信息。页面支持分页、详情和导出。
| 操作 | 接口 | 权限标识 |
|---|---|---|
| 日志分页 | GET /system/sms-log/page | 页面查询使用 |
| 日志详情 | GET /system/sms-log/get | 页面查询使用 |
| 导出日志 | GET /system/sms-log/export-excel | system:sms-log:export |
接入建议
- 先渠道,后模板:模板通常需要绑定渠道和服务商模板编号。
- 模板参数保持一致:平台模板内容、服务商模板参数、业务
templateParams三者名称要一致。 - 测试发送再接业务:新渠道上线前先在模板页面测试,确认签名、密钥、模板审核都正常。
- 关注回调与日志:服务商回调能补齐最终送达状态,排查时以短信日志为准。
排查清单
| 现象 | 排查方向 |
|---|---|
| 发送失败 | 检查渠道密钥、签名、模板编号和服务商审核状态 |
| 参数未替换 | 检查模板参数名与业务传参是否一致 |
| 日志没有记录 | 检查业务是否调用 SmsSendService,以及是否被异常提前中断 |
| 服务商显示成功但系统未知 | 检查回调地址和 SmsCallbackController 可访问性 |
