微信开发--微信公众号(二)

微信公众号回复微信客户端发来的消息.

1. 回复微信客户端发来的文本消息

需要连接第三方的服务.这里选用的是 图灵机器人. 注册账号,并创建一个图灵机器人.然后可通过机器人设置查看自己的apikey.

发起请求的url : http://www.tuling123.com/openapi/api?key=你的apikey&info=接收的文本内容;

将网址复制在浏览器里会得到一下格式的内容(我写的文本内容是 '你好' ):

{"code":100000,"text":"好吧,你也好。"}

a. 发起url请求,得到json串

b. 解析得到的json串,取出里面的 "text"

c. 调用 微信开发--微信公众号(一) 回复文本的方法

d. 调用图灵机器人回复文本消息的方法

代码示例(wechart.php) :

// 图灵机器人回复消息--文本
    function tuLingRobot($obj){
        // 获取用户输入的内容
        $content = $obj->Content;
        $url = "http://www.tuling123.com/openapi/api?key=b8309f5ca82849f5a9c5466195b08a6e&info={$content}";
        $jsonStr = httpGet($url);
        $objdata = json_decode($jsonStr);
        $text = $objdata->text;
        sendTextMsg($obj, $text);
    }
// 调用
 // 普通消息
switch($xmlObj->MsgType){
     case "text":{
        tuLingRobot($xmlObj);
        break;
     }
}

2. 回复微信客户端发来的图片消息

回复时会根据图片的 mediaId 进行回复. 微信客户端发送的图片服务器回复的是一个有 mediaId 的json串.

// 图片
    function sendCommonImage($obj){
        $to = $obj->FromUserName;
        $from = $obj->ToUserName;
        $time = time();
        $mediaId = $obj->MediaId;

        $msg = <<<MSG
        <xml>
        <ToUserName><![CDATA[{$to}]]></ToUserName>
        <FromUserName><![CDATA[{$from}]]></FromUserName>
        <CreateTime>{$time}</CreateTime>
        <MsgType><![CDATA[image]]></MsgType>
        <Image>
          <MediaId><![CDATA[{$mediaId}]]></MediaId>
        </Image>
        </xml>
MSG;
        echo $msg;
    }
// 调用
// 普通消息
switch($xmlObj->MsgType){
   case "image":{
      sendCommonImage($xmlObj);
      break;
    }
 }

3. 微信客户端发来地理位置,回复当地的天气(实时)

这里仍然需要连接第三方服务器,我选用的是 心知天气 ,注册之后点击右上角的控制台--左侧产品管理 免费版--自动生成公钥和私钥--进入API文档--左侧 天气类--天气实时状况 , 这时你应该看到了 请求地址示例 和 返回数据示例.

划重点: 获取指定城市的天气实况。付费用户可获取全部数据,免费用户只返回天气现象文字、代码和气温3项数据。注:中国城市暂不支持云量和露点温度。

a. 获取发来地址的经纬度

b. 发起get请求,解析得到的json串

c. 调用 微信开发--微信公众号(一) 回复文本的方法

d. 调用图灵机器人回复文本消息的方法

// 回复位置天气状况
    function sendWeather($obj){
        // 获取经纬度
        // 维度
        $IX = $obj->Location_X;
        // 经度 
        $IY = $obj->Location_Y;

        $url = "https://api.seniverse.com/v3/weather/now.json?key=SOFLe1lnznLDeabGG&location={$IX}:{$IY}&language=zh-Hans&unit=c";

        $tq = httpGet($url);
        $objdata = json_decode($tq);
        $objw = "当前城市:".$objdata->results[0]->location->name." 天气:".$objdata->results[0]->now->text." 温度:".$objdata->results[0]->now->temperature."℃";
        sendTextMsg($obj, $objw);
    }
// 调用
 // 普通消息
switch($xmlObj->MsgType){
    case "location":{
       sendWeather($xmlObj);
       break;
    }
}

效果示例:

原文发布于微信公众号 - 生南星(gh_36d61425a5dc)

原文发表时间:2019-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券