這篇文章主要介紹了如何通過微信公眾平臺(tái)實(shí)現(xiàn)在線客服機(jī)器人功能,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)為企業(yè)級客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、重慶APP軟件開發(fā)、重慶小程序開發(fā)公司、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。
通過微信公眾平臺(tái)實(shí)現(xiàn)在線客服機(jī)器人功能。主要的功能包括:簡單對話、查詢天氣等服務(wù)。
當(dāng)微信用戶關(guān)注公眾賬號時(shí),可以給其適當(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;
}
}簡單的交流問候,比如你好、幫助等等,跟我們使用微信聊天一樣,不過回應(yīng)是由我們的程序響應(yīng)。具體功能,可以根據(jù)自己的需要進(jìn)行添加。
微信本來就是溝通的平臺(tái)。這個(gè)案例,可以用于在線服務(wù)機(jī)器人,類似于淘寶的客服機(jī)器人,可是我們這個(gè)是微信版的。呵呵
其實(shí),很簡單,獲取請求消息,根據(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; //進(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 = "哼,你說臟話! ";
} 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;
}
}這個(gè)功能需要請求實(shí)時(shí)查詢的,請求官方的天氣發(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í)穿衣指數(shù):天氣冷,建議著棉服、羽絨服、皮夾克加羊毛衫等冬季服裝。年老體弱者宜著厚棉衣、冬大衣或厚羽絨服。 明天:(14℃~3℃)晴轉(zhuǎn)多云微風(fēng)小于3級 48小時(shí)穿衣指數(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.php.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í)沒有取到天氣數(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í)穿衣指數(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級",
"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 = "沒有獲取到該城市的天氣,請確定輸入了正確的城市名稱,如\'北京\'或者\(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; }
}
}感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何通過微信公眾平臺(tái)實(shí)現(xiàn)在線客服機(jī)器人功能”這篇文章對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
文章名稱:如何通過微信公眾平臺(tái)實(shí)現(xiàn)在線客服機(jī)器人功能
文章網(wǎng)址:http://www.chinadenli.net/article8/pgsdop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、動(dòng)態(tài)網(wǎng)站、靜態(tài)網(wǎng)站、云服務(wù)器、小程序開發(fā)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)