微信小程序模板消息推送详细介绍及代码实现

2023-02-18    分类: 网站建设

在如今科技发达的年代,大家每天都在接收大量的信息,如电话、短信、APP消息推送、邮件、微信消息、微信服务通知、朋友圈消息、微博消息等等,这些不乏大量的推广信息。面对大量的垃圾信息,我们会报告垃圾短信、屏蔽垃圾电话、屏蔽垃圾邮件、屏蔽某人朋友圈等等,这也导致了大部分消息推送方式的失效或者效果打折。那么,今天创新互联谈的是,效果非常好的微信服务通知,因为这里推送的都是有效信息,屏蔽的人非常少,微信不允许你把它当做推广工具,所以都有调用次数等规则限制,但我们可以好好利用以保持应用的用户粘性。
模板消息推送
小程序的模板消息推送,体现在微信-服务通知,如下图。
点击模板消息,可直接进入小程序某个页面,利用好可以保持应用和用户的粘性,效果非常好。
是不是什么消息都可以发送?模板消息推送有什么条件?
为了防止垃圾信息推送,微信做了很多的规范和限制,如下 只能发送微信提供的模板信息,不能自定义消息内容,想发什么就发什么; 有推送条件限制,即用户本人在微信体系内与页面有交互行为后触发。当用户在小程序内完成过支付行为,可在7天内推送3条模板消息或者当用户在小程序内有提交表单行为,可7天内推送1条模板消息。 有各种标题、关键词规范,防止发送垃圾信息,违者封接口。
具体推送步骤如下
模板消息列表
第一步、到小程序管理后台申请推送模板。如下图,已申请了2个模板,最多可申请25个模板消息,模板库目前有160个模板,适合各行各业。
模板消息详细
比较重要的是记住模板ID和模板关键词,在实际推送过程中需要用到,如下图
第二步、收集用户formid
用户支付产生的prepay_id和提交表单时产生的formid(表单属性report-submit="true")
消息推送前端代码
小程序前端代码
小程序JS代码
小程序JS后台代码
后台程序接收代码并保持到数据库
数据库如下
CREATE TABLE `xxx_formid` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自动ID',
`member_id` int(11) DEFAULT NULL COMMENT '会员ID',
`form_id` varchar(50) DEFAULT NULL COMMENT '收集到的form_id',
`time_create` int(11) DEFAULT NULL COMMENT '收集时间',
`time_expire` int(11) DEFAULT NULL COMMENT '过期时间',
`can_use_times` int(2) DEFAULT NULL COMMENT '可使用次数',
`used_times` int(2) DEFAULT NULL COMMENT '已使用次数',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='小程序收集的用于推送消息的form_id表';
THINKPHP推送代码如下
/**
* 发送模板消息
* @param type $ctype 模板消息类型
* @param type $member_id 会员ID
* @param type $template_id 模板ID
* @param type $url 模板消息跳转地址
* @param type $data 模板消息数据
* @return int 是否成功
*/
function do_send($ctype,$member_id, $template_id, $url, $data)
{
//获得access_token
$AccessTokenObj = new AccessTokenModel();
$access_token = $AccessTokenObj->get_token();
//获得用户open_id
$MemberObj = new MemberModel();
$openid = $MemberObj->get_openid($member_id);
//获得form_id
$FormidObj = new FormidModel();
$form_id = $FormidObj->get_form_id($member_id);
$template = array(
'touser' => $openid,
'form_id' => $form_id,
'template_id' => $template_id,
'page' => $url,
'data' => $data
);
if(empty($openid)) {
$this->add_record($ctype, $member_id, $openid, $form_id,$template_id, json_encode($data),$url, 0, "没有可用openid");
return 2;//没有可用的openid
}
if(empty($form_id)) {
$this->add_record($ctype, $member_id, $openid, $form_id,$template_id, json_encode($data),$url, 0, "没有可用formid");
return 3;//没有可发送的form_id
}
$json_template = json_encode($template);
$url_send = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=" . $access_token;
$json_result = sendCmd($url_send,$json_template);
$result = json_decode($json_result,true);
$is_success = 0;
$err_msg = '';
if($result['errcode'] == 0) {
$FormidObj->update_state_form_id($form_id);
$is_success = 1;
} else {
$err_msg = $result['errcode'];
}
$this->add_record($ctype, $member_id, $openid, $form_id, $template_id, json_encode($data), $url, $is_success, $err_msg);
return $is_success;
}
其中需要用到PHP发送请求函数
/**
* 发起请求
* @param string $url 请求地址
* @param string $data 请求数据包
* @return string 请求返回数据
*/
function sendCmd($url,$data)
{
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:')); //解决数据包大不能提交
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);
}
curl_close($curl); // 关键CURL会话
return $tmpInfo; // 返回数据
}
微信小程序的模板消息推送和服务号的模板消息推送还是不一样的
小程序发送需要formid,而且有7天的时间限制,而服务号是不需要的,但是一个服务号每天有消息总条数限制。
下面附带小程序的一些规则
审核说明
1.标题
1.1标题不能存在相同
1.2标题意思不能存在过度相似
1.3标题必须以“提醒”或“通知”结尾
1.4标题不能带特殊符号、个性化字词等没有行业通用性的内容
1.5标题必须能体现具体服务场景
1.6标题不能涉及营销相关内容,包括不限于:
消费优惠类、购物返利类、商品更新类、优惠券类、代金券类、红包类、会员卡类、积分类、活动类等营销倾向通知
2.关键词
2.1同一标题下,关键词不能存在相同
2.2同一标题下,关键词不能存在过度相似
2.3关键词不能带特殊符号、个性化字词等没有行业通用性的内容
2.4关键词内容示例必须与关键词对应匹配
2.5关键词不能太过宽泛,需要具有限制性,例如:“内容”这个就太宽泛,不能审核通过
违规说明
除不能违反运营规范外,还不能违反以下规则,包括但不限于:
不允许恶意诱导用户进行触发操作,以达到可向用户下发模板目的
不允许恶意骚扰,下发对用户造成骚扰的模板
不允许恶意营销,下发营销目的模板
处罚说明
根据违规情况给予相应梯度的处罚,一般处罚规则如下:
第一次违规,删除违规模板以示警告,
第二次违规,封禁接口7天,
第三次违规,封禁接口30天,
第四次违规,永久封禁接口
处罚结果及原因以站内信形式告知
创新互联专注于微信小程序定制开发,欢迎有需要的客户咨询我们的服务热线400-028-6601,或者加我们的客服QQ631063699

分享文章:微信小程序模板消息推送详细介绍及代码实现
文章链接:https://www.cdcxhl.com/news/237760.html

成都网站建设公司_创新互联,为您提供云服务器网站维护外贸网站建设App设计动态网站营销型网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

微信小程序开发