最近微信公衆平臺開發是熱門,我也跟風作了一個陪聊的公衆號。css
其實相似的自動回話程序早就有了,好比前一陣很火的小黃雞(仍是小黃鴨來着?)。但儘管是跟風,也要體現一些不一樣。別人作的都是中文陪聊,咱就來作個英語陪聊。html
無論是中文仍是英文,作起來都同樣,都是利用網絡上的接口。或者你也能夠試着本身開發一個陪聊程序。web
隨便在網上搜了一個英語聊天機器人的網址:http://www.pandorabots.com/pandora/talk?botid=f5d922d97e345aa1 我們就利用這個網址來作微信公衆平臺。只需簡單三步便輕鬆搞定。不過在此以前你最好先了解一點微信消息的通訊過程。服務器
第一步:處理用戶發來的消息微信
如圖,微信服務器將用戶發來的消息以這種形式發給你的服務器,首先你要對這段xml進行處理,提取出用戶發送的消息,也就是<Content></Content>中的內容,很簡單,用到的是System.Xml類。網絡
第二步:將消息POST到上述網址,獲取返回的消息app
獲得用戶發來的消息以後,將它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 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代碼來講很簡單,最後一行就是對話內容,將它提取出來便可。post
整個過程代碼以下:網站
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格式發回給微信服務器,用戶便可以收到。
到這裏,聊天機器人就作好了。我們來看看效果:
才疏學淺,不足之處請你們多多指正。個人第一篇博客,但願你們多多支持。
這個是公衆號,有興趣的朋友能夠去聊幾句哦。