public function getSignPackage() { $url = $this->url; $appid = "wx3faa5c04dbde6ac2"; $jsapiTicket = redisData::Get('jsapi_ticket'); $timestamp = time(); $nonceStr = $this->createNonceStr(); // 这里参数的顺序要按照 key 值 ASCII 码升序排序 $string = "jsapi_ticket={$jsapiTicket}&noncestr={$nonceStr}×tamp={$timestamp}&url={$url}"; $signature = sha1($string); $signPackage = array("appId" => $appid, "nonceStr" => $nonceStr, "timestamp" => $timestamp, "url" => $url, "signature" => $signature, "rawString" => $string); return $signPackage; }
<!-- 解除绑定模态框结束 --> <ul class="list-group"> <?php $username = $_SESSION['username']; $connectHC = Db::instance('ConnectDb'); $result = $connectHC->row("SELECT macid FROM `wxserver` WHERE openid='{$username}'"); // 得到绑定的MACID数组 $getmacidlist = explode('/', $result['macid'], -1); // 得到绑定的MACID的clientid数组 /*$getmacidclientlist = array(); foreach ($getmacidlist as $value) { $result = $connectHC->row("SELECT clientid FROM `wifiserver` WHERE macid='$value'"); $getmacidclientlist[$value] = $result['clientid']; };*/ // 得到绑定MACID的名称数组 $getmacnamelist = redisData::hMGet($username, $getmacidlist); foreach ($getmacnamelist as $key => $value) { # code... /*$getdata = redisData::allarray($getmacidclientlist, $getmacnamelist); var_export($getdata);*/ ?> <li class="list-group-item"> <p style="line-height: 40px;" id="<?php echo $key; ?> "><span contenteditable="true"><?php echo $value; ?> </span></p> <div class="kaiguan"> <button class="button button-box button-primary button-small" name="rename"><i class="glyphicon glyphicon-pencil span-button"></i></button>
use Workerman\Protocols\Http; use GatewayWorker\Lib\Db; if (!isset($_POST['username'])) { echo "对不起,您访问的页面不存在!:("; HTTP::end(); } $username = $_POST['username']; $macid = $_POST['macid']; $macname = $_POST['macname']; // username<=>macid 存入MYSQL中 $connectHC = Db::instance('ConnectDb'); $getmacid = $connectHC->row("SELECT macid FROM `wxserver` WHERE openid='{$username}'"); // 查找是否重复绑定macid $getmacidnum = strpos($getmacid['macid'], $macid . "/"); if (!$getmacidnum && $getmacidnum !== 0) { // 第一次绑定 // macid<=>macname 存入redis中 redisData::hSet($username, $macid, $macname); $macid = $getmacid['macid'] . $macid . "/"; $result = $connectHC->query("UPDATE `wxserver` SET `macid` = '{$macid}' WHERE openid='{$username}'"); if ($result == 1) { //更新数据库macid成功 echo "101"; } else { //更新数据库macid失败 echo "102"; } } else { // 重复绑定 echo "001"; }
<?php require_once dirname(__DIR__) . '/redisData.php'; use Workerman\Protocols\Http; $username = $_POST['username']; $macid = $_POST['macid']; $newmacname = $_POST['newmacname']; if (!isset($username)) { echo "对不起,你访问的网页不存在!:("; HTTP::end(); } redisData::hSet($username, $macid, $newmacname); $result = redisData::hGet($username, $macid); if ($result == $newmacname) { echo "ok"; } else { echo "抱歉!遇到未知错误"; }
$connection->close(); } // onWebSocketConnect 里面$_GET $_SERVER是可用的 // var_dump($_GET, $_SERVER); }; }; */ $webserver = new WebServer('http://0.0.0.0:80'); $webserver->addRoot('120.25.163.9', '/workerman/Applications/huicheng/Web'); $webserver->count = 1; $webserver->onWorkerStart = function ($webserver) { //初始化多客服工号对应的昵称 redisData::Set('HCS1@hc-information', '小汇'); redisData::Set('HCS2@hc-information', '小承'); redisData::Set('HCT1@hc-information', '小信'); redisData::Set('HCT2@hc-information', '小息'); //初始化定时间隔 $time_interval = 7000; //初始化access_token transToWxServer::getaccess_token(); transToWxServer::getjsapi_ticket(); //定时获取access_token \Workerman\Lib\Timer::add($time_interval, function () { transToWxServer::getaccess_token(); transToWxServer::getjsapi_ticket(); }); }; // 如果不是在根目录启动,则运行runAll方法 if (!defined('GLOBAL_START')) { Worker::runAll(); }
/** * 接收事件消息 * @var object * @return string */ private function receiveEvent($object) { $result = ""; $client_openid = $object->FromUserName; switch ($object->Event) { //关注事件 case "subscribe": $content = "感谢关注广州汇承信息科技微信服务号! [太阳]\n\n"; $content .= "点击菜单:'HC汇承'\n"; $content .= "得到最新产品咨询、HC产品列表汇总、HC汇承官网信息\n"; $content .= "--------------------------\n"; $content .= "点击菜单:'人工咨询'\n"; $content .= "在线技术支持、在线销售咨询\n"; $content .= "--------------------------\n"; $content .= "点击菜单:'HC智能❤'\n"; $content .= "暂时没有开放..\n\n"; $content .= "电话:020-4008881803"; $result = $this->transmitText($object, $content); break; //取消关注事件 //取消关注事件 case "unsubscribe": $content = "取消关注"; break; /*case "SCAN": $content = "扫描场景 ".$object->EventKey; break;*/ //点击事件 /*case "SCAN": $content = "扫描场景 ".$object->EventKey; break;*/ //点击事件 case "CLICK": switch ($object->EventKey) { //最新产品 case "NewProduct": $content = array(); $content[] = array("Title" => "HC-08蓝牙4.0BLE串口模块", "Description" => "HC-08支持和iPhone4s以上的苹果手机或安卓4.3蓝牙4.0的安卓手。。,两模块之前也可通讯", "PicUrl" => "https://mmbiz.qlogo.cn/mmbiz/JnIZvkFV6c0gu2PEYJkcP3ngibwfIufAIPcjwpx1W2brgWTfibVe2dhFqKcQEntc6wXVZm8P6LaQ6qic9UOFibyFaA/0?wx_fmt=jpeg", "Url" => "http://www.hchchchc.com/Tpl/product_arc.php?model=HC-08"); $result = $this->transmitNews($object, $content); break; // 在线销售 // 在线销售 case "OnlineSaler": $getcustom_mark = redisData::hGet($client_openid, 'custom'); // 重复click if ($getcustom_mark == "1") { echo ""; HTTP::end(); } else { // 得到空闲客服帐号 $kf_account = transToWxServer::findRelaxCustom("HCS"); if (!empty($kf_account)) { $result = $this->transmitService($object, $kf_account); redisData::hSet($client_openid, 'custom', "1"); } else { // 客服不在线 $content = "客服已离线,请稍候重试!"; $result = $this->transmitText($object, $content); } } break; // 在线技术客服 // 在线技术客服 case "THelp": $getcustom_mark = redisData::hGet($client_openid, 'custom'); // 重复click if ($getcustom_mark == "1") { echo ""; HTTP::end(); } else { // 得到空闲客服帐号 $kf_account = transToWxServer::findRelaxCustom("HCT"); if (!empty($kf_account)) { $result = $this->transmitService($object, $kf_account); redisData::hSet($client_openid, 'custom', "1"); } else { // 客服不在线 $content = "客服已离线,请稍候重试!"; $result = $this->transmitText($object, $content); } } break; //汇承官网 //汇承官网 case "IndexHC": break; //智能控制 //智能控制 case "IntelligentControl": // $getintell_mark = redisData::hGet($client_openid,'intell'); // if($getintell_mark == "0") // { // redisData::hSet($client_openid,'intell',"1"); // $content = "成功进入智能控制!\n\n"; // $content.="发送数字'0'可退出智能模式"; // $result = $this->transmitText($object, $content); // }else{ // $content = "智能控制中...!"; // $result = $this->transmitText($object, $content); // } break; //用户主动退出多客服会话 //用户主动退出多客服会话 case "Exit": $getcustom_mark = redisData::hGet($client_openid, 'custom'); if ($getcustom_mark == "1") { $content = "提示: 用户主动结束会话!"; $kf_account = transToWxServer::findUserSession($object); transToWxServer::closeSalerSession($object, $kf_account, $content); // Gateway::sendToAll($error); redisData::hSet($client_openid, 'custom', "0"); } else { echo ""; HTTP::end(); } break; } break; case "VIEW": $openid = $object->FromUserName; $_SESSION['username'] = $openid; break; //多客服主动关闭会话事件 //多客服主动关闭会话事件 case "kf_close_session": $content = "感谢您的咨询,我们下次再见!"; transToWxServer::transToWxClientMsg($object, $content); redisData::hSet($object->FromUserName, 'custom', "0"); // return $result; // $content = "关闭了会话"; // $result = $this->transmitText($object, $content); break; //多客服转接会话事件 //多客服转接会话事件 case "kf_switch_session": $service_id = $object->ToKfAccount; //得到客服的昵称 $service_name = redisData::Get($service_id); $content = "已转接到 客服: {$service_name}"; transToWxServer::transToWxClientMsg($object, $content); break; } return $result; }
public static function findUserSession($object) { $access_token = redisData::Get('access_token'); $openid = $object->FromUserName; $url = "https://api.weixin.qq.com/customservice/kfsession/getsession?access_token={$access_token}&openid={$openid}"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); $jsoninfo = json_decode($output, true); $kf_account = $jsoninfo["kf_account"]; return $kf_account; }