187 lines
9.9 KiB
C#
187 lines
9.9 KiB
C#
|
|
/*--------------------------------------------------------------------------
|
|||
|
|
* ReplayPassiveMessageAPI.cs
|
|||
|
|
*Auth:deepleo
|
|||
|
|
* Date:2015.01.15
|
|||
|
|
* Email:2586662969@qq.com
|
|||
|
|
* Website:http://www.weixinsdk.net
|
|||
|
|
*--------------------------------------------------------------------------*/
|
|||
|
|
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using Deepleo.Weixin.SDK.Entities;
|
|||
|
|
using Deepleo.Weixin.SDK.Helpers;
|
|||
|
|
|
|||
|
|
namespace Deepleo.Weixin.SDK
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 发送被动响应消息
|
|||
|
|
/// 注意:
|
|||
|
|
/// 1.回复图片等多媒体消息时需要预先上传多媒体文件到微信服务器,只支持认证服务号。
|
|||
|
|
/// 2.微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次,如果在调试中,发现用户无法收到响应的消息,可以检查是否消息处理超时。
|
|||
|
|
/// 3.假如服务器无法保证在五秒内处理并回复,必须直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。。这种情况下,可以使用客服消息接口进行异步回复。
|
|||
|
|
/// http://mp.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E8%A2%AB%E5%8A%A8%E5%93%8D%E5%BA%94%E6%B6%88%E6%81%AF
|
|||
|
|
/// </summary>
|
|||
|
|
public class ReplayPassiveMessageAPI
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 回复文本消息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="toUserName"></param>
|
|||
|
|
/// <param name="fromUserName"></param>
|
|||
|
|
/// <param name="content"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string RepayText(string toUserName, string fromUserName, string content)
|
|||
|
|
{
|
|||
|
|
return string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName>" +
|
|||
|
|
"<FromUserName><![CDATA[{1}]]></FromUserName>" +
|
|||
|
|
"<CreateTime>{2}</CreateTime>" +
|
|||
|
|
"<MsgType><![CDATA[text]]></MsgType>" +
|
|||
|
|
"<Content><![CDATA[{3}]]></Content></xml>",
|
|||
|
|
toUserName, fromUserName, Util.CreateTimestamp(), content);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 回复单图文消息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="toUserName"></param>
|
|||
|
|
/// <param name="fromUserName"></param>
|
|||
|
|
/// <param name="news"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string RepayNews(string toUserName, string fromUserName, WeixinNews news)
|
|||
|
|
{
|
|||
|
|
var builder = new StringBuilder();
|
|||
|
|
builder.Append(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName>" +
|
|||
|
|
"<FromUserName><![CDATA[{1}]]></FromUserName>" +
|
|||
|
|
"<CreateTime>{2}</CreateTime>" +
|
|||
|
|
"<MsgType><![CDATA[news]]></MsgType>" +
|
|||
|
|
"<ArticleCount>{3}</ArticleCount><Articles>",
|
|||
|
|
toUserName, fromUserName,
|
|||
|
|
Util.CreateTimestamp(),
|
|||
|
|
1));
|
|||
|
|
builder.Append(string.Format("<item><Title><![CDATA[{0}]]></Title>" +
|
|||
|
|
"<Description><![CDATA[{1}]]></Description>" +
|
|||
|
|
"<PicUrl><![CDATA[{2}]]></PicUrl>" +
|
|||
|
|
"<Url><![CDATA[{3}]]></Url>" +
|
|||
|
|
"</item>",
|
|||
|
|
news.title, news.description, news.picurl, news.url
|
|||
|
|
));
|
|||
|
|
builder.Append("</Articles></xml>");
|
|||
|
|
return builder.ToString();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 回复多图文消息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="toUserName"></param>
|
|||
|
|
/// <param name="fromUserName"></param>
|
|||
|
|
/// <param name="news"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string RepayNews(string toUserName, string fromUserName, List<WeixinNews> news)
|
|||
|
|
{
|
|||
|
|
var builder = new StringBuilder();
|
|||
|
|
builder.Append(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName>" +
|
|||
|
|
"<FromUserName><![CDATA[{1}]]></FromUserName>" +
|
|||
|
|
"<CreateTime>{2}</CreateTime>" +
|
|||
|
|
"<MsgType><![CDATA[news]]></MsgType>" +
|
|||
|
|
"<ArticleCount>{3}</ArticleCount><Articles>",
|
|||
|
|
toUserName, fromUserName,
|
|||
|
|
Util.CreateTimestamp(),
|
|||
|
|
news.Count
|
|||
|
|
));
|
|||
|
|
foreach (var c in news)
|
|||
|
|
{
|
|||
|
|
builder.Append(string.Format("<item><Title><![CDATA[{0}]]></Title>" +
|
|||
|
|
"<Description><![CDATA[{1}]]></Description>" +
|
|||
|
|
"<PicUrl><![CDATA[{2}]]></PicUrl>" +
|
|||
|
|
"<Url><![CDATA[{3}]]></Url>" +
|
|||
|
|
"</item>",
|
|||
|
|
c.title, c.description, c.picurl, c.url
|
|||
|
|
));
|
|||
|
|
}
|
|||
|
|
builder.Append("</Articles></xml>");
|
|||
|
|
return builder.ToString();
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 回复图片消息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="toUserName"></param>
|
|||
|
|
/// <param name="fromUserName"></param>
|
|||
|
|
/// <param name="media_id">已经上传到微信服务器的图片media_id</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string ReplayImage(string toUserName, string fromUserName, string media_id)
|
|||
|
|
{
|
|||
|
|
return string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName>" +
|
|||
|
|
"<FromUserName><![CDATA[{1}]]></FromUserName>" +
|
|||
|
|
"<CreateTime>{2}</CreateTime>" +
|
|||
|
|
"<MsgType><![CDATA[image]]></MsgType>" +
|
|||
|
|
"<Image><MediaId><![CDATA[{3}]]></MediaId></Image></xml>",
|
|||
|
|
toUserName, fromUserName, Util.CreateTimestamp(), media_id);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 回复语音消息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="toUserName"></param>
|
|||
|
|
/// <param name="fromUserName"></param>
|
|||
|
|
/// <param name="media_id">已经上传到微信服务器的语音media_id</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string ReplayVoice(string toUserName, string fromUserName, string media_id)
|
|||
|
|
{
|
|||
|
|
return string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName>" +
|
|||
|
|
"<FromUserName><![CDATA[{1}]]></FromUserName>" +
|
|||
|
|
"<CreateTime>{2}</CreateTime>" +
|
|||
|
|
"<MsgType><![CDATA[voice]]></MsgType>" +
|
|||
|
|
"<Voice><MediaId><![CDATA[{3}]]></MediaId></Voice></xml>",
|
|||
|
|
toUserName, fromUserName, Util.CreateTimestamp(), media_id);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 回复视频消息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="toUserName"></param>
|
|||
|
|
/// <param name="fromUserName"></param>
|
|||
|
|
/// <param name="media_id">已经上传到微信服务器的视频media_id</param>
|
|||
|
|
/// <param name="title">视频标题</param>
|
|||
|
|
/// <param name="description">视频文字说明</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string ReplayVedio(string toUserName, string fromUserName, string media_id, string title, string description)
|
|||
|
|
{
|
|||
|
|
return string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName>" +
|
|||
|
|
"<FromUserName><![CDATA[{1}]]></FromUserName>" +
|
|||
|
|
"<CreateTime>{2}</CreateTime>" +
|
|||
|
|
"<MsgType><![CDATA[video]]></MsgType>" +
|
|||
|
|
"<Video><MediaId><![CDATA[{3}]]></MediaId>" +
|
|||
|
|
"<Title><![CDATA[{4}]]></Title>" +
|
|||
|
|
"<Description><![CDATA[{5}]]></Description></Video></xml>",
|
|||
|
|
toUserName, fromUserName, Util.CreateTimestamp(), media_id, title, description);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 回复音乐消息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="toUserName"></param>
|
|||
|
|
/// <param name="fromUserName"></param>
|
|||
|
|
/// <param name="title">音乐标题</param>
|
|||
|
|
/// <param name="description">音乐描述</param>
|
|||
|
|
/// <param name="musicUrl">音乐链接</param>
|
|||
|
|
/// <param name="hqMusicUrl">高质量音乐链接,WIFI环境优先使用该链接播放音乐</param>
|
|||
|
|
/// <param name="thumb_media_id">缩略图的媒体id,通过上传多媒体文件,得到的id</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string ReplayMusic(string toUserName, string fromUserName, string title, string description, string musicUrl, string hqMusicUrl, string thumb_media_id)
|
|||
|
|
{
|
|||
|
|
return string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName>" +
|
|||
|
|
"<FromUserName><![CDATA[{1}]]></FromUserName>" +
|
|||
|
|
"<CreateTime>{2}</CreateTime>" +
|
|||
|
|
"<MsgType><![CDATA[music]]></MsgType>" +
|
|||
|
|
"<Music>" +
|
|||
|
|
"<Title><![CDATA[{3}]]></Title>" +
|
|||
|
|
"<Description><![CDATA[{4}]]></Description>" +
|
|||
|
|
"<MusicUrl><![CDATA[{5}]]></MusicUrl>" +
|
|||
|
|
"<HQMusicUrl><![CDATA[{6}]]></HQMusicUrl>" +
|
|||
|
|
"<ThumbMediaId><![CDATA[{7}]]></ThumbMediaId>" +
|
|||
|
|
"</Music></xml>",
|
|||
|
|
toUserName, fromUserName, Util.CreateTimestamp(), title, description, musicUrl, hqMusicUrl, thumb_media_id);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|