【转载】使用图灵机器人接口开发微信公众号聊天功能、设置自定义菜单及申请测试账号

使用图灵机器人接口开发微信公众号聊天功能

  准备电商比赛的时候申请了个公众号,因为之前错误地申请了订阅号,还是个人类型的,所以基本也没法开发什么功能了。于是就想到之前很火的小黄鸡聊天机器人。不过小黄鸡的接口是要收费的,所以选用了图灵机器人(http://www.tuling123.com/);也能实现自动聊天。

  图灵机器人后台提供了两种接入方式,一种是API接入,一种是微信接入。使用微信接入非常简单,只要在微信后台-开发-基本配置里填写图灵机器人提供的URL和token值就可以。不过这样一来整个公众号只能实现图灵机器人的功能,几乎浪费了一个公众号。所以选择使用API接入。这里使用新浪云提供的SAE。下面是代码。



    <?php
        header("Content-type: text/html; charset=utf-8");
        //以下为固定用法,实现和微信的对接、验证
        define("TOKEN", "callTuling");

        $wechatObj = new wechatCallbackapiTest();
        if (isset($_GET['echostr'])) {
            $wechatObj-&gt;valid();
        }else{
            $wechatObj-&gt;responseMsg();
        }

        class wechatCallbackapiTest
        {
            public function valid()
            {
                $echoStr = $_GET["echostr"];
                if($this-&gt;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;
                }
            }

            public function responseMsg()
            {
                $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
                if (!empty($postStr)){
                    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                    $RX_TYPE = trim($postObj-&gt;MsgType);

                    switch ($RX_TYPE)
                    {
                        case "text":
                            $resultStr = $this-&gt;receiveText($postObj);
                            break;
                        case "event":
                            $resultStr = $this-&gt;receiveEvent($postObj);
                            break;
                    }
                    echo $resultStr;
                }else {
                    echo "";
                    exit;
                }
            }
            //处理接受到用户消息的事件
            private function receiveText($object)
            {
                $funcFlag = 0;
                $keyword = trim($object-&gt;Content);
                $contentStr = callTuling($keyword);
                $resultStr = $this-&gt;transmitText($object, $contentStr, $funcFlag);
                return $resultStr;
            }
            //处理公众号被关注的事件
            private function receiveEvent($object)
            {
                $contentStr = "";
                switch ($object-&gt;Event)
                {
                    case "subscribe":
                        $contentStr = "你终于来了";
                }
                $resultStr = $this-&gt;transmitText($object, $contentStr);
                return $resultStr;
            }
            //把图灵机器人返回的数据转换成微信使用的数据格式
            private function transmitText($object, $content, $flag = 0)
            {
                $textTpl = "&lt;xml&gt;
&lt;ToUserName&gt;&lt;![CDATA[%s]]&gt;&lt;/ToUserName&gt;
&lt;FromUserName&gt;&lt;![CDATA[%s]]&gt;&lt;/FromUserName&gt;
&lt;CreateTime&gt;%s&lt;/CreateTime&gt;
&lt;MsgType&gt;&lt;![CDATA[text]]&gt;&lt;/MsgType&gt;
&lt;Content&gt;&lt;![CDATA[%s]]&gt;&lt;/Content&gt;
&lt;FuncFlag&gt;%d&lt;/FuncFlag&gt;
&lt;/xml&gt;";
                $resultStr = sprintf($textTpl, $object-&gt;FromUserName, $object-&gt;ToUserName,     time(), $content, $flag);
                return $resultStr;
            }
        }
        //创建函数调用图灵机器人接口
        function callTuling($keyword)
        {
            $apiKey = "******"; //填写后台提供的key
            $apiURL = "http://www.tuling123.com/openapi/api?key=KEY&amp;info=INFO"; 

            $reqInfo = $keyword; 
            $url = str_replace("INFO", $reqInfo, str_replace("KEY", $apiKey, $apiURL));
            $ch = curl_init(); 
            curl_setopt ($ch, CURLOPT_URL, $url); 
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
            $file_contents = curl_exec($ch);
            curl_close($ch); 
            //获取图灵机器人返回的数据,并根据code值的不同获取到不用的数据
            $message = json_decode($file_contents,true);
            $result = "";
            if ($message['code'] == 100000){
                $result = $message['text'];
            }else if ($message['code'] == 200000){
                $text = $message['text'];
                $url = $message['url'];
                $result = $text . " " . $url;
            }else if ($message['code'] == 302000){
                $text = $message['text'];
                $url = $message['list'][0]['detailurl'];
                $result = $text . " " . $url;
            }else {
                $result = "好好说话我们还是基佬";
            }
            return $result;
        }
    ?>  



补充

(1)转载:
【使用图灵机器人接口开发微信公众号聊天功能】
【如何在微信公众号调用图灵机器人】
【微信公众号(订阅号)如何设置自定义菜单】
【怎样申请微信公众平台接口测试帐号】
【公众号自定义菜单添加外部链接,设置图文目录】
【微信公众平台开发文档】
【BAE官网】
【SAE官网】
【图灵机器人官网】
(2)图灵机器人官方教程:
   【微信公众号接入教程】【创建机器人篇 ——图灵机器人产品使用教程】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值