微信公众平台开发入门:[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了

时间: 2024-10-20 04:32:27

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

微信公众平台教程,注册申请、认证、开发、推广营销,教你怎么用微信公众号

微信公众平台教程 微信公众平台上至少有580多万公众号,8亿的微信用户参与其中,如此聚宝盆如何挖掘呢?本微信公众平台教程,以ytkah自己的使用体会教你怎么用微信公众号,包括微信公众平台注册申请.认证.开发.推广营销.成功案例,公众平台消息导出,关注用户备份,图文消息排版美化,图片尺寸,微信菜单设置,使用技巧等 教程目录 微信公众平台分类 微信公众平台注册,微信公众平台申请 微信公众平台登录 微信公众平台认证 微信公众平台开发 微信公众平台推广,微信公众平台营销 微信公众平台分类 服务号 给企业

使用JAVA开发微信公众平台(一)——环境搭建与开发接入

一. 初始微信公众平台 微信公众平台,即我们平时所说的“公众号”,曾用名“官方平台”.“媒体平台”,但最终命名为“公众平台”.从微信的命名我可以发现,公众平台不只是官方.媒体使用的平台,而是对所有公众都开放的统一平台. 微信公众平台地址:https://mp.weixin.qq.com/ 微信公众平台公分4大板块:订阅号.服务号.小程序.企业号.按照微信2016年公开课规划,企业号后续将与企业微信合并,因此我们主要针对前三部分开始讲解: 简单的对比一下前三者的区别以及本次课程即后续课程的讲解重点

ASP.NET 微信公众平台模板消息推送功能完整开发

最近公众平台的用户提出了新需求,他们希望当收到新的邮件或者日程的时候,公众平台能主动推送一条提醒给用户.看了看平台提供的接口,似乎只有[模板消息]能尽量满足这一需求,但不得不说微信提供的实例太少,而且只有PHP的,不过摸索了一下还是成功的实现了. 首先是准备工作,需要申请开通[模板消息]功能,网上教程很多.然后申请通过之后,用户可以从现有的模板里选择15个使用,也可以自己添加模板使用.这里吐槽一下:申请添加新的模板时,微信出于保护用户的目的禁止了一些“看起来会很频繁”的消息类型,比如这图里的——

微信公众平台开发教程(四) 实例入门:机器人(附源码)

微信公众平台开发教程(四) 实例入门:机器人(附源码) 上一篇文章,写了基本框架,可能很多人会觉得晕头转向,这里提供一个简单的例子来予以说明,希望能帮你解开谜团. 一.功能介绍 通过微信公众平台实现在线客服机器人功能.主要的功能包括:简单对话.查询天气等服务. 这里只是提供比较简单的功能,重在通过此实例来说明公众平台的具体研发过程.只是一个简单DEMO,如果需要的话可以在此基础上进行扩展. 当然后续我们还会推出比较复杂的应用实例. 二.具体实现 1.提供访问接口 这里不再赘述,参照上一章,微信公

微信公众平台开发(89) 高级群发接口

在这篇微信公众平台高级接口开发教程中,我们将介绍如何开发高级群发接口功能. 本文分为以下四个部分: 准备群发内容 选择群发对象 执行群发 接收群发结果 一.准备群发内容 群发内容可以是文本.图片.语音.视频.图文.群发文本只需要文本内容,其他内容需要获得相应的media_id. 1. 文本内容 文本内容就是一段文字,比如:"微信公众平台开发最佳实践" 2. 图片.语音.视频 要求如下: ? 图片(image): 128K,支持JPG格式 ? 语音(voice):256K,播放长度不超过

《微信公众平台入门到精通》,青龙老贼,详情版本

<微信公众平台入门到精通>,青龙老贼,详情版本 <微信公众平台入门到精通>Vol.1   http://segmentfault.com/a/1190000000356021 第一章 微信公众账号注册.设置.登陆 一.微信公众平台注册二.公众账号设置三.公众账号登陆 <微信公众平台入门到精通>Vol.2  http://segmentfault.com/a/1190000000356027 第二章 微信公众平台后台介绍 一.微信公众平台后台欢迎页面二.微信公众平台实时消

小梅科普:微信公众平台深度开发JAVA版(第一季)

微信作为当前流行的通信社交软件有了上亿的用户量,几乎每一个只能手机都要安装微信.但是,市场上对于JAVA开发微信公众平台的资料却少之又少,多数的资料一般是其他语言的.因此,主讲老师经过潜心研究.认真准备,录制了这套针对JAVA开发语言的微信公众平台开发教程. 1.课程研发环境 开发语言:JAVA WEBServer:TOMAT DATABASE:MySQL 开发工具:myeclipse.MySQL-Front等 其他:在手机应用中的CSS3+div布局.DWR.mybatis.gson.quar

微名汇-微信公众平台功能开发(微信聊天机器人)

因为现在小黄鸡智能聊天机器人接口能免费试用7天,7天之后会收费这对于很多用户来说感觉不划算.所以我找了另一个接口:小i机器人,并且完全免费.本文介绍如何在微信公众平台中使用小i智能聊天api接口开发智能聊天机器人. 小i机器人是全球用户量最大的中文聊天机器人,最早在MSN上出现,后拓展到QQ.短信.网页等交互平台上,拥有超过1亿的用户.2012年2月,小i机器人整合了自然语音识别功能,并陆续发布了智能手机.智能电视以及电话上的语音交互版本. 小i机器人申请地址为http://cloud.xiao

微信公众平台消息接口开发 小黄鸡(小贱鸡)机器人 微信公众平台 公众号聊天机器人 ,消息,接口,小黄鸡,小贱鸡,机器人

第一部分 基于模拟请求的方式 一.模拟请求数据 先看一下小黄鸡的网页版界面 我们通过模拟http请求来实现,上面对话抓包如下: 发送消息的包 接收消息的包: 根据上面的包,模拟发起请求如下: 二.与微信对接 小黄鸡还可以使用API方式调用,但免费时间有限,代码和上面基本一样,就不多写了. 三.演示效果 第二部分 基于接口的方式 一.申请小黄鸡接口SimSimi,发音为〝shim-shimee〞,中文翻译:小黄鸡,由韩文simsim(??)演变而成. “??”原意为“无聊”.SimSimi 由IS