微信机器人 java 源码_三步轻松打造微信聊天机器人(附源码)
最近微信公眾平臺(tái)開發(fā)是熱門,我也跟風(fēng)做了一個(gè)陪聊的公眾號(hào)。
其實(shí)類似的自動(dòng)回話程序早就有了,比如前一陣很火的小黃雞(還是小黃鴨來(lái)著?)。但盡管是跟風(fēng),也要體現(xiàn)一些不同。別人做的都是中文陪聊,咱就來(lái)做個(gè)英語(yǔ)陪聊。
不管是中文還是英文,做起來(lái)都一樣,都是利用網(wǎng)絡(luò)上的接口。或者你也可以試著自己開發(fā)一個(gè)陪聊程序。
隨便在網(wǎng)上搜了一個(gè)英語(yǔ)聊天機(jī)器人的網(wǎng)址:http://www.pandorabots.com/pandora/talk?botid=f5d922d97e345aa1?? 咱們就利用這個(gè)網(wǎng)址來(lái)做微信公眾平臺(tái)。只需簡(jiǎn)單三步便輕松搞定。不過在此之前你最好先了解一點(diǎn)微信消息的通信過程。
第一步:處理用戶發(fā)來(lái)的消息
如圖,微信服務(wù)器將用戶發(fā)來(lái)的消息以這種形式發(fā)給你的服務(wù)器,首先你要對(duì)這段xml進(jìn)行處理,提取出用戶發(fā)送的消息,也就是中的內(nèi)容,很簡(jiǎn)單,用到的是System.Xml類。
第二步:將消息POST到上述網(wǎng)址,獲取返回的消息
得到用戶發(fā)來(lái)的消息之后,將它POST到上述網(wǎng)址之后,得到的是網(wǎng)站返回的html代碼,如下圖:
1
2
3
4 @import "http://alicebot.org/all.css";5 6
7
8
11
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,從中找出要回給用戶的內(nèi)容。對(duì)于這段html代碼來(lái)說很簡(jiǎn)單,最后一行就是對(duì)話內(nèi)容,將它提取出來(lái)即可。
整個(gè)過程代碼如下:
1 public static string Chat(strings)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";//請(qǐng)求登錄的URL
8 ??byte[] byteArray = Encoding.UTF8.GetBytes(padata); //轉(zhuǎn)化
9 HttpWebRequest webRequest2 = (HttpWebRequest)WebRequest.Create(url); //新建一個(gè)WebRequest對(duì)象用來(lái)請(qǐng)求或者響應(yīng)url
10 webRequest2.Referer = "http://sheepridge.pandorabots.com/pandora/talk?botid=b69b8d517e345aba&skin=custom_input";11 webRequest2.Method = "POST"; //請(qǐng)求方式是POST
12 webRequest2.ContentType = "application/x-www-form-urlencoded"; //請(qǐng)求的內(nèi)容格式為application/x-www-form-urlencoded
13 webRequest2.ContentLength =byteArray.Length;14
15 Stream newStream = webRequest2.GetRequestStream(); //返回用于將數(shù)據(jù)寫入 Internet 資源的 Stream。16
17 newStream.Write(byteArray, 0, byteArray.Length); //寫入?yún)?shù)
18 newStream.Close();19 HttpWebResponse response2 =(HttpWebResponse)webRequest2.GetResponse();20 StreamReader sr = newStreamReader(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 returnresult;29 }
第三步:將消息包裝后發(fā)送
?????與接收到的消息類似,你需要將消息包裝成上圖的xml格式發(fā)回給微信服務(wù)器,用戶便能夠收到。
到這里,聊天機(jī)器人就做好了。咱們來(lái)看看效果:
才疏學(xué)淺,不足之處請(qǐng)大家多多指正。我的第一篇博客,希望大家多多支持。
這個(gè)是公眾號(hào),有興趣的朋友可以去聊幾句哦。
總結(jié)
以上是生活随笔為你收集整理的微信机器人 java 源码_三步轻松打造微信聊天机器人(附源码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018天猫七夕节活动时间 购物的朋友多
- 下一篇: 达华智能是什么公司