# 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>
**定義消息類型后,會在系統中自動加載**
如下圖

## 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` 表示消息的具體描述,這個描述會在程序中,配置時可以讓用戶自己修改(暫時沒有實現)

經過上面的定義,消息模版類型就定義好了。相應的界面就會出現。
**微信模版消息、小程序訂閱消息,與上面的操作是一樣的。**
## 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開發
- 菜單語言包