国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
一、功能介紹
二、具體實現(xiàn)
1、提供訪問接口
2、簽名認(rèn)證和分發(fā)請求
3、處理請求,并響應(yīng)
1)關(guān)注
?2)問候
3)查詢天氣
首頁 微信小程序 微信開發(fā) 微信公眾平臺開發(fā)教程(四) 實例入門:機器人

微信公眾平臺開發(fā)教程(四) 實例入門:機器人

Feb 16, 2017 pm 04:20 PM
微信公眾平臺

一、功能介紹

通過微信公眾平臺實現(xiàn)在線客服機器人功能。主要的功能包括:簡單對話、查詢天氣等服務(wù)。

這里只是提供比較簡單的功能,重在通過此實例來說明公眾平臺的具體研發(fā)過程。只是一個簡單DEMO,如果需要的話可以在此基礎(chǔ)上進行擴展。

當(dāng)然后續(xù)我們還會推出比較復(fù)雜的應(yīng)用實例。?

二、具體實現(xiàn)

1、提供訪問接口

這里不再贅述,參照上一章,微信公眾賬號開發(fā)教程(二) 基礎(chǔ)框架搭建

2、簽名認(rèn)證和分發(fā)請求

這里不再贅述,參照上一章,微信公眾賬號開發(fā)教程(二) 基礎(chǔ)框架搭建

3、處理請求,并響應(yīng)

1)關(guān)注

當(dāng)微信用戶關(guān)注公眾賬號時,可以給其適當(dāng)?shù)奶崾尽?梢允菤g迎詞,可以是幫助提示。

直接上代碼:

????class?EventHandler?:?IHandler
????{????????///?<summary>
????????///?請求的xml????????///?</summary>
????????private?string?RequestXml?{?get;?set;?}????????///?<summary>
????????///?構(gòu)造函數(shù)????????///?</summary>
????????///?<param name="requestXml"></param>
????????public?EventHandler(string?requestXml)
????????{????????????this.RequestXml?=?requestXml;
????????}????????///?<summary>
????????///?處理請求????????///?</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)注***,我是大哥大,有事就問我,呵呵!\n\n";
????????????????response?=?tm.GenerateContent();
????????????}????????????return?response;
????????}
????}

?2)問候

簡單的交流問候,比如你好、幫助等等,跟我們使用微信聊天一樣,不過回應(yīng)是由我們的程序響應(yīng)。具體功能,可以根據(jù)自己的需要進行添加。
微信本來就是溝通的平臺。這個案例,可以用于在線服務(wù)機器人,類似于淘寶的客服機器人,可是我們這個是微信版的。呵呵
其實,很簡單,獲取請求消息,根據(jù)關(guān)鍵字來匹配回應(yīng)。當(dāng)然這里可能要做的工作很多,如何支持智能匹配,如何支持模糊匹配等。

代碼如下:

????///?<summary>
????///?文本信息處理類????///?</summary>
????public?class?TextHandler?:?IHandler
????{????????///?<summary>
????????///?請求的XML????????///?</summary>
????????private?string?RequestXml?{?get;?set;?}????????///?<summary>
????????///?構(gòu)造函數(shù)????????///?</summary>
????????///?<param name="requestXml">請求的xml</param>
????????public?TextHandler(string?requestXml)
????????{????????????this.RequestXml?=?requestXml;
????????}????????///?<summary>
????????///?處理請求????????///?</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?=?"您什么都沒輸入,沒法幫您啊,%>_<%。";
????????????}????????????else
????????????{????????????????if?(content.StartsWith("tq",?StringComparison.OrdinalIgnoreCase))
????????????????{????????????????????string?cityName?=?content.Substring(2).Trim();
????????????????????response?=?WeatherHelper.GetWeather(cityName);
????????????????}????????????????else
????????????????{
????????????????????response?=?HandleOther(content);
????????????????}
????????????}
????????????tm.Content?=?response;????????????//進行發(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?=?"哼,你說臟話!?";
????????????}????????????else?if?(requestContent.Contains("是誰"))
????????????{
????????????????response?=?"我是大哥大,有什么能幫您的嗎?~";
????????????}????????????else?if?(requestContent.Contains("再見"))
????????????{
????????????????response?=?"再見!";
????????????}????????????else?if?(requestContent.Contains("bye"))
????????????{
????????????????response?=?"Bye!";
????????????}????????????else?if?(requestContent.Contains("謝謝"))
????????????{
????????????????response?=?"不客氣!嘿嘿";
????????????}????????????else?if?(requestContent?==?"h"?||?requestContent?==?"H"?||?requestContent.Contains("幫助"))
????????????{
????????????????response?=?@"查詢天氣,輸入tq?城市名稱\拼音\首字母";
????????????}????????????else
????????????{
????????????????response?=?"您說的,可惜,我沒明白啊,試試其他關(guān)鍵字吧。";
????????????}????????????return?response;
????????}
????}

?

3)查詢天氣

這個功能需要請求實時查詢的,請求官方的天氣發(fā)布網(wǎng)站,然后解析其返回值,按照我們需要的格式,組織天氣信息,最后發(fā)送給微信客戶。
采用文本消息方式處理。
用戶請求,只需輸入:tq 城市名稱/拼音/首字母,即可獲取消息。

回復(fù)的消息:(以北京為例)

北京
2013年11月6日?星期三
今天:(17℃~4℃)晴北風(fēng)4-5級轉(zhuǎn)3-4級4-5級轉(zhuǎn)3-4級
24小時穿衣指數(shù):天氣冷,建議著棉服、羽絨服、皮夾克加羊毛衫等冬季服裝。年老體弱者宜著厚棉衣、冬大衣或厚羽絨服。
明天:(14℃~3℃)晴轉(zhuǎn)多云微風(fēng)小于3級
48小時穿衣指數(shù):天氣冷,建議著棉服、羽絨服、皮夾克加羊毛衫等冬季服裝。年老體弱者宜著厚棉衣、冬大衣或厚羽絨服。

來看源碼吧:

????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請求,獲取天氣
????????????if?(!string.IsNullOrEmpty(cityCode))
????????????{????????????????string?url?=?"http://www.miracleart.cn/{0}.html";
????????????????url?=?string.Format(url,?cityCode);
????????????????WebRequest?request?=?HttpWebRequest.Create(url);????????????????//超時時間為: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ù)據(jù),請稍后再試";
????????????????}????????????????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ù):").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ù):").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級",?
???????"fx1":?"微風(fēng)",?
???????"fx2":?"微風(fēng)",?
???????"fl1":?"小于3級",?
???????"fl2":?"小于3級",?
???????"fl3":?"小于3級",?
???????"fl4":?"小于3級",?
???????"fl5":?"小于3級",?
???????"fl6":?"4-5級",?
???????"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?=?"沒有獲取到該城市的天氣,請確定輸入了正確的城市名稱,如\'北京\'或者\'beijing\'或者\'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;?}
????????}
????}

更多微信公眾平臺開發(fā)教程(四) 實例入門:機器人相關(guān)文章請關(guān)注PHP中文網(wǎng)!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276