首页 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践全文在线阅读

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》25.6 群发实现

关灯直达底部

25.6.1 更新互动记录

项目的群发功能是使用客服接口实现的,而客服接口发送消息有48小时互动限制,上次互动超过48小时后,则无法再向该用户发送消息。因此在程序中需要记录用户最后一次互动的时间。其相应的代码如下。


 1 // 响应 2 public function responseMsg 3 { 4     $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 5     if (!empty($postStr)){ 6         $this->logger("R ".$postStr); 7         $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 8         $RX_TYPE = trim($postObj->MsgType); 9 10         if (($postObj->MsgType == "event") && ($postObj->Event == "subscribe" ||            $postObj->Event == "unsubscribe" || $postObj->Event == "TEMPLATESENDJ-           OBFINISH")){11             // 过滤关注、取消关注、模板消息等事件12         }else{13             // 更新互动记录14             Db::name('user')->where('openid',strval($postObj->FromUserName))->               setField('heartbeat', time);15         }16         // 消息类型分离17         switch ($RX_TYPE)18         {19             case "event":20                 $result = $this->receiveEvent($postObj);21                 break;22             case "text":23                 $result = $this->receiveText($postObj);24                 break;25             default:26                 $result = "unknown msg type: ".$RX_TYPE;27                 break;28         }29         $this->logger("T ".$result);30         echo $result;31     }else {32         echo "";33         exit;34     }35 }  

对于一些特别的事件,需要进行过滤处理,如关注、取消关注以及发送模板消息后的上报。其他的正常用户互动接收到以后,则更新该用户的hearbeat的时间戳。