专栏首页生南星微信开发--微信公众号(二)

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

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

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),作者:生南星

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • NodeJS

    一. 安装及概述 1. 概述: Node.js 不是一门新的语言,是一个JavaScript运行环境, 简单的说 Node.js 就是运行在服务端的 JavaS...

    生南星
  • Vue第二天

    使用场景: 当需要对普通的DOM元素进行底层的操作时可以考虑使用自定义指令实现. 自定义指令分两种:

    生南星
  • 前端那点事

    data:text/html,<h1>Hello, 1802!</h1>浏览器页面输出hello 1802;

    生南星
  • NAACL | 评价端到端生成式聊天系统,哈工大提出新型数据集 LSDSCC

    得益于深度学习的发展,端到端的生成式聊天系统在模型层面的研究工作在近两到三年中取得了长足的进步 [1-5]。与之相比,对于生成结果的合理评价方法的探索则极为滞后...

    机器之心
  • Spark2.x学习笔记:1、Spark2.2快速入门(本地模式)

    1、Spark2.2快速入门(本地模式) 1.1 Spark本地模式 学习Spark,先易后难,先从最简单的本地模式学起。 本地模式(local),常用于本地开...

    程裕强
  • Redis 通信协议

    几乎所有的主流编程语言都有Redis的客户端(http://redis.io/clients),不考虑Redis非常流行的原因,如果站在技术的角度看原因还有两个...

    三产
  • MCMC采样和M-H采样

    解决平稳分布π所对应的马尔可夫链状态转移矩阵P之前,我们先看一下马尔可夫链的细致平稳条件。其定义为:如果非周期马尔可夫链的状态转移矩阵P和概率分布π(x)对于所...

    小一
  • 微课|《Python编程基础与案例集锦(中学版)》第8章例题讲解(3)

    例8-22 使用递归算法计算组合数。 http://mpvideo.qpic.cn/0bf26qaaeaaaweacx533qfpfb5gdal2aaaqa....

    Python小屋屋主
  • 微课|生成器对象、生成器函数、生成器表达式

    http://mpvideo.qpic.cn/0bf2pyabiaaazmamoxu6n5pfa7wdcr7aafaa.f10002.mp4?dis_k=31f...

    Python小屋屋主
  • 微信8.0大更新来了!增加了一波新功能!!

    用户5021203

扫码关注云+社区

领取腾讯云代金券