您现在的地位: 365体育备用网址 > bet365体育在线, > 微信公众平台开拓 > 25.6.2群发通知实现

25.6.2群发通知实现_365体育备用网址官网资讯

您现在的地位: 365体育备用网址 > bet365体育在线, > 微信公众平台开拓 > 25.6.2群发通知实现

25.6.2群发通知实现

此节有 111 人学习过     参与评论

本项目中群发通知时,先猎取48小时有交互用户的数量,并猎取上次已经保留的群发消息,相应代码如下所示。

 1 public function index()
 2 {
 3     //48小时有交互用户
 4     $condition['heartbeat']  = array('gt',(time() - 172800));
 5     $list = Db::name('user')->where($condition)->select();
 6 
 7     // 猎取用户数
 8     $this->assign('total', count($list));
 9 
10     //猎取已有消息
11     $message = MessageModel::get(1);
12     $this->assign('message', $message->toArray());
13 
14     // 渲染模板输出
15     return $this->fetch();
16 }

模板页面的代码如下所示。

XML"> 1 <form id="myform" action="{:Url('/XDpnUDLrYIcpE11QrSbQRELOXEVYJkLKWuR.jpg')}" method="post">
 2     <table cellpadding=0 cellspacing=0 class="table_form" width="100%">
 3         <tr>
 4             <td>覆盖人数</td>
 5             <td><font color="blue">{$total}</font></td>
 6         </tr>
 7         <tr>
 8             <td>消息类型</td>
 9             <td><input type="text" class="input-text"  name="type" value="{$message.type}" size="50"></td>
10         </tr>
11         <tr>
12             <td>图文标题</td>
13             <td><input type="text" class="input-text"  name="title" value="{$message.title}" size="50"></td>
14         </tr>
15         <tr>
16             <td>图文详情</td>
17             <td><textarea id="first" name="description" rows="3" cols="60" size="50">{$message.description}</textarea></td>
18         </tr>
19         <tr>
20             <td>千亿pt手机客户端官方地址</td>
21             <td><input type="text" class="input-text"  name="picurl" value="{$message.picurl}" size="50"></td>
22         </tr>
23         <tr>
24             <td>跳转地址</td>
25             <td><input type="text" class="input-text"  name="url" value="{$message.url}" size="100"></td>
26         </tr>
27         <tr>
28             <td><font color="red"><strong>*注意:</strong></font></td>
29             <td><font color="red">务必确认信息正确一致,点击发送后将马上启动发送程序并且无法撤销。</font></td>
30         </tr>
31     </table>
32     <div class="btn">
33         <input type="hidden" name="id" value="{$message['id']}" />
34         <INPUT TYPE="submit"  value="发送" class="button" >
35     </div>
36 </form>

配置页面显示如图25-8所示。

图25-8群发配置界面
当点击“发送”按钮以后,send()函数将接收到通过POST传输过来的参数。将这些参数拼装成一个图文消息,然后猎取48小时内有互动的用户列表,接着使用客服消息接口对用户列表进行遍历发送。就实现发群发图文通知功能。相应代码如下所示。

 1 public function send()
 2 {
 3     //更新并存储当前消息
 4     $message = new MessageModel;
 5     $message->save(['title' => $_POST['title'],
 6                     'description' => $_POST['description'],
 7                     'picurl' => $_POST['picurl'],
 8                     'url' => $_POST['url'],
 9                     'date' => date("Ymd",time())
10                   ],['id' => $_POST['id']]);
11     
12     //猎取48小时用户列表
13     $condition['heartbeat']  = array('gt',(time() - 172800));
14     $userlist = Db::name('user')->where($condition)->select();
15     
16     //准备微信类及群发图文
17     $weixin = new \weixin\Wxapi();
18     $data = array();
19     $data[] = array("title"=>$_POST['title'], "description"=>$_POST['description'], "picurl"=>$_POST['picurl'], "url" =>$_POST['url']);
20     
21     //遍历发送
22     $array = array();
23     foreach ($userlist as &$user) {
24         $openid = $user['openid'];
25         $result = $weixin->send_custom_message($openid, "news", $data);
26         var_dump($openid);
27         var_dump($result);
28     }
29 }

用户收到的图文消息如图25-9所示。

图25-9群发通知效果
如果群发的用户很多,使用轮询一对一发送的方式将出现极大的延迟,这时需要考虑使用其余方式异步执行,比如使用队列的方式。

如对本文有疑问,请提交到交流澳门赌场排名 娱乐场,广大热心网友会为你解答!! 点击进入澳门赌场排名 娱乐场


公布评论 (111人察看0条评论)
请自觉遵守互联网相关的政策法规,严禁公布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换千亿pt手机客户端官方
最新评论
------分隔线----------------------------
微信公众平台开拓目录
条评论
Sitemap