当前位置:小鱼儿玄机二站 > 编程应用 > PHPWechat开拓之依据顾客回复关键词,Wechat公众开

PHPWechat开拓之依据顾客回复关键词,Wechat公众开

文章作者:编程应用 上传时间:2019-11-26

客户关注了Wechat民众号随后,能够回复客商的地理地方给群众号,提取地方音信的纬度和经度,转变为百度的纬度和经度。然后依据纬度和经度,调用百度地图的API,重返周边半径2KM以内的“酒馆”“酒馆”等新闻。调用百度的API时,需求拿到apiKEY,若无,请到百度开垦者中央去登记和申请。

效果图:

第大器晚成,用风流洒脱组纬度和经度来测量试验接口重临的数量:

图片 1

";// print_r;// echo "

何况附加上代码:

"; //提取所需的新闻foreach($res['results'] as $k=>$v){ $arr[$k]['name'] = $v['name']; $arr[$k]['address'] = $v['address']; $arr[$k]['img_url'] = ''; $arr[$k]['detail_url'] = isset($v['detail_info']['detail_url'])?$v['detail_info']['detail_url']:'';} echo "

 代码如下

"; print_r; echo "

<?php
 //将提交过来的音讯选择
 
$signature = $_GET['signature'];
 
 $timestamp = $_GET['timestamp'];
 
 $nonce = $_GET['nonce'];
 
 $echostr = $_GET['echostr'];
 
 $token = "yanjiadong";
 
 //剖断接入网站
 
 //进行字典排序
 $arr = array($token,$timestamp,$nonce);
 
 sort($arr);
 
 //完成字符串的拼接和sha1加密
 
 $result = sha1(join($arr));
 
 //判别生成的字符串和$signature是不是等于,假如相等,直接出口$echostr,那样网址接入成功
 
 if($result==$signature){
 
 echo $echostr;
 
 }
 
 //接收微信大伙儿账号选取到的音信
 $poststr = $GLOBALS["HTTP_RAW_POST_DATA"];
 
 $xmlObj = simplexml_load_string($poststr,'SimpleXMLElement',LIBXML_NOCDATA);
 
 $ToUserName = $xmlObj->ToUserName;
 
 $FromUserName = $xmlObj->FromUserName;
 
 $CreateTime = $xmlObj->CreateTime;
 
 $MsgType = $xmlObj->MsgType;
 
 $Content = $xmlObj->Content;
 
 
 if($MsgType=='location'){
 
 $Location_X = $xmlObj->Location_X;
 
 $Location_Y = $xmlObj->Location_Y;
 
 $Scale = $xmlObj->Scale;
 
 $Label = $xmlObj->Label;
 
 $urlstr = "";  //此处ak参数必要个人的百度支付种类号,本人去百度申请下就好了
 
 $jsonstr = file_get_contents($urlstr);
 
 $json = json_decode($jsonstr,true);
 
 $pic_640 = ",";
 
 $pic_80 = ",";
 
 $p_640 = file_get_contents($pic_640);
 
 file_put_contents('./images/640_'.$FromUserName.".png",$p_640);
 
 $p_80 = file_get_contents($pic_80);
 
 file_put_contents('./images/80_'.$FromUserName.".png",$p_80);
 
 echo pic_send($json['results']);
 
 }
 function pic_send($arr){
 global $ToUserName,$FromUserName;
 $str = "<xml>
 <ToUserName><![CDATA[".$FromUserName."]]></ToUserName>
 <FromUserName><![CDATA[".$ToUserName."]]></FromUserName>
 <CreateTime>".time()."</CreateTime>
 <MsgType><![CDATA[news]]></MsgType>
 <ArticleCount>".count($arr)."</ArticleCount>
 <Articles>";
 foreach($arr as $k=>$v){
 if($k==0){
 $picurl = "";
 }else{
 $picurl = "";
 }
 $str .="
 <item>
 <Title><![CDATA[".$v['name']." 地址:".$v['address']." 电话:".$v['telephone']."]]></Title>
 <Description><![CDATA[".$v['name']." 地址:".$v['address']." 电话:".$v['telephone']."]]></Description>
 <PicUrl><![CDATA[".$picurl."]]></PicUrl>
 <Url><![CDATA[;
 </item>";
 }
 
 $str .= "</Articles></xml>";
 
 return $str;
 }
 
?>

";

即使你填写了不错的apikey,那么相应回到了上边的数码了。接下来:在Wechat的接口平台代码里,判断新闻类型,并获取纬度和经度,调用百度地图API,拼接XML再次来到就可以。由于百度API重临的多寡里,未有“饭店”的缩略图,所以自身就用了齐心协力网址的一张图。为了可以让客户自定义查找周边的“商旅”或“酒店”等新闻,可以先让顾客回复“找出XX”,然后提抽出XX,放到session里,等顾客再过来地理地方时抽取session。但我设置了session之后,未能收取session。所以本身这里用乐乎云的KVDB服务,当然你也足以用memcache或然Redis等缓存情势。

$which = mb_substr($keyword, 0, 2, 'UTF-8');

elseif{ $find = str_replace; //调用新浪云的KVDB服务 $kv = new SaeKV; $kv->set; $contentStr = "选择表情旁边的'+',发送位置,即可查找你要找的地方"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr); echo $resultStr; exit(); }

 elseif($postObj->MsgType == 'location'){ /** * 如果是收到了地理位置消息,则返回附近的饭店 */ //--------第一步:转换经纬度------- //参考链接:http://developer.baidu.com/map/index.php?title=webapi/guide/changeposition $Location_X = $postObj->Location_X; $Location_Y = $postObj->Location_Y; $url = "http://api.map.baidu.com/geoconv/v1/?coords=$Location_X,$Location_Y&from=3&to=5&ak=这里填写你的apikey"; $res = file_get_contents; $res = json_decode; //用户发送腾讯的soso地图位置信息经过转换之后,得到百度地图的经纬度 $x = $res['result'][0]['x']; $y = $res['result'][0]['y']; //---------第二步:根据经纬度和关键词获得附近的信息---------- $kv = new SaeKV(); // 初始化KVClient对象 $kv->init(); $url = "http://api.map.baidu.com/place/v2/search?ak=这里填写你的apikey&output=json&query=" . urlencode . "&page_size=10&page_num=0&scope=2&location=$x,$y&radius=2000"; $res = file_get_contents; $res = json_decode; //提取信息 foreach($res['results'] as $k=>$v){ $arr[$k]['name'] = $v['name']; $arr[$k]['address'] = $v['address']; $arr[$k]['img_url'] = 'http://misakaqnxt-public.stor.sinaapp.com/click.png'; $arr[$k]['detail_url'] = isset($v['detail_info']['detail_url'])?$v['detail_info']['detail_url']:''; } //--------第三步:拼接XML字符串-------- $head = "   %s  10 "; $items = ""; foreach{ $items .= "     "; } $foot = ""; $res = $head . $items . $foot; $resultStr = sprintf($res, $fromUsername, $toUsername, $time); echo $resultStr; exit();} 

假若您看不懂代码怎么用,能够参见作者事先的篇章:简单的文书回复 查询微信精选文章

客户关心了万众号之后,回复寻觅酒店,然后还原地理地点然后,就可以得周边的酒店音讯了。

如上便是本文的全体内容,希望对我们的读书抱有利于,也希望大家多多看护脚本之家。

本文由小鱼儿玄机二站发布于编程应用,转载请注明出处:PHPWechat开拓之依据顾客回复关键词,Wechat公众开

关键词: