# 在云函数中推送模板消息
* [ ] 借助wx-js-utils,可以方便的实现模板消息推送
>使用方法
* 创建客户端代码
```html
<form report-submit="true" bindsubmit="onSubmit">
<button bindtap="onClick" form-type="submit">推送模板消息</button>
</form>
```
* js代码
```javascript
onSubmit:function(event){
let formId = event.detail.formId
wx.cloud.callFunction({
name:'templateMessage',
data:{
formId: formId
}
}).then(console.log)
}
```
* 创建云函数`templateMessage`

* 右键点击->终端打开安装依赖
`npm i wx-js-utils`
*云函数`index.js`代码
```javascript
const {
WXMINIUser,
WXMINIMessage
} = require('wx-js-utils');
const appId = 'wx632a4b248d78c1d9'; // 小程序 appId
const secret = 'bc8ec6cba46419af56dd95756a17da07'; // 小程序 secret
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const {OPENID} = cloud.getWXContext();
// 获取 access_token
let wXMINIUser = new WXMINIUser({
appId,
secret
});
let access_token = await wXMINIUser.getAccessToken();
const touser = OPENID; // 小程序用户 openId,从用户端传过来,指明发送消息的用户
const form_id = event.formId; // 小程序表单的 form\_id,或者是小程序微信支付的 prepay_id
const template_id = 'ur01ZUT-9t7rAKkmi8k8QYJgrEVXy1EwKtYE2\_ky1m8'; // 小程序模板消息模板 id
// 发送模板消息
let wXMINIMessage = new WXMINIMessage();
let result = await wXMINIMessage.sendMessage({
access_token,
touser,
form_id,
template_id,
data: {
keyword1: {
value: 'xxx' // keyword1 的值
},
keyword2: {
value: 'xxx2' // keyword2 的值
},
keyword3: {
value: 'xxx3' // keyword3 的值
}
},
page: 'pages/index/index' // 点击模板消息后,跳转的页面
});
return result;
}
```
* 前端调用效果
