1. 程式人生 > >三步輕松打造微信聊天機器人(附源碼)

三步輕松打造微信聊天機器人(附源碼)

exce 聊天 pos 平臺開發 weather ebo doctype amr 便在

最近微信公眾平臺開發是熱門,我也跟風做了一個陪聊的公眾號。

其實類似的自動回話程序早就有了,比如前一陣很火的小黃雞(還是小黃鴨來著?)。但盡管是跟風,也要體現一些不同。別人做的都是中文陪聊,咱就來做個英語陪聊。

不管是中文還是英文,做起來都一樣,都是利用網絡上的接口。或者你也可以試著自己開發一個陪聊程序。

隨便在網上搜了一個英語聊天機器人的網址:http://www.pandorabots.com/pandora/talk?botid=f5d922d97e345aa1 咱們就利用這個網址來做微信公眾平臺。只需簡單三步便輕松搞定。不過在此之前你最好先了解一點微信消息的通信過程。

第一步:處理用戶發來的消息

技術分享

如圖,微信服務器將用戶發來的消息以這種形式發給你的服務器,首先你要對這段xml進行處理,提取出用戶發送的消息,也就是<Content></Content>中的內容,很簡單,用到的是System.Xml類。

第二步:將消息POST到上述網址,獲取返回的消息

得到用戶發來的消息之後,將它POST到上述網址之後,得到的是網站返回的html代碼,如下圖:

技術分享 技術分享
 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 2 <HTML><HEAD>
 3 <style type="text/css">
 4 @import "http://alicebot.org/all.css"; 
 5 <!-- liberally borrowed style from http://glish.com/css/7.asp -->
 6 </style>
 7 <SCRIPT>
 8 <!--
 9 function sf(){document.f.input.focus();}
10 // -->
11 </SCRIPT>
12 </HEAD>
13 <BODY lang="en-US" bgColor="#AAAAAA" onload="sf()">
14 
15 
16 <b>
17 
18 A.L.I.C.E. and  judge
19 </b>
20 <br/><br/>
21 
22 <b>You said:</b> What‘s the weather today<br/>
23 <b>A.L.I.C.E.:</b> Cloudy.<br/>
24 
25 <br/>
26 <form name="f" action="" method="post">
27 <input type="hidden" name="botcust2" value="9b25a3b2de04bab2"> 
28 <P><font face="arial"><b>You say:</b></font> 
29 <!--
30 <input type="text" size="60" name="input" x-webkit-speech />
31 -->
32 <input type="text" size="60" name="input"/> 
33 <input type="submit" value="Say"/>
34 </P>
35 </form>
36  
37 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
38 <em>
39 <a href="http://alicebot.org/join.html" target="_new">
40 Listen to two bots talking to each other!
41 </a>
42 </em>
43 
44 <HR/>
45 <b>Conversation Log:</b>
46 <br/> 
47              <br>  judge:  What‘s the weather today <br>  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對象用來請求或者響應url
10               webRequest2.Referer = "http://sheepridge.pandorabots.com/pandora/talk?botid=b69b8d517e345aba&skin=custom_input";
11               webRequest2.Method = "POST";                                          //請求方式是POST
12               webRequest2.ContentType = "application/x-www-form-urlencoded";       //請求的內容格式為application/x-www-form-urlencoded
13               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格式發回給微信服務器,用戶便能夠收到。

到這裏,聊天機器人就做好了。咱們來看看效果:

技術分享

才疏學淺,不足之處請大家多多指正。我的第一篇博客,希望大家多多支持。

這個是公眾號,有興趣的朋友可以去聊幾句哦。

技術分享

三步輕松打造微信聊天機器人(附源碼)