首页 > 热点 > 微信 > 正文

微信公众平台开发教程(四) 实例入门:机器人回复(附源码)

2024-07-22 01:16:45
字体:
来源:转载
供稿:网友

上一篇文章,写了基本框架,可能很多人会觉得晕头转向,这里提供一个简单的例子来予以说明,希望能帮你解开谜团。

一、功能介绍

通过微信公众平台实现在线客服机器人功能。主要的功能包括:简单对话、查询天气等服务。

这里只是提供比较简单的功能,重在通过此实例来说明公众平台的具体研发过程。只是一个简单DEMO,如果需要的话可以在此基础上进行扩展。

当然后续我们还会推出比较复杂的应用实例。

二、具体实现

1、提供访问接口

这里不再赘述,参照上一章,微信公众账号开发教程(二) 基础框架搭建
//www.Vevb.com/article/98754.htm

2、签名认证和分发请求

这里不再赘述,参照上一章,微信公众账号开发教程(二) 基础框架搭建
//www.Vevb.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;    }  }            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表