public function index() { // 搭讪者openid $from_openid = I('from_openid'); // 被搭讪者openid $to_openid = I('to_openid'); // 用户个人信息表 $db_userinfo = M('userinfo'); // 搭讪者个人信息 $from_info_arr = $db_userinfo->where(array("openid" => "{$from_openid}"))->find(); // 被搭讪者个人信息 $to_info_arr = $db_userinfo->where(array("openid" => "{$to_openid}"))->find(); if (IS_POST) { // 实例化工具类 $utilsObj = new UtilsController(); //发送的内容 $contents = I('contents'); //搭讪者所在城市 $from_city = $from_info_arr['city'] != null ? "来自" . $from_info_arr['city'] . "的" : ""; //搭讪者性别 $from_sex = $from_info_arr['sex'] == 1 ? "汉子👦" : "妹子👧"; //搭讪者昵称 $from_nickname = $from_info_arr['nickname']; // 搭讪url $dashan_url = $utilsObj->get_dashan_url($to_openid, $from_openid); // 拼接向被搭讪者要发送的消息 $to_content = $from_city . $from_nickname . $from_sex; $to_content .= "向你发来消息:\n------------------\n\n" . $contents . "\n\n"; $to_content .= "<a href='{$dashan_url}'>点此回复</a>"; $to_content .= "\n------------------\n"; $to_content .= "发送“@+你想说的话”可以快速回复ta哦[色]"; // 向被搭讪者发送消息 $jsondata = $utilsObj->send_custom_message($to_openid, "text", $to_content); $arrdata = json_decode($jsondata, true); // 拼接向搭讪者要发送的消息 $dashan_url2 = $utilsObj->get_dashan_url($from_openid, $to_openid); $from_content = "你对" . $to_info_arr['nickname'] . "说:\n------------------\n\n" . $contents . "\n\n"; $from_content .= "<a href='{$dashan_url2}'>点此继续聊天</a>"; $from_content .= "\n------------------\n"; // 向搭讪者发送消息 $utilsObj->send_custom_message($from_openid, "text", $from_content); if ($arrdata['errmsg'] == "ok") { echo "消息发送成功,请返回耐心等待对方回复"; } else { echo "消息发送失败,请重试"; } } else { $this->assign('from_info_arr', $from_info_arr); $this->assign('to_info_arr', $to_info_arr); $this->display(); } }
private function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)) { libxml_disable_entity_loader(true); // 接收到的xml消息 $object = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $object->FromUserName; // 这个就用户的openid $toUsername = $object->ToUserName; // 接收到的关键字 $keyword = trim($object->Content); // 接收到的消息类型 (text,image,voice,video,location,link,event) $msgType = $object->MsgType; // 实例化回复类 $replyObj = new ReplyController(); // 实例化工具类 $utilsObj = new UtilsController(); //将未存入数据库的用户信息存入数据库,方便下次搭讪 $utilsObj->get_user_info($fromUsername); // 更新该用户的最后交互时间 $db_userinfo = M('userinfo'); $now_time = time(); $db_userinfo->where(array('openid' => "{$fromUsername}"))->save(array("last_time" => $now_time)); switch ($msgType) { case 'text': // 文本消息处理 if ($keyword == "搭讪客服") { $content = $utilsObj->dashan("客服", $fromUsername); } elseif ($keyword == "搭讪汉子") { $content = $utilsObj->dashan("汉子", $fromUsername); } elseif ($keyword == "搭讪妹子") { $content = $utilsObj->dashan("妹子", $fromUsername); } elseif ($keyword == "搭讪") { $content = $utilsObj->dashan("搭讪", $fromUsername); } elseif (preg_match('/@((.*?))/', $keyword)) { $content = $utilsObj->dashan_send_msg($keyword, $fromUsername); } break; case 'image': // 图片消息处理 break; case 'voice': // 声音消息处理 break; case 'video': // 视频消息处理 break; case 'location': // 地理消息处理 break; case 'event': // 事件消息处理 $eventType = $object->Event; //取出事件的类型 switch ($eventType) { case 'subscribe': // 关注事件 break; case 'SCAN': // 扫码事件 break; case 'unsubscribe': // 取消关注事件 break; case 'LOCATION': // 地址上报事件 break; case 'CLICK': // 自定义菜单点击事件 $eventKey = $object->EventKey; switch ($eventKey) { case "": break; } break; } break; } echo $replyObj->transmitText($object, $content); } else { echo ""; exit; } }