/** * 调用群发接口,发送多条图文消息,服务号每个月4次 */ function sendmultinewmsg() { // 当前php文件所在目录 //define('DIR_ROOT', str_replace('\\', '/', dirname(__FILE__))); // 项目根目录 define('DIR_ROOT', $_SERVER['DOCUMENT_ROOT']); //define('DIR_ROOT', "/wwwroot/"); $courseids = $_POST["courseids"]; /*$inTemp = ""; foreach($courseids as $courseid){ $inTemp = $inTemp.$courseid.","; } $in = substr($inTemp, 0, strlen($inTemp) -1); */ // 根据courseid查询对应的课程(推送)信息 $querysql = "select * from cn_news where id in (" . $courseids . ")"; global $db; global $smarty; $res = $db->query($querysql); $rowlist = $db->fetch_all($res); // 先判断下是否存在不满足条件的数据 $errortitle = ""; foreach ($rowlist as $row) { if (empty($row["simage"])) { $errortitle .= "<font color='red'>\"" . $row["id"] . "\"</font><br />"; } } if (!empty($errortitle)) { echo "编号为:<br />" . $errortitle . "的信息不完善,请重新编辑,添加图片、缩略图信息"; return; } // TODO 先保存图片素材,得到media_id, 页面提示用户,图片素材数量上限 // 图片(image)、语音(voice)、视频(video)和缩略图(thumb) $meidaType = "image"; // // 循环所有的消息,制成成图片消息,拿到media id 数组 $articles = array(); $showcoverpic = "0"; // 是否显示封面,1为显示,0为不显示 foreach ($rowlist as $row) { //获取当前文件物理路径 $tmp_file = DIR_ROOT . "/" . $row["simage"]; //echo $tmp_file; if (file_exists($tmp_file)) { // 先循环制作所有的图片素材, 调素材管理接口上传图片,得到meidaid $response = WxUtil::uploadpic($meidaType, $tmp_file); if ($response["errcode"] == 0) { // 制作成功的,拼成一条信息 $picmediaid = $response["media_id"]; $title = $row["title"]; $sourceurl = "http://bangmaisiw.w107.mc-test.com/wap/Course-Details.php?id=" . $row["id"]; $content = $row["contents"]; $digest = ""; $article = array("thumb_media_id" => $picmediaid, "author" => "", "title" => $title, "content_source_url" => $sourceurl, "content" => $content, "digest" => $digest, "show_cover_pic" => $showcoverpic); $articles[] = $article; } else { LogUtil::logs("批量创建图片素材失败:消息来源id:" . $row["id"] . ",错误信息:" . $response["errmsg"], getLogFile("/business.log")); } } else { LogUtil::logs("文件不存在:" . $row["image"], getLogFile("/business.log")); } } $pictextResp = WxUtil::uploadmultipicmsg($articles); //echo print_r($pictextResp); // 图文消息 media_id if ($pictextResp["errcode"] == 0) { $pictextMediaid = $pictextResp["media_id"]; // 拿到mediaid, 就可以发起推送了 // 先获取openid列表 $openidsql = "select openid, nickname from wx_user_info where subscribe = '1' "; $openidres = $db->query($openidsql); // php的json格式:array(""=>"") $openidList = $db->fetch_all($openidres); // 循环下,转成无key的值数组 $openidarr = array(); $lognickname = ""; foreach ($openidList as $openid) { $lognickname .= $openid["nickname"] . ","; $openidarr[] = $openid["openid"]; } //echo print_r($openidarr); $tp = new TypeParent(); echo $tp->batchSendPicMsg($openidarr, $pictextMediaid); echo "<br />消息发送到:" . $lognickname; // $yulanopenid = "osp6swvOvVa1aXcjbFGui0Ur88V4"; // echo $tp -> batchSendPicMsgYulan($yulanopenid, $pictextMediaid); } else { echo "消息发送失败:" . $pictextResp["errmsg"]; } }