PHPWechat开拓之依据顾客回复关键词,Wechat公众开
客户关注了Wechat民众号随后,能够回复客商的地理地方给群众号,提取地方音信的纬度和经度,转变为百度的纬度和经度。然后依据纬度和经度,调用百度地图的API,重返周边半径2KM以内的“酒馆”“酒馆”等新闻。调用百度的API时,需求拿到apiKEY,若无,请到百度开垦者中央去登记和申请。
效果图:
第大器晚成,用风流洒脱组纬度和经度来测量试验接口重临的数量:
";// 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公众开
关键词: