


Tutorial zur Entwicklung der ?ffentlichen WeChat-Plattform (4) Erste Schritte mit Beispielen: Roboter
Feb 16, 2017 pm 04:20 PM1. Funktionseinführung
Realisieren Sie die Online-Kundenservice-Roboterfunktion über die ?ffentliche WeChat-Plattform. Zu den Hauptfunktionen geh?ren: einfache Konversation, Wetterabfrage und weitere Dienste.
Hier stellen wir nur relativ einfache Funktionen zur Verfügung und konzentrieren uns auf die Verwendung dieses Beispiels, um den spezifischen Entwicklungsprozess der ?ffentlichen Plattform zu veranschaulichen. Es handelt sich lediglich um eine einfache DEMO und kann auf dieser Basis bei Bedarf erweitert werden.
Selbstverst?ndlich werden wir in Zukunft komplexere Anwendungsbeispiele ver?ffentlichen.
2. Spezifische Implementierung
1. Bereitstellung einer Zugriffsschnittstelle
Ich werde hier nicht auf Details eingehen, das Tutorial zur Entwicklung ?ffentlicher WeChat-Konten (2). Grundlegender Framework-Aufbau
2. Signaturauthentifizierung und -verteilungsanforderung
Weitere Informationen finden Sie im vorherigen Kapitel, Tutorial zur Entwicklung ?ffentlicher WeChat-Konten (2) Grundlegender Framework-Aufbau
3. Verarbeiten Sie die Anfrage und antworten Sie
1) Folgen Sie
Wenn WeChat-Benutzer ?ffentlichen Konten folgen, k?nnen ihnen entsprechende Aufforderungen gegeben werden. Dabei kann es sich um eine Willkommensnachricht oder einen Hilfetipp handeln.
Code direkt eingeben:
????class?EventHandler?:?IHandler ????{????????///?<summary> ????????///?請(qǐng)求的xml????????///?</summary> ????????private?string?RequestXml?{?get;?set;?}????????///?<summary> ????????///?構(gòu)造函數(shù)????????///?</summary> ????????///?<param name="requestXml"></param> ????????public?EventHandler(string?requestXml) ????????{????????????this.RequestXml?=?requestXml; ????????}????????///?<summary> ????????///?處理請(qǐng)求????????///?</summary> ????????///?<returns></returns> ????????public?string?HandleRequest() ????????{????????????string?response?=?string.Empty; ????????????EventMessage?em?=?EventMessage.LoadFromXml(RequestXml);????????????if?(em.Event.Equals("subscribe",StringComparison.OrdinalIgnoreCase)) ????????????{????????????????//回復(fù)歡迎消息 ????????????????TextMessage?tm?=?new?TextMessage(); ????????????????tm.ToUserName?=?em.FromUserName; ????????????????tm.FromUserName?=?em.ToUserName; ????????????????tm.CreateTime?=?Common.GetNowTime(); ????????????????tm.Content?=?"歡迎您關(guān)注***,我是大哥大,有事就問(wèn)我,呵呵!\n\n"; ????????????????response?=?tm.GenerateContent(); ????????????}????????????return?response; ????????} ????}
2) Grü?e
Einfacher Austausch von Grü?en, wie z.B. Hallo und Hilfe Warten Sie, es ist dasselbe wie wenn wir WeChat zum Chatten verwenden, aber die Antwort wird von unserem Programm beantwortet. Spezifische Funktionen k?nnen je nach Bedarf hinzugefügt werden.
WeChat ist ursprünglich eine Plattform zur Kommunikation. Dieser Fall kann für Online-Serviceroboter verwendet werden, ?hnlich den Kundendienstrobotern von Taobao, bei uns handelt es sich jedoch um die WeChat-Version. Haha
Eigentlich ist es ganz einfach: Rufen Sie die Anfragenachricht ab und ordnen Sie die Antwort anhand der Schlüsselw?rter zu. Natürlich gibt es hier m?glicherweise noch viel zu tun, z. B. wie man intelligentes Matching unterstützt, wie man Fuzzy-Matching unterstützt usw.
Der Code lautet wie folgt:
????///?<summary> ????///?文本信息處理類????///?</summary> ????public?class?TextHandler?:?IHandler ????{????????///?<summary> ????????///?請(qǐng)求的XML????????///?</summary> ????????private?string?RequestXml?{?get;?set;?}????????///?<summary> ????????///?構(gòu)造函數(shù)????????///?</summary> ????????///?<param name="requestXml">請(qǐng)求的xml</param> ????????public?TextHandler(string?requestXml) ????????{????????????this.RequestXml?=?requestXml; ????????}????????///?<summary> ????????///?處理請(qǐng)求????????///?</summary> ????????///?<returns></returns> ????????public?string?HandleRequest() ????????{????????????string?response?=?string.Empty; ????????????TextMessage?tm?=?TextMessage.LoadFromXml(RequestXml);????????????string?content?=?tm.Content.Trim();????????????if?(string.IsNullOrEmpty(content)) ????????????{ ????????????????response?=?"您什么都沒(méi)輸入,沒(méi)法幫您啊,%>_<%。"; ????????????}????????????else ????????????{????????????????if?(content.StartsWith("tq",?StringComparison.OrdinalIgnoreCase)) ????????????????{????????????????????string?cityName?=?content.Substring(2).Trim(); ????????????????????response?=?WeatherHelper.GetWeather(cityName); ????????????????}????????????????else ????????????????{ ????????????????????response?=?HandleOther(content); ????????????????} ????????????} ????????????tm.Content?=?response;????????????//進(jìn)行發(fā)送者、接收者轉(zhuǎn)換 ????????????string?temp?=?tm.ToUserName; ????????????tm.ToUserName?=?tm.FromUserName; ????????????tm.FromUserName?=?temp; ????????????response?=?tm.GenerateContent();????????????return?response; ????????}????????///?<summary> ????????///?處理其他消息????????///?</summary> ????????///?<param name="tm"></param> ????????///?<returns></returns> ????????private?string?HandleOther(string?requestContent) ????????{????????????string?response?=?string.Empty;????????????if?(requestContent.Contains("你好")?||?requestContent.Contains("您好")) ????????????{ ????????????????response?=?"您也好~"; ????????????}????????????else?if?(requestContent.Contains("傻")) ????????????{ ????????????????response?=?"我不傻!哼~?"; ????????????}????????????else?if?(requestContent.Contains("逼")?||?requestContent.Contains("操")) ????????????{ ????????????????response?=?"哼,你說(shuō)臟話!?"; ????????????}????????????else?if?(requestContent.Contains("是誰(shuí)")) ????????????{ ????????????????response?=?"我是大哥大,有什么能幫您的嗎?~"; ????????????}????????????else?if?(requestContent.Contains("再見(jiàn)")) ????????????{ ????????????????response?=?"再見(jiàn)!"; ????????????}????????????else?if?(requestContent.Contains("bye")) ????????????{ ????????????????response?=?"Bye!"; ????????????}????????????else?if?(requestContent.Contains("謝謝")) ????????????{ ????????????????response?=?"不客氣!嘿嘿"; ????????????}????????????else?if?(requestContent?==?"h"?||?requestContent?==?"H"?||?requestContent.Contains("幫助")) ????????????{ ????????????????response?=?@"查詢天氣,輸入tq?城市名稱\拼音\首字母"; ????????????}????????????else ????????????{ ????????????????response?=?"您說(shuō)的,可惜,我沒(méi)明白啊,試試其他關(guān)鍵字吧。"; ????????????}????????????return?response; ????????} ????}
3) Wetter abfragen
Dies Für die Funktion ist eine Anfrage erforderlich. Fordern Sie für eine Echtzeitabfrage die offizielle Wetterfreigabe-Website an, analysieren Sie dann den Rückgabewert, organisieren Sie die Wetterinformationen gem?? dem von uns ben?tigten Format und senden Sie sie schlie?lich an WeChat-Kunden.
Verwendung von Textnachrichtenverarbeitung.
Benutzeranfrage, geben Sie einfach Folgendes ein: tq Stadtname/Pinyin/Anfangsbuchstabe, um die Nachricht zu erhalten.
Antwortnachricht: (Nehmen Sie Peking als Beispiel)
北京 2013年11月6日?星期三 今天:(17℃~4℃)晴北風(fēng)4-5級(jí)轉(zhuǎn)3-4級(jí)4-5級(jí)轉(zhuǎn)3-4級(jí) 24小時(shí)穿衣指數(shù):天氣冷,建議著棉服、羽絨服、皮夾克加羊毛衫等冬季服裝。年老體弱者宜著厚棉衣、冬大衣或厚羽絨服。 明天:(14℃~3℃)晴轉(zhuǎn)多云微風(fēng)小于3級(jí) 48小時(shí)穿衣指數(shù):天氣冷,建議著棉服、羽絨服、皮夾克加羊毛衫等冬季服裝。年老體弱者宜著厚棉衣、冬大衣或厚羽絨服。
Werfen wir einen Blick auf den Quellcode:
????class?WeatherHelper ????{????????///?<summary> ????????///?城市集合字段????????///?</summary> ????????private?static?Dictionary<string, City>?mCities;????????///?<summary> ????????///?城市集合????????///?</summary> ????????public?static?Dictionary<string, City>?Cities ????????{????????????get ????????????{????????????????if?(mCities?==?null) ????????????????{ ????????????????????LoadCities(); ????????????????}????????????????return?mCities; ????????????} ????????}????????///?<summary> ????????///?加載城市????????///?</summary> ????????private?static?void?LoadCities() ????????{ ????????????mCities?=?new?Dictionary<string, City>(); ????????????mCities.Clear(); ????????????mCities.Add("101010100",?new?City()?{?Code?=?"101010100",?Name?=?"北京",?PinYin?=?"beijing",?FristLetter?=?"bj"?}); ????????????mCities.Add("101020100",?new?City()?{?Code?=?"101020100",?Name?=?"上海",?PinYin?=?"shanghai",?FristLetter?=?"sh"?}); ????????????mCities.Add("101200101",?new?City()?{?Code?=?"101200101",?Name?=?"武漢",?PinYin?=?"wuhai",?FristLetter?=?"wh"?}); ???????????? ????????}????????///?<summary> ????????///?獲取城市的天氣????????///?</summary> ????????///?<param name="name">城市名稱、拼音或首字母</param> ????????///?<returns></returns> ????????public?static?string?GetWeather(string?name) ????????{????????????string?result?=?string.Empty;????????????string?cityCode?=?string.Empty;????????????//獲取城市編碼 ????????????IEnumerable<string>?codes?=?from?item?in?Cities????????????????????????????????????????where?item.Value?!=?null ??????????????????????????????????????????????&&?(item.Value.Name.Equals(name,?StringComparison.OrdinalIgnoreCase)? ????????????????????????????????????????????????????||?item.Value.PinYin.Equals(name,?StringComparison.OrdinalIgnoreCase)? ????????????????????????????????????????????????????||?item.Value.FristLetter.Equals(name,?StringComparison.OrdinalIgnoreCase))????????????????????????????????????????select?item.Value.Code;????????????if?(codes?!=?null?&&?codes.Count()?>?0) ????????????{ ????????????????cityCode?=?codes.First<string>(); ????????????}????????????//http請(qǐng)求,獲取天氣 ????????????if?(!string.IsNullOrEmpty(cityCode)) ????????????{????????????????string?url?=?"http://m.miracleart.cn/{0}.html"; ????????????????url?=?string.Format(url,?cityCode); ????????????????WebRequest?request?=?HttpWebRequest.Create(url);????????????????//超時(shí)時(shí)間為:2秒 ????????????????request.Timeout?=?2000; ????????????????request.Credentials?=?CredentialCache.DefaultCredentials; ????????????????WebResponse?response?=?request.GetResponse(); ????????????????StreamReader?reader?=?new?StreamReader(response.GetResponseStream(),?Encoding.UTF8);????????????????string?weahterInfo?=?reader.ReadToEnd();????????????????if?(string.IsNullOrEmpty(weahterInfo)) ????????????????{ ????????????????????result?=?"暫時(shí)沒(méi)有取到天氣數(shù)據(jù),請(qǐng)稍后再試"; ????????????????}????????????????else ????????????????{ ????????????????????XmlDocument?doc?=?JsonConvert.DeserializeXmlNode(weahterInfo);????????????????????if?(doc?!=?null) ????????????????????{ ????????????????????????XmlNode?node?=?doc.DocumentElement;????????????????????????if?(node?!=?null) ????????????????????????{ ????????????????????????????StringBuilder?builder?=?new?StringBuilder(); ????????????????????????????builder.Append(node["city"].InnerText).Append("\n"); ????????????????????????????builder.Append(node["date_y"].InnerText).Append("?").Append(node["week"].InnerText).Append("\n"); ????????????????????????????builder.Append("今天:").Append("(").Append(node["temp1"].InnerText).Append(")").Append(node["weather1"].InnerText).Append(node["wind1"].InnerText).Append(node["fl1"].InnerText).Append("\n"); ????????????????????????????builder.Append("24小時(shí)穿衣指數(shù):").Append(node["index_d"].InnerText).Append("\n"); ????????????????????????????builder.Append("明天:").Append("(").Append(node["temp2"].InnerText).Append(")").Append(node["weather2"].InnerText).Append(node["wind2"].InnerText).Append(node["fl2"].InnerText).Append("\n"); ????????????????????????????builder.Append("48小時(shí)穿衣指數(shù):").Append(node["index48_d"].InnerText).Append("\n"); ????????????????????????????result?=?builder.ToString(); ????????????????????????} ????????????????????}????????????????????#region?天氣json數(shù)據(jù)格式????????????????????/* ????????????????? ????????????????{ ???"weatherinfo":?{ ???????"city":?"北京",? ???????"city_en":?"beijing",? ???????"date_y":?"2013年11月4日",? ???????"date":?"",? ???????"week":?"星期一",? ???????"fchh":?"11",? ???????"cityid":?"101010100",? ???????"temp1":?"17℃~5℃",? ???????"temp2":?"16℃~5℃",? ???????"temp3":?"18℃~4℃",? ???????"temp4":?"17℃~5℃",? ???????"temp5":?"14℃~6℃",? ???????"temp6":?"14℃~2℃",? ???????"tempF1":?"62.6℉~41℉",? ???????"tempF2":?"60.8℉~41℉",? ???????"tempF3":?"64.4℉~39.2℉",? ???????"tempF4":?"62.6℉~41℉",? ???????"tempF5":?"57.2℉~42.8℉",? ???????"tempF6":?"57.2℉~35.6℉",? ???????"weather1":?"晴轉(zhuǎn)多云",? ???????"weather2":?"多云",? ???????"weather3":?"多云轉(zhuǎn)晴",? ???????"weather4":?"晴轉(zhuǎn)多云",? ???????"weather5":?"多云轉(zhuǎn)陰",? ???????"weather6":?"陰轉(zhuǎn)晴",? ???????"img1":?"0",? ???????"img2":?"1",? ???????"img3":?"1",? ???????"img4":?"99",? ???????"img5":?"1",? ???????"img6":?"0",? ???????"img7":?"0",? ???????"img8":?"1",? ???????"img9":?"1",? ???????"img10":?"2",? ???????"img11":?"2",? ???????"img12":?"0",? ???????"img_single":?"0",? ???????"img_title1":?"晴",? ???????"img_title2":?"多云",? ???????"img_title3":?"多云",? ???????"img_title4":?"多云",? ???????"img_title5":?"多云",? ???????"img_title6":?"晴",? ???????"img_title7":?"晴",? ???????"img_title8":?"多云",? ???????"img_title9":?"多云",? ???????"img_title10":?"陰",? ???????"img_title11":?"陰",? ???????"img_title12":?"晴",? ???????"img_title_single":?"晴",? ???????"wind1":?"微風(fēng)",? ???????"wind2":?"微風(fēng)",? ???????"wind3":?"微風(fēng)",? ???????"wind4":?"微風(fēng)",? ???????"wind5":?"微風(fēng)",? ???????"wind6":?"北風(fēng)4-5級(jí)",? ???????"fx1":?"微風(fēng)",? ???????"fx2":?"微風(fēng)",? ???????"fl1":?"小于3級(jí)",? ???????"fl2":?"小于3級(jí)",? ???????"fl3":?"小于3級(jí)",? ???????"fl4":?"小于3級(jí)",? ???????"fl5":?"小于3級(jí)",? ???????"fl6":?"4-5級(jí)",? ???????"index":?"較冷",? ???????"index_d":?"建議著大衣、呢外套加毛衣、衛(wèi)衣等服裝。體弱者宜著厚外套、厚毛衣。因晝夜溫差較大,注意增減衣服。",? ???????"index48":?"冷",? ???????"index48_d":?"天氣冷,建議著棉服、羽絨服、皮夾克加羊毛衫等冬季服裝。年老體弱者宜著厚棉衣、冬大衣或厚羽絨服。",? ???????"index_uv":?"中等",? ???????"index48_uv":?"弱",? ???????"index_xc":?"適宜",? ???????"index_tr":?"適宜",? ???????"index_co":?"舒適",? ???????"st1":?"17",? ???????"st2":?"5",? ???????"st3":?"17",? ???????"st4":?"5",? ???????"st5":?"18",? ???????"st6":?"6",? ???????"index_cl":?"適宜",? ???????"index_ls":?"適宜",? ???????"index_ag":?"極不易發(fā)" ???} }????????????????*/ ????????????????????#endregion ????????????????} ????????????}????????????else ????????????{ ????????????????result?=?"沒(méi)有獲取到該城市的天氣,請(qǐng)確定輸入了正確的城市名稱,如\'北京\'或者\(yùn)'beijing\'或者\(yùn)'bj\'"; ????????????}????????????//返回 ????????????return?result; ????????}????????///?<summary> ????????///?內(nèi)部類:城市????????///?</summary> ????????internal?class?City ????????{????????????///?<summary> ????????????///?編碼????????????///?</summary> ????????????public?string?Code?{?get;?set;?}????????????///?<summary> ????????????///?名稱????????????///?</summary> ????????????public?string?Name?{?get;?set;?}????????????///?<summary> ????????????///?拼音????????????///?</summary> ????????????public?string?PinYin?{?get;?set;?}????????????///?<summary> ????????????///?拼音首字母????????????///?</summary> ????????????public?string?FristLetter?{?get;?set;?} ????????} ????}
Weitere Tutorials zur Entwicklung ?ffentlicher WeChat-Plattformen (4) Erste Schritte mit Beispielen: Für Artikel zum Thema Roboter achten Sie bitte auf die chinesische PHP-Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)