微信公众平台开发入门:[8]聊天机器人可开发

简介:

在这篇教程中,我们将介绍如何在微信公众平台上开发:【小黄鸡聊天机器人】的功能。微信公众号,客户多了,来不及每个都体贴的照顾;是不是很想有个机器人自动陪聊来顶一下?这里就说说微信聊天机器人的开发。

 

第一部分 基于模拟请求的方式

 
  1. 1

    模拟请求数据(先看一下小黄鸡的网页版界面)

     

  2. 2

    我们通过模拟http请求来实现,上面对话抓包如下:

    (下图分别是:发送消息的包,接收消息的包)

     

     

     

  3. 3

    根据上面的包,模拟发起请求如下

     

  4. 4

    接下来,我们做下与微信的对接,代码如下

     

  5. 5

    看下演示效果

    END

第二部分 基于接口的方式

  1. 1

    申请小黄鸡接口SimSimi,发音为〝shim-shimee〞,中文翻译:小黄鸡,由韩文simsim(심심)演变而成。 “심심”原意为“无聊”。SimSimi 由ISMaker于2002年建立流行的人工智能对话系统。

    接口申请流程:

    1. 注册账号2. 激活账号3. 申请7天试用接口(或者付费购买接口,价格30美元10 万次)4. 获得Key


  2. 2

    接口分析(如下图)

  3. 3

    程序实现

    构造Url参数

       $params['key'] = "d4899e2a-7ea8-40ab-a0d2-f258ddd7de15";    $params['lc'] = "ch";    $params['ft'] = "1.0";    $params['text'] = $keyword;        $url = "http://sandbox.api.simsimi.com/request.p?".http_build_query($params); 

    CURL获取内容

       $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    $output = curl_exec($ch);    curl_close($ch);

    获取回复内容

       $message = json_decode($output,true);    $result = "";    if ($message['result'] == 100){        $result = $message['response'];    }else{        $result = $message['result'].$message['msg'];    }

    小黄鸡完整代码simsimi.php

    function callSimsimi($keyword) {    $params['key'] = "d4899e2a-7ea8-40ab-a0d2-f258ddd7de15";    $params['lc'] = "ch";    $params['ft'] = "1.0";    $params['text'] = $keyword;        $url = "http://sandbox.api.simsimi.com/request.p?".http_build_query($params);    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    $output = curl_exec($ch);    curl_close($ch);    $message = json_decode($output,true);    $result = "";    if ($message['result'] == 100){        $result = $message['response'];    }else{        $result = $message['result']."-".$message['msg'];    }    return $result;  

  4. 4

    接入微信公众平台

    将官方文件的$contentStr = “Welcome to wechat world!”; 修改为接口调用$contentStr = callSimsimi($keyword);

    整段代码如下:

    define("TOKEN", "pondbay");

     

    $wechatObj = new wechatCallbackapiTest();

    if (isset($_GET['echostr'])) {

        $wechatObj->valid();

    }else{

        $wechatObj->responseMsg();

    }

    class wechatCallbackapiTest

    {

        public function valid()

        {

            $echoStr = $_GET["echostr"];

            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;

            }

        }

        public function responseMsg()

        {

            $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

            if (!empty($postStr)){

                $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

                $RX_TYPE = trim($postObj->MsgType);

                switch ($RX_TYPE)

                {

                    case "text":

                        $resultStr = $this->receiveText($postObj);

                        break;

                    case "event":

                        $resultStr = $this->receiveEvent($postObj);

                        break;

                }

                echo $resultStr;

            }else {

                echo "";

                exit;

            }

        }

        private function receiveText($object)

        {

            $funcFlag = 0;

            $keyword = trim($object->Content);

            include('simsimi.php');

            $contentStr = callSimsimi($keyword);

            $resultStr = $this->transmitText($object, $contentStr, $funcFlag);

            return $resultStr;

        }

        private function receiveEvent($object)

        {

            $contentStr = "";

            switch ($object->Event)

            {

                case "subscribe":

                    $contentStr = "欢迎关注方倍工作室\n小黄鸡为您服务!";

            }

            $resultStr = $this->transmitText($object, $contentStr);

            return $resultStr;

        }

        private function transmitText($object, $content, $flag = 0)

        {

            $textTpl = "<xml>

    <ToUserName><![CDATA[%s]]></ToUserName>

    <FromUserName><![CDATA[%s]]></FromUserName>

    <CreateTime>%s</CreateTime>

    <MsgType><![CDATA[text]]></MsgType>

    <Content><![CDATA[%s]]></Content>

    <FuncFlag>%d</FuncFlag>

    </xml>";

            $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);

            return $resultStr;

        }

  5. 5

    至此,这种方式开发聊天机器人,也OK了

本文转自博客园知识天地的博客,原文链接:微信公众平台开发入门:[8]聊天机器人可开发,如需转载请自行联系原博主。

相关文章
|
7天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
7天前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。
|
7天前
|
JavaScript 前端开发 小程序
微信小程序全栈开发之性能优化策略
【4月更文挑战第12天】本文探讨了微信小程序全栈开发的性能优化策略,包括前端的资源和渲染优化,如图片压缩、虚拟DOM、代码分割;后端的数据库和API优化,如索引创建、缓存使用、RESTful API设计;以及服务器的负载均衡和CDN加速。通过这些方法,开发者可提升小程序性能,优化用户体验,增强商业价值。
|
7天前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中PWA技术的应用,PWA结合Web的开放性和原生应用的性能,提供离线访问、后台运行、桌面图标和原生体验。开发者可利用Service Worker实现离线访问,Worker处理后台运行,Web App Manifest添加桌面图标,CSS和JavaScript提升原生体验。实践中需注意兼容性、性能优化和用户体验。PWA技术能提升小程序的性能和用户体验,助力开发者打造优质小程序。
|
7天前
|
SQL 安全 小程序
探索微信小程序全栈开发的安全性问题
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的安全性问题,包括数据安全、接口安全、隐私保护和代码安全。为解决这些问题,建议采取数据加密、使用HTTPS协议、身份认证与授权、输入验证、安全审计及漏洞扫描以及安全培训等措施。通过这些方法,开发者可提升小程序安全性,保护用户隐私和数据。
|
29天前
|
小程序 JavaScript
在使用微信小程序开发中用vant2框架中的Uploader 文件上传wx.uploadFile无反应和使用多图上传
网上有的说是bind:after-read="afterRead"的命名问题不支持-,但是我这儿执行了console.log("file",file);证明函数运行了。后来发现是multiple="true"原因开启了多图上传,如果是多图上传的话file就是数组了
25 2
|
1月前
|
移动开发 JavaScript
微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片
微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片
31 0
|
1月前
|
移动开发 小程序 API
微信小程序的一些开发限制
微信小程序的一些开发限制
72 1
|
1月前
|
小程序 JavaScript 容器
微信小程序入门学习02-TDesign中的自定义组件
微信小程序入门学习02-TDesign中的自定义组件
|
1月前
|
JSON 小程序 前端开发
微信小程序开发入门学习01-TDesign模板解读
微信小程序开发入门学习01-TDesign模板解读

热门文章

最新文章