博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三步轻松打造微信聊天机器人(附源码)
阅读量:7112 次
发布时间:2019-06-28

本文共 2784 字,大约阅读时间需要 9 分钟。

    最近微信公众平台开发是热门,我也跟风做了一个陪聊的公众号。

      其实类似的自动回话程序早就有了,比如前一阵很火的小黄鸡(还是小黄鸭来着?)。但尽管是跟风,也要体现一些不同。别人做的都是中文陪聊,咱就来做个英语陪聊。

      不管是中文还是英文,做起来都一样,都是利用网络上的接口。或者你也可以试着自己开发一个陪聊程序。

      随便在网上搜了一个英语聊天机器人的网址:http://www.pandorabots.com/pandora/talk?botid=f5d922d97e345aa1   咱们就利用这个网址来做微信公众平台。只需简单三步便轻松搞定。不过在此之前你最好先了解一点微信消息的通信过程。

第一步:处理用户发来的消息

 

      如图,微信服务器将用户发来的消息以这种形式发给你的服务器,首先你要对这段xml进行处理,提取出用户发送的消息,也就是<Content></Content>中的内容,很简单,用到的是System.Xml类。

第二步:将消息POST到上述网址,获取返回的消息

     得到用户发来的消息之后,将它POST到上述网址之后,得到的是网站返回的html代码,如下图:

1  2  3  7 12 13 14 15 16 17 18 A.L.I.C.E. and  judge19 20 
21 22 You said: What's the weather today
23 A.L.I.C.E.: Cloudy.
24 25
26
27
28

You say: 29

32 33 34

35
36 37         38 39 40 Listen to two bots talking to each other!41 42 43 44

45 Conversation Log:46
47
judge: What's the weather today
ALICE: Cloudy.

     你需要处理这段html,从中找出要回给用户的内容。对于这段html代码来说很简单,最后一行就是对话内容,将它提取出来即可。

整个过程代码如下:

1         public static string Chat(string s) 2         { 3             string result = string.Empty; 4             try 5             { 6               string padata = "botcust2=8eb5abf08e04e9fc&input=" + s; 7               string url = "http://sheepridge.pandorabots.com/pandora/talk?botid=b69b8d517e345aba&skin=custom_input";//请求登录的URL 8               byte[] byteArray = Encoding.UTF8.GetBytes(padata); // 转化 9               HttpWebRequest webRequest2 = (HttpWebRequest)WebRequest.Create(url);  //新建一个WebRequest对象用来请求或者响应url10               webRequest2.Referer = "http://sheepridge.pandorabots.com/pandora/talk?botid=b69b8d517e345aba&skin=custom_input";11               webRequest2.Method = "POST";                                          //请求方式是POST12               webRequest2.ContentType = "application/x-www-form-urlencoded";       //请求的内容格式为application/x-www-form-urlencoded13               webRequest2.ContentLength = byteArray.Length;14 15               Stream newStream = webRequest2.GetRequestStream();           //返回用于将数据写入 Internet 资源的 Stream。16             17               newStream.Write(byteArray, 0, byteArray.Length);    //写入参数18               newStream.Close();19               HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();20               StreamReader sr = new StreamReader(response2.GetResponseStream(), Encoding.Default);21               string text = sr.ReadToEnd();22               result = text.Substring(text.LastIndexOf(':') + 3);         23             }            24              catch(Exception ex)25            {26              WriteLog(ex.Message);27            }28              return result;29          }

第三步:将消息包装后发送

     与接收到的消息类似,你需要将消息包装成上图的xml格式发回给微信服务器,用户便能够收到。

     到这里,聊天机器人就做好了。咱们来看看效果:

     才疏学浅,不足之处请大家多多指正。我的第一篇博客,希望大家多多支持。

     这个是公众号,有兴趣的朋友可以去聊几句哦。

转载于:https://www.cnblogs.com/wohuodai/p/3464711.html

你可能感兴趣的文章
\n \r
查看>>
执行shell脚本的四种方式及其异同
查看>>
java.网络抓包工具使用
查看>>
All Things Hibernate 与 Everythings is an Object
查看>>
Centos7中使用iptables,docker容器中实例,外网端口无法访问
查看>>
springboot 系列教程四:springboot thymeleaf配置
查看>>
回调函数的小例子(叫醒服务场景)
查看>>
Android跨平台编译 —— libevent
查看>>
像素1
查看>>
js传统事件和DOM事件的区别
查看>>
iOS——Core Animation(核心动画)
查看>>
hashCode() 和equals() 区别和作用
查看>>
如何做个有能力|懂业务|擅工具的数据分析师?
查看>>
getaddrinfo.c的assertion failed问题解决方案
查看>>
如何查看ubuntu下显卡驱动是否已经成功安装
查看>>
机器学习日报 【干货】
查看>>
没有沟通不畅这一说
查看>>
引用与指针
查看>>
u-boot第二阶段简要讲解
查看>>
weblogic9.2 console 图形监控wldf控制台扩展
查看>>