首页 > 代码库 > 微信语义理解接口的应用-股票查询

微信语义理解接口的应用-股票查询

微信语义理解接口称为智能接口,但微信只是开了一半接口,剩下一半要求用户自己去对接业务。这个语义理解类似中文分词技术,优于模糊匹配,拿查股票为例,你说“东风汽车”,“东风汽车股票”,“东风汽车价格”,“查一查东风汽车当前价”返回的内容是一样的,因此语义理解和微信语音识别的配合是最好的,由于口语化,识别率问题,智能接口就有一定用武之地。查询的参数包括query(语音识别结果),city(股票不影响),category(stock),appid,uid(可填用户openid或其他)。返回Josn格式,主要处理semantic字段,包含股票代码和上股还是深股,返回后再次调用百度api查询当前股价。

<?php
/**
  * wechat php test
  */

//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid();
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
	public function valid()
    {
        $echoStr = $_GET["echostr"];

        //valid signature , option
        if($this->checkSignature()){
        	echo $echoStr;
        	exit;
        }
    }

    public function responseMsg()
    {
		//get post data, May be due to the different environments
		$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

      	//extract post data
		
                
              	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
				
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);
		        $time = time();
				$type=$postObj->MsgType;              
		        $Recognition = $postObj->Recognition;
				$Recognition=urlencode($Recognition);
				
			    $time = time();
				
				include ("token.php");//token文件
$c=array("query"=>$Recognition,"city"=>"北京","category"=>"stock","appid"=>"wxee2a90c9b05af7a2","uid"=>"123456");
$post=json_encode($c);
$post=urldecode($post);
//语义理解
$url = "https://api.weixin.qq.com/semantic/semproxy/search?access_token={$token}";  
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);//url  
curl_setopt($ch, CURLOPT_POST, 1);  //post
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$a = curl_exec($ch);
$strjson=json_decode($a);
$code = $strjson->semantic->details->code;
$category = $strjson->semantic->details->category;
//股票查询
$url="http://apistore.baidu.com/microservice/stock?stockid=".$category.$code;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$a = curl_exec($ch);
$strjson=json_decode($a);
$name=$strjson->retData->stockinfo->name;
$price=$strjson->retData->stockinfo->currentPrice;
$reply= $name."当前股价".$price;
		
		$textTpl = "<xml>
							<ToUserName>$fromUsername</ToUserName>
							<FromUserName>$toUsername</FromUserName>
							<CreateTime>$time</CreateTime>
							<MsgType><![CDATA[text]]></MsgType>
							<Content><![CDATA[$reply]]></Content>
							<FuncFlag>0</FuncFlag>
							</xml>";    
		echo $textTpl;
				
	
		}
	private function checkSignature()
	{
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];	
        		
		$token = TOKEN;
		$tmpArr = array($token, $timestamp, $nonce);
		sort($tmpArr);
		$tmpStr = implode( $tmpArr );
		$tmpStr = sha1( $tmpStr );
		
		if( $tmpStr == $signature ){
			return true;
		}else{
			return false;
		}
	}
	
}
?>




微信语义理解接口的应用-股票查询