# SMS发送短信开发
短信发送,微信模版消息,小程序提醒消息,开发的流程基本都是一样的。
## 1. 首先定义一个模版消息提醒类型
如果开发者直接是修改niucloud-admin框架,则消息提醒的类型定义位置在 `niucloud\app\dict\notice\notice.php`文件中
如果开发者开发一个插件,则消息提醒的类型定义位置在插件的`addon\hello_world\app\dict\notice\notice.php`文件中
notice.php文件中定义消息提醒类型
```
return [
'verify_code' => [
'key' => 'verify_code',
'receiver_type' => 1,
'name' => '手机验证码',
'title' => '管理端验证码登录',
'async' => false,
'variable' =>[
'code' => '验证码'
],
],
]
```
`verify_code` 用户自己定义的关键词
`key` 和上面的关键词一样
`receiver_type` 消息接收者,1表示会员接收,0表示平台用户接收
`name` 消息类型的名称,参考下图
`title` 消息的描述,说明,暂时没有使用
`async` 同步还是异步,这个根据具体的业务场景定义。比如短信验证码,需要返回值,就是同步。比如订单完成消息,这种就是异步。异步消息没有返回值。
`variable` 消息提醒会用到的所有的变量,开发者定义好变量,使用者可以在模版消息中组合变量和普通文本定义消息内容。这个定义好后,在具体的业务调用的代码中,需要传递实际的数据。<br>
**定义消息类型后,会在系统中自动加载**
如下图
![](https://img.kancloud.cn/f4/a2/f4a2be7ac44ccf94a01e70fd479d51a2_1209x600.png)
## 2. 对第一步中定义的模版消息提醒类型,定义不同类型的实现(SMS, WEICHAT模版消息,小程序订阅消息提醒)
开发者在第一个步骤中先定义好一个消息提醒类型。在实际的应用中,这种消息提醒可能只发送短信,也可能会同时发送短信,微信模版消息,小程序消息。某种业务场景也可能会发给管理者,而不是会员,比如新客户下单消息。
`app\dict\notice\sms.php` 消息提醒的短信定义
`app\dict\notice\weapp.php` 消息提醒的微信小程序订阅消息定义
`app\dict\notice\wechat.php` 消息提醒的微信模版消息定义
上面三个文件为某个消息提醒类型的具体的实现,比如短信验证码,这个消息提醒只会发送短信,而对于微信模版消息,微信小程序订阅消息都是无意义的。则我们只会在sms.php文件中定义短信验证码的定义
```
<?php
return [
//手机验证码
'verify_code' => [
'content' => '您的手机验证码{code},请不要轻易告诉其他人'
],
];
```
sms.php中 `verify_code`关键字和 notice.php中 `verify_code` 关键词一致
`content` 表示消息的具体描述,这个描述会在程序中,配置时可以让用户自己修改(暂时没有实现)
![](https://img.kancloud.cn/65/3f/653fbe5edb0e8cc2386f38a0b7eacf14_1243x635.png)
经过上面的定义,消息模版类型就定义好了。相应的界面就会出现。
**微信模版消息、小程序订阅消息,与上面的操作是一样的。**
## 2. 消息提醒的发送
上面定义配置好后,就可以通过下面的方法发送消息了
```
(new NoticeService())->send('member_verify_code', ['code' => $code, 'mobile' => $mobile]);
```
send方法`$key `参数表示消息的key, `$data`参数是数组 前面定义的变量数据
niucloud-admin框架会根据您配置的某个消息类型的定义,循环发送实现的消息端口
- 源码下载
- 安装部署
- 环境要求
- 安装视频教程
- 宝塔部署
- 授权绑定
- 二次开发须知
- 技术栈
- 目录结构
- 命名规范
- 二次开发指导
- 二次开发环境搭建步骤
- 二次开发注意事项
- 单站和Saas模式开发
- 插件结构描述
- MENU开发
- DIY组件/页面开发
- 自定义手机端DIY装修页面
- Route 路由处理
- Services中的core文件夹
- 自定义站点管理端控制台页面样式
- 调用素材资源
- Resource资源文件
- 引入图标ICON
- SMS发送短信开发
- Job 消息队列和计划任务
- 消息队列
- 计划任务开发
- 生产环境编译打包处理步骤
- 生产环境搭建步骤
- 插件安装时npm,composer检测不可用问题处理
- 上传图片大小限制修改
- 插件uniapp开发
- 菜单语言包
- 插件打包
- 插件内测在线升级
- 自定义端口开发
- 二次开发应用插件视频教程
- 二次开发安装视频教程
- 准备工作与创建插件
- 插件目录整体说明
- 插件admin目录
- 插件app目录说明(adminapi、api、验证器)
- 插件app目录(dict、job)
- 插件app目录说明(lang、listener)
- 插件app目录说明(model、service)
- 插件uniapp目录说明
- 插件开发之后台功能开发(代码生成器)
- 插件开发之uniapp功能开发(api)第一节
- 插件开发之uniapp功能开发(api)第二节
- 插件开发之uniapp功能开发(api)第三节
- 插件安装与打包原理
- 消息队列开发
- 计划任务开发
- DIY组件和自定义页面装修开发
- 支付接口开发
- 插件升级包打包流程以及云编译功能
- 常见问题
- 怎么添加菜单,添加了菜单不出现怎么回事
- 怎么配置跨域的问题
- 站点site端(租户端、商家端)和saas管理端(平台端)究竟啥意思,有啥区别
- 框架中是有订单表order,假如开发一个商城插件,请问商城的订单数据是不是重新搞一个订单表shop_order
- 有些支付平台是绑定回调唯一网址或目录,如果有几个开发者开发插件都有支付那这块怎么解决?
- 站点过期,可以登录,这样对吗?
- 计划任务怎么启动啊
- Git多分支开发,切换分支
- 安装应用出现is_dir():报错处理方案
- 绑定授权时出现“请求来源产品与授权产品不一致”解决方案
- “未找到admin源码所在目录”的解决方案
- 页面装修本地开发环境配置
- 接口请求错误处理方案
- 未获取到授权信息问题处理方案
- 腾讯地图配置
- 请求超时问题处理方案
- 下载应用时提示找不到zip解决方案
- 怎么关闭开发调试模式
- 获取数据失败问题处理方案
- 框架安装后,访问域名无法进入admin端(多数发生在本地)
- 底部导航失效问题
- 开放平台小程序审核通过发布失败问题
- 先升级插件后升级框架,导致云编译报debounce的错误
- 微信公众号自动回复不通
- 修改访问域名默认跳转端口
- 插件与框架的兼容问题处理
- 升级提示mkdir()处理方案
- 代码生成器
- 设计数据表
- 导入数据表
- 添加字段
- 代码生成
- 效果预览
- niucloud (服务端)
- 服务端目录结构
- 整体运行流程
- 入口文件
- 模块
- 中间件
- 控制器
- 路由
- 模型类
- 服务类
- 验证类
- 消息队列
- 开发消息队列
- 多语言
- 装载器
- 短信发送
- 上传文件
- 第三方支付
- 第三方登录
- 数据字典装载器
- 打印
- 事件
- 消息提醒(模版消息)
- 数据字典
- admin (后台管理端)
- 准备工作
- 新手入门
- 目录结构
- 系统配置
- 路由
- 接口
- 管理端编译上传
- uni-app(手机端前端)
- 准备工作
- 前端目录结构
- Hbuilder开发
- 发行h5
- 运行uniapp
- 发行uniapp
- Visual Studio Code开发
- 发行 uniapp
- 运行 uniapp
- 配置项
- 路由
- 接口
- 分包建议
- 手机端编译
- 微信小程序编译上传
- web端(PC前端)
- 准备工作
- 目录结构
- 代码运行
- 路由
- 接口
- 黑暗主题
- web端打包上线
- api接口
- 配置手册
- 阿里云oss云存储配置
- 三方开放平台小程序托管
- 计划任务配置
- 站点域名配置
- 小票打印配置
- 电子面单配置
- 微信小程序客服配置