云计算开发者社区

用新浪微博连接

一步搞定

查看: 74170|回复: 91

[php征文]洛洛带你在SAE上零基础玩转微信公众平台消息接口   [复制链接]

Rank: 9Rank: 9Rank: 9

发表于 2012-11-26 20:33:32 |显示全部楼层
本帖最后由 CBD社区网 于 2012-11-26 22:10 编辑

前不久微信公众平台开放了自定义消息接口,这给广大微友们带来了一个新的机会,自定义消息接口说简单了就是在原有200条规则上的无限扩增,说复杂了他就是一个万能接口,没有做不到只有想不到。Ps:微信消息发送到微博上去~


要使用此接口开发,就需要有个域名和空间,SAE刚好有二级域名和空间使用,于是申请了个http://zero.sinaapp.com/


对于完全没有接触过SAE的同学,下面我来告诉大家如何去快速的使用SAE~

1.打开新浪云SAE网址

http://sae.sina.com.cn/


2.点击右上角的登录

3.使用新浪微博进行登录


4.返回我的首页


5.点右侧创建新应用



6.填写应用信息


7.完成应用创建后,我们就有了一个二级域名和一个空间。


接下来,我们下载官方的提供的demo,修改demo中的token值,然后传到SAE上,传完后,我们到公众平台填写接口配置信息,进行网址接入的验证。

WX官方demo如下,已经修改了那个符号错误。

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

//define your token
define("TOKEN", "wxapi");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

class wechatCallbackapiTest
{
    public function valid()
  {
    $echoStr = $_GET["echostr"];

    //valid signature , option
    if($this->checkSignature()){
      echo $echoStr;
      exit;
    }
  }
      
    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;
      }
    }
}

?>

通过验证后我们就可以开始进行消息接口的开发了,消息接口我们要做的就是获取粉丝的信息然后按照获取到的信息进行匹配,匹配出信息再发给粉丝。

通过三个例子从不会到会~对应了我三周每周的学习成果。


第一个最简单的例子,就是实现了,粉丝发送消息到公众平台返回粉丝的的消息。

微信请添加演示号码:weijiekou


代码如下:

<?php
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
    $fromUsername = $postObj->FromUserName;
    $toUsername = $postObj->ToUserName;
    $keyword = trim($postObj->Content);
    $time = time();
    $textTpl = "<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[%s]]></MsgType>
            <Content><![CDATA[%s]]></Content>
            <FuncFlag>0<FuncFlag>
            </xml>";
    if(!empty( $keyword )){
      $msgType = "text";
      $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$keyword);
      echo $resultStr;
    }else{
      echo "Input something...";
    }
}else {
    echo "";
    exit;
}
?>

第二个是实现了微友查天气预报,可发送地区名称、电话区号、邮政编码、城市拼音到公众平台就可返回天气预报。如:北京,返回对应的天气预报。(由于是演示,天气预报数据使用了weather.com.cn的数据方便大家测试,测试后请删除。)

微信请添加演示号码:tianqi114



代码如下:
<?php
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
    $fromUsername = $postObj->FromUserName;
    $toUsername = $postObj->ToUserName;
    $keyword = trim($postObj->Content);
    $time = time();
    $textTpl = "<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[%s]]></MsgType>
            <Content><![CDATA[%s]]></Content>
            <FuncFlag>0<FuncFlag>
            </xml>";
    if(!empty( $keyword )){
      $msgType = "text";
      $post_data = array();
      $post_data['city'] = $keyword;
      $post_data['submit'] = "submit";
      $url='http://search.weather.com.cn/wap/search.php';
      $o="";
      foreach ($post_data as $k=>$v){
        $o.= "$k=".urlencode($v)."&";
      }
      $post_data=substr($o,0,-1);
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_URL,$url);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
      $result = curl_exec($ch);
      curl_close($ch);
      $result=explode('/',$result);
      $result=explode('.',$result['5']);
      $citynum = $result['0'];
      $weatherurl = "http://m.weather.com.cn/data/".$citynum.".html";
      $weatherjson = file_get_contents($weatherurl);
      $weatherarray = json_decode($weatherjson,true);
      $weatherinfo = $weatherarray['weatherinfo'];
      $contentTpl = "#这里是%s#(%s)
%s%s
%s时发布的天气预报:

今天天气:%s
%s,%s

穿衣指数:%s

紫外线指数:%s
洗车指数:%s

明天天气:%s
%s,%s

后天天气:%s
%s,%s";
      $contentStr = sprintf($contentTpl,$weatherinfo['city'],$weatherinfo['city_en'],$weatherinfo['date_y'],$weatherinfo['week'],$weatherinfo['fchh'],$weatherinfo['temp1'],$weatherinfo['weather1'],$weatherinfo['wind1'],$weatherinfo['index_d'],$weatherinfo['index_uv'],$weatherinfo['index_xc'],$weatherinfo['temp2'],$weatherinfo['weather2'],$weatherinfo['wind2'],$weatherinfo['temp3'],$weatherinfo['weather3'],$weatherinfo['wind3']);
      $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
      echo $resultStr;
    }else{
      echo "Input something...";
    }
}else {
    echo "";
    exit;
}
?>
第三个就是实现了无限消息回复

请添加演示微信:xianhouyu



一个帖子写不下了。。。电梯转到 5楼http://cloudbbs.org/forum.php?mod=redirect&goto=findpost&ptid=8713&pid=45362&fromuid=11556

欢迎交流,大家可以随时跟帖提问~


附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

使用道具 举报

Rank: 7Rank: 7Rank: 7

发表于 2012-11-26 20:40:02 |显示全部楼层
好贴子,期待更新!
个人博客:水缘泡泡博客

使用道具 举报

Rank: 1

发表于 2012-11-26 21:07:51 |显示全部楼层
好帖子   新人等更新

使用道具 举报

Rank: 1

发表于 2012-11-26 21:14:46 |显示全部楼层
支持一下!

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-11-26 21:52:23 |显示全部楼层
本帖最后由 CBD社区网 于 2012-12-11 00:48 编辑

第三个例子需要用到一个机器人回复的接口,目前没找到合适的接口,如果大家谁有,可以互相分享一下~
代码比较简单,就是一个接口地址搞定了,什么都有了~
超多功能的例子地址
http://sae.sina.com.cn/?m=apps&a=pdetail&aid=3114

点评

Belin_love  http://cloudbbs.org/forum.php?mod=viewthread&tid=8745&extra=page%3D2  发表于 2012-11-27 23:45:36
yoyo  说好的 5楼呢?一个帖子写不下了。。。电梯转到 5楼http://cloudbbs.org/forum.php?mod=redirect&goto=findpost&ptid=8713&pid=45362&fromuid=11556  发表于 2012-11-27 15:03:01

使用道具 举报

Rank: 8Rank: 8

发表于 2012-11-26 23:01:06 |显示全部楼层
本帖最后由 Belin_love 于 2012-11-27 23:46 编辑

强势插入、、、、、此贴保证火。。
这样最有意思的就是实现人机对话了

但是人工智能远没有我们想象那么简单

不过,如果有第三方的API接口就非常方便了


明天我把 simsimi 非官方的API接口文件共享出来

大家一起来玩微信公众平台吧!!

simsimi 非官方接口

http://cloudbbs.org/forum.php?mod=viewthread&tid=8745&extra=page%3D2

点评

CplusHua  我这里有接口~~看这个帖子我正在想要做呢  发表于 2012-12-4 01:20:23
MeeSii  不错不错,我也自己写了一个接口,用在微信平台上了,演示微信号:mmchat  发表于 2012-11-29 16:47:34

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-11-27 00:10:11 |显示全部楼层
Belin_love 发表于 2012-11-26 23:01
强势插入、、、、、此贴保证火。。
这样最有意思的就是实现人机对话了

不知道公众平台下一步是如何去开放呢

点评

MeeSii  我也有一个,嘿嘿,微信号:mmchat  发表于 2012-11-29 16:49:28

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2012-11-27 00:40:55 |显示全部楼层
Belin_love 发表于 2012-11-26 23:01
强势插入、、、、、此贴保证火。。
这样最有意思的就是实现人机对话了

其实我之前做过一个QQ机器人,扯淡专用,利用了现有的很多聊天机器人。

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2012-11-27 00:41:52 |显示全部楼层
Belin_love 发表于 2012-11-26 23:01
强势插入、、、、、此贴保证火。。
这样最有意思的就是实现人机对话了

坐等,围观你的simsim API接口。

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-11-27 01:01:02 |显示全部楼层
蓝天白云oy 发表于 2012-11-27 00:41
坐等,围观你的simsim API接口。

这个接口现在用的不多,应该还能继续用,搜下就能找到,还没测试是否跟SAE上也能使用

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2012-11-27 09:01:39 |显示全部楼层
CBD社区网 发表于 2012-11-27 01:01
这个接口现在用的不多,应该还能继续用,搜下就能找到,还没测试是否跟SAE上也能使用 ...

好的,谢谢。

使用道具 举报

Rank: 1

发表于 2012-11-27 13:30:43 |显示全部楼层
PHP文件传空间么

使用道具 举报

Rank: 1

发表于 2012-11-27 15:14:06 |显示全部楼层
好帖子 求更新!

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-11-27 22:55:28 |显示全部楼层
后来-刘若英 发表于 2012-11-27 13:30
PHP文件传空间么

是的,也可以用SAE的在线编辑

使用道具 举报

Rank: 6Rank: 6

发表于 2012-11-27 23:20:20 |显示全部楼层
啊,我看那个微信接口的时候居然没想到可以用此方式发微博!不知道新浪到时会不会说这违反了开发者协议,然后设法阻挠

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-11-27 23:23:41 |显示全部楼层
第七星尘 发表于 2012-11-27 23:20
啊,我看那个微信接口的时候居然没想到可以用此方式发微博!不知道新浪到时会不会说这违反了开发者协议,然 ...

如果违反了规定就得立即修改了。。。改成发腾讯微博。。。如果都违反了。。。那只能自言自语了

使用道具 举报

Rank: 2

发表于 2012-11-29 00:07:56 |显示全部楼层
有趣~~

使用道具 举报

Rank: 1

发表于 2012-11-29 11:25:00 |显示全部楼层
粉丝发送消息到公众 ,平台返回粉丝的的消息在哪设置?

使用道具 举报

Rank: 1

发表于 2012-11-29 17:38:51 |显示全部楼层
学习下。。不过我还是没有弄好。。还是不自动回复。。

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2012-12-1 00:49:29 |显示全部楼层

也无聊的试了一下。
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|云计算开发者社区 ( 京ICP证000007-137 )

GMT+8, 2018-7-21 19:53 , Processed in 0.189508 second(s), Total 14, Slave 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部