亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

微信公眾平臺開發教程(四) 實例入門:機器人回復(附源碼)

2019-11-19 18:42:57
字體:
來源:轉載
供稿:網友

上一篇文章,寫了基本框架,可能很多人會覺得暈頭轉向,這里提供一個簡單的例子來予以說明,希望能幫你解開謎團。

一、功能介紹

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

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

當然后續我們還會推出比較復雜的應用實例。

二、具體實現

1、提供訪問接口

這里不再贅述,參照上一章,微信公眾賬號開發教程(二) 基礎框架搭建
//www.49028c.com/article/98754.htm

2、簽名認證和分發請求

這里不再贅述,參照上一章,微信公眾賬號開發教程(二) 基礎框架搭建
//www.49028c.com/article/98754.htm

3、處理請求,并響應

1)關注

當微信用戶關注公眾賬號時,可以給其適當的提示。可以是歡迎詞,可以是幫助提示。

直接上代碼:

class EventHandler : IHandler  {    /// <summary>    /// 請求的xml    /// </summary>    private string RequestXml { get; set; }    /// <summary>    /// 構造函數    /// </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))      {        //回復歡迎消息        TextMessage tm = new TextMessage();        tm.ToUserName = em.FromUserName;        tm.FromUserName = em.ToUserName;        tm.CreateTime = Common.GetNowTime();        tm.Content = "歡迎您關注***,我是大哥大,有事就問我,呵呵!/n/n";        response = tm.GenerateContent();      }      return response;    }  }

 2)問候

簡單的交流問候,比如你好、幫助等等,跟我們使用微信聊天一樣,不過回應是由我們的程序響應。具體功能,可以根據自己的需要進行添加。

微信本來就是溝通的平臺。這個案例,可以用于在線服務機器人,類似于淘寶的客服機器人,可是我們這個是微信版的。呵呵
其實,很簡單,獲取請求消息,根據關鍵字來匹配回應。當然這里可能要做的工作很多,如何支持智能匹配,如何支持模糊匹配等。

代碼如下:

/// <summary>  /// 文本信息處理類  /// </summary>  public class TextHandler : IHandler  {    /// <summary>    /// 請求的XML    /// </summary>    private string RequestXml { get; set; }    /// <summary>    /// 構造函數    /// </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;      //進行發送者、接收者轉換      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 = "您說的,可惜,我沒明白啊,試試其他關鍵字吧。";      }      return response;    }  }

3)查詢天氣

這個功能需要請求實時查詢的,請求官方的天氣發布網站,然后解析其返回值,按照我們需要的格式,組織天氣信息,最后發送給微信客戶。

采用文本消息方式處理。

用戶請求,只需輸入:tq 城市名稱/拼音/首字母,即可獲取消息。

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

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

來看源碼吧:

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://m.weather.com.cn/data/{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 = "暫時沒有取到天氣數據,請稍后再試";        }        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小時穿衣指數:").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小時穿衣指數:").Append(node["index48_d"].InnerText).Append("/n");              result = builder.ToString();            }          }          #region 天氣json數據格式          /*                 {  "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亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

91色视频在线导航| 欧美大胆在线视频| 97免费中文视频在线观看| 91在线视频一区| 色综合天天狠天天透天天伊人| 欧美一性一乱一交一视频| 欧美野外wwwxxx| 国产精品伦子伦免费视频| 久久综合88中文色鬼| 亚洲欧美国产日韩中文字幕| 日韩中文字幕在线播放| 欧美亚州一区二区三区| 国产精品久久久久久久9999| 精品视频一区在线视频| 亚洲第一在线视频| 精品无人区太爽高潮在线播放| 欧美激情在线有限公司| 91久久精品国产91久久| 精品国产视频在线| 亚洲女人天堂成人av在线| 国产热re99久久6国产精品| 韩国一区二区电影| 国产精品久久久久久久av电影| 亚洲福利在线观看| 久久免费视频网站| 亚洲精品视频中文字幕| 91色中文字幕| 日本一本a高清免费不卡| 国产在线视频2019最新视频| 久久综合亚洲社区| 国产一区视频在线播放| 亚洲一级免费视频| 91在线精品播放| 国产精品自拍视频| 国产精品视频久久久久| 这里只有精品在线观看| 国模私拍一区二区三区| 成人在线视频网| 欧美二区在线播放| 欧美尤物巨大精品爽| 亚洲精品av在线播放| 亚洲理论在线a中文字幕| 精品国产福利在线| 日韩中文字幕精品视频| 日韩成人av网| 国产精品久久久久久久久久小说| 日韩成人小视频| 久久精品影视伊人网| 亚洲精品456在线播放狼人| 久久全国免费视频| 亚洲黄色免费三级| 在线精品国产成人综合| 欧美黑人一级爽快片淫片高清| y97精品国产97久久久久久| 78色国产精品| 国产精品视频地址| 国产精品一区二区三区久久| 精品久久久久久久中文字幕| 欧美成人精品激情在线观看| 欧美成人精品激情在线观看| 麻豆成人在线看| 在线日韩av观看| 亚洲人成电影网站| 亚州精品天堂中文字幕| 亚洲自拍偷拍色片视频| 日韩在线免费观看视频| 国产丝袜精品视频| 精品亚洲一区二区三区四区五区| 日韩精品小视频| 国产色视频一区| 91久久国产综合久久91精品网站| 亚洲在线免费观看| 尤物yw午夜国产精品视频| 色狠狠久久aa北条麻妃| 欧美极品少妇xxxxⅹ裸体艺术| 国产日韩精品一区二区| 日韩日本欧美亚洲| 亚洲小视频在线| 亚洲第一精品电影| 久久久精品视频在线观看| 国产99久久久欧美黑人| 成人午夜激情免费视频| 国产福利精品av综合导导航| 亚洲理论片在线观看| 国产精品丝袜久久久久久高清| 欧美激情高清视频| 国产成人福利视频| 国产精欧美一区二区三区| 亚洲免费成人av电影| 91av在线播放视频| 国产亚洲精品久久久久久| 国产精品久久一区| 欧美日本黄视频| 高跟丝袜欧美一区| 91久久久久久久久久| 揄拍成人国产精品视频| 欧美日韩在线免费| 国产91精品网站| 国产精品视频1区| 亚洲国产精品成人精品| 成人福利网站在线观看| 欧美亚洲国产日韩2020| 欧美人成在线视频| 日韩av在线电影网| 久久亚洲精品国产亚洲老地址| 欧美黑人xxxx| 亚洲欧美精品伊人久久| 日韩av在线免费| 日韩av大片在线| 日韩成人av网址| 国产男女猛烈无遮挡91| 中文日韩电影网站| 国产美女扒开尿口久久久| 国产精品情侣自拍| 中文字幕亚洲欧美日韩在线不卡| 欧美成人免费全部| 亚洲一区中文字幕| 亚洲天堂av高清| 久久视频在线播放| 日日骚久久av| 国产成人一区二区在线| 欧美日韩国产限制| 在线亚洲午夜片av大片| 91热福利电影| 精品中文字幕视频| 亚洲香蕉在线观看| 国产在线精品播放| 深夜福利91大全| 国产午夜精品免费一区二区三区| 一区二区三区四区在线观看视频| 26uuu另类亚洲欧美日本老年| 日韩成人在线视频观看| 久久久国产精品一区| 亚洲人成网站999久久久综合| 日韩成人av在线| 久久久久久亚洲精品中文字幕| 精品亚洲国产视频| 欧美日韩国产综合视频在线观看中文| 亚洲最新在线视频| 热久久美女精品天天吊色| 91成人免费观看网站| 欧美在线免费视频| 国产亚洲欧洲高清一区| 亚洲精品美女在线观看播放| 欧美日韩亚洲视频一区| 欧美性受xxxx黑人猛交| 国产一区二区丝袜| 黄色91在线观看| www国产精品com| 一区二区中文字幕| 亚洲国产精品99| 日韩第一页在线| 久久精品一区中文字幕| 中文字幕久精品免费视频| 国产精品免费视频久久久| 亚洲影院色在线观看免费| 韩剧1988免费观看全集| 亚洲第一精品久久忘忧草社区| 高清一区二区三区日本久| 美女999久久久精品视频| 久久天天躁日日躁| 欧美激情精品久久久久久大尺度| 国产高清在线不卡| 国产欧美精品xxxx另类|