首页 > 学院 > 开发设计 > 正文

.net微信公众号开发——群发消息

2019-11-17 02:23:25
字体:
来源:转载
供稿:网友
.net微信公众号开发——群发消息

本文将介绍微信公众号开发中用于群发消息的类MassMessage,包括:(1)MassMessage类;(2)群发;(3)删除;(4)预览;(5)查询发送状态;(6)接收推送群发结果事件。 源代码地址:http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount/tree/master/PublicAccount/MassMessage 演示地址:http://www.xrwang.net/Example/MassMessage.aspx

1 MassMessage类 MassMessage静态类封装了群发消息相关的方法,如下表:

作用方法名
群发Send
删除Delete
预览PReview
查询发送状态GetStatus

2 群发 公众号可以按用户分组群发消息,也可以按用户的OpenId列表来群发群发消息。2.1 按用户分组群发消息 方法定义如下:

复制代码
/// <summary>/// 根据分组群发消息/// </summary>/// <param name="userName">公众号</param>/// <param name="isToAll">是否群发给所有用户</param>/// <param name="groupId">如果群发给所有用户,忽略该参数;否则群发给该组中的用户</param>/// <param name="messageType">群发消息类型</param>/// <param name="mediaIdOrContent">多媒体id或者文本内容</param>/// <param name="errorMessage">返回发送是否成功</param>/// <returns>如果发送成功,返回消息ID;否则,返回-1。</returns>public static long Send(string userName, bool isToAll, string groupId, MassMessageTypeEnum messageType, string mediaIdOrContent, out ErrorMessage errorMessage)
复制代码

使用示例如下:

[csharp]view plaincopy在CODE上查看代码片///<summary>///按分组群发消息///</summary>///<paramname="sender"></param>///<paramname="e"></param>protectedvoidbtnSendToGroup_Click(objectsender,EventArgse){if(rblGroup.SelectedIndex>=0){stringuserName=lbPublicAccount.SelectedValue;ErrorMessageerrorMessage;boolisToAll=string.IsNullOrWhiteSpace(rblGroup.SelectedValue);stringgroupId=isToAll?"":rblGroup.SelectedValue;stringcontent=txtContent.Text;longmsgId=MassMessage.Send(userName,isToAll,groupId,MassMessageTypeEnum.text,content,outerrorMessage);if(errorMessage.IsSuccess){ltrMessage.Text="群发消息成功。";rblMassMessage.Items.Add(newListItem(string.Format("id:{0},text:{1}",msgId,content),msgId.ToString()));}elseltrMessage.Text=string.Format("群发消息失败。{0}",errorMessage);}}

2.2%20按OpenId列表群发

%20%20方法定义如下:

/// <summary>/// 根据OpenId列表群发消息/// </summary>/// <param name="userName">公众号</param>/// <param name="tousers">OpenId列表</param>/// <param name="messageType">群发消息类型</param>/// <param name="mediaIdOrContent">多媒体id或者文本内容</param>/// <param name="errorMessage">返回发送是否成功</param>/// <returns>如果发送成功,返回消息ID;否则,返回-1。</returns>public static long Send(string userName, IEnumerable<string> tousers, MassMessageTypeEnum messageType, string mediaIdOrContent, out ErrorMessage errorMessage)
复制代码

使用示例如下:

[csharp]view plaincopy在CODE上查看代码片///<summary>///按用户群发消息///</summary>///<paramname="sender"></param>///<paramname="e"></param>protectedvoidbtnSendToUsers_Click(objectsender,EventArgse){if(cblUser.SelectedIndex>=0){stringuserName=lbPublicAccount.SelectedValue;ErrorMessageerrorMessage;List<string>openIds=newList<string>();foreach(ListItemitemincblUser.Items){if(item.Selected)openIds.Add(item.Value);}stringcontent=txtContent.Text;longmsgId=MassMessage.Send(userName,openIds,MassMessageTypeEnum.text,content,outerrorMessage);if(errorMessage.IsSuccess){ltrMessage.Text="群发消息成功。";rblMassMessage.Items.Add(newListItem(string.Format("id:{0},text:{1}",msgId,content),msgId.ToString()));}elseltrMessage.Text=string.Format("群发消息失败。{0}",errorMessage);}}

3%20删除群发%20%20删除已群发消息的方法定义如下:

/// <summary>/// 删除群发消息。/// 注:只能删除图文消息和视频消息。/// </summary>/// <param name="userName">公众号</param>/// <param name="messageId">消息id</param>/// <returns>返回删除是否成功</returns>public static ErrorMessage Delete(string userName, long messageId)
复制代码

使用示例如下:

[csharp]view plaincopy在CODE上查看代码片派生到我的代码片
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表