0

OmitRepeatedMessage 消息去重有时不起作用

微信开发 · pony1688 · 查看 350 次 · 于 151天前

OmitRepeatedMessage去重

WeixinController内容:      
[HttpPost]
       [ActionName("index")]
       public ActionResult Post(PostModel postModel)
       {
           postModel.EncodingAESKey = EncodingAESKey;
           var messageHandler = new
         CustomMessageHandler(Request.InputStream, postModel);
           messageHandler.OmitRepeatedMessage = true;  
           messageHandler.Execute();
           return new FixWeixinBugWeixinResult(messageHandler);
       }

CustomMessageHandler内容:

public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage)
       {
           var responsMessage = CreateResponseMessage<ResponseMessageText>();
           responsMessage.Content = "你输入了:" + requestMessage.Content;
           var handler = requestMessage.StartHandler(false)
               .Keyword("a", () =>
                {
                    Thread.Sleep(5000);
                    responsMessage.Content += "\r\n这条消息的id是:"+requestMessage.MsgId;
                    return responsMessage;
                });
           return responsMessage;
       }


public override Task OnExecutedAsync(CancellationToken cancellationToken)    
       {
           DateTime EndTime = DateTime.Now;
           var runTime = (EndTime - StartTime).TotalSeconds;
           if (runTime > 5)
           {
               var messageQueue = new MessageQueueHandler();
               messageQueue.SendMessage(base.OpenId, ResponseMessage);
           }
           return base.OnExecutedAsync(cancellationToken);
       }



MessageQueueHandler内容:
public IResponseMessageBase SendMessage(string openId, IResponseMessageBase ResponseMessage)
       {
           var messageQueue = new Senparc.CO2NET.MessageQueue.SenparcMessageQueue();

           if (ResponseMessage is ResponseMessageText)  
               {
                   var key = SenparcMessageQueue.GenerateKey("OutTimeCustomMessage", ResponseMessage.GetType(), Guid.NewGuid().ToString(), "SendMessage");
                   messageQueue.Add(key, () =>
                   {
                       var asyncResponsMessage = ResponseMessage as ResponseMessageText;
                       asyncResponsMessage.Content += "\r\n超时了,这是经过客服消息转发的消息!";
                       Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendText(Config.appId, openId, asyncResponsMessage.Content);
                   });
               }
           return new ResponseMessageNoResponse();
       }


当发送一个 a 时,正常返回一条客服消息,当连着发两次 a 时,可以看到两次发的a的MsgId是不同的,但会返回多条客服消息,消息去重好像不生效了,请高手帮忙解答一下
您尚未登录,请:网站登录 or 微信登录
共收到 4 条回复
0

pony1688 151天前

意思是说去重功能只对上一条接收的信息MsgId进行比对,再上一条的即使MsgId一样也不会去重了,是这个意思吧?

0

Senparc 151天前

会有一种这样的可能:你连续发送的2条(A和B),分别到达了,但是微信各种原因又给你推了第三条(和A一样),这时候你的上一条是B,所以就没有办法自动处理了。这种情况比较特殊,一般正常对话不会发生。

0

pony1688 151天前

只发一次 a 时,只收到一条客服消息,不会有多余的信息,因为Sleep(5000)了,肯定超时了,微信服务器重发的消息被 去重了,所以只会有一条回复,但是 连着发两次 a ,可以看到先返回的两条消息的MsgId是不同的,但是还会继续返回几条消息,看MsgId和前两条的MsgId是重复的,感觉应该是微信重发的消息没有去重又被客服消息处理了吧 ?

1

Senparc 151天前

去重的意思是,去掉微信为了保障消息到达,重复发送的消息(MsgId是相同的),并不是你独立的分多次发,把内容作比较,这个你可以自己对比上一条RequestMessage来对比。


热门话题 更多 >>

TenPayV3.Unifiedorder 调用统一订单接口 签名错误

sy87468118 20 个回复 • 查看 936 次 • 10天前

上传永久其他类型素材

俊熙OL 19 个回复 • 查看 271 次 • 44天前

源码无法运行

GoingForward 12 个回复 • 查看 391 次 • 96天前

core2.2版本兼容问题

haost 9 个回复 • 查看 238 次 • 64天前

小程序授权

fjl-net 8 个回复 • 查看 495 次 • 155天前

微信代码生成器报错

birch5 6 个回复 • 查看 244 次 • 101天前

Senpar.Weixin.MP.Sample(不兼容)

senparclsx 5 个回复 • 查看 458 次 • 162天前

企业支付到零钱证书出错

未央---- 5 个回复 • 查看 188 次 • 64天前

关注事件回调

付立东1 5 个回复 • 查看 152 次 • 77天前

微信支付-商家券

Hilary 5 个回复 • 查看 107 次 • 28天前

Net5.0如何全局注册

李先生99 5 个回复 • 查看 96 次 • 10天前

MaxRecordCount的作用

LXL.WxDeveloper 4 个回复 • 查看 82 次 • 21天前

CreateFromRequestMessage过程发生异常

tech5118 4 个回复 • 查看 142 次 • 60天前

小程序调用微信支付V3

说谎的人 4 个回复 • 查看 554 次 • 170天前

OmitRepeatedMessage 消息去重有时不起作用

pony1688 4 个回复 • 查看 350 次 • 151天前

微信事件Redis缓存

UNIQUE 3 个回复 • 查看 397 次 • 148天前

如何重置盛派开发者社区密码?

senparclsx 3 个回复 • 查看 309 次 • 154天前

个人信息
QQ群
  • 1群:300313885 (2000人群 已满)
  • 2群:293958349 (1000人群 已满)
  • 3群(公众号):342319110 Senparc.Weixin.MPSDK 3群
  • 4群:372212092 (500人群 已满)
  • 5群:377815480 (1000人群 已满)
  • 6群:425898825 (1000人群 已满)
  • 7群:482942254 (500人群 已满)
  • 8群:106230270 (500人群 已满)
  • 9群:539061281 (500人群 已满)
  • 10群(分布式缓存):246860933 Senparc.Weixin.Cache SDK 10群
  • 11群:553198593 (500人群 已满)
  • 12群(小程序):108830388 Senparc微信小程序 12群
  • 13群(开放平台):183424136 (500人群 已满)
  • 14群(视频学员):588231256 Senparc.Weixin SDK 14群
  • 15群(综合):289181996 (500人群 已满)
  • 16群(开放平台):860626938 (500人群 已满)
  • 17群(小程序):770615466 [17群 开放平台]SenparcSDK
  • NCF 技术交流群:147054579 SCF 开发交流群
微信开发宝典:《微信开发深度解析》

由 Senparc.Weixin SDK 作者耗时两年完成的微信开发图书《微信开发深度解析:公众号、小程序高效开发秘籍》已经出版!

历经2年精心雕琢,难得的“理论 + 实战案例 + 趟坑经验”总结,
从需求分析、策划,到账号申请、验证,再到全面的 API 及开发工具,
覆盖所有开发微信公众号(含订阅号、服务号和小程序)所需关键技能!

视频教程:《微信公众号+小程序快速开发》

由盛派课堂(盛派旗下独立教育品牌)制作,《微信开发深度解析》作者苏震巍先生主讲的《微信公众号+小程序快速开发》视频课程开课啦!

课程采用“理论+实战”的教学形式,结合部分《微信开发深度解析》内容,独立于书本,包含了更多的操作演示和案例展示,帮助大家从多个维度学习微信开发以及.NET开发过程中的诸多技巧。
课程包含两大部分:
1. 微信开发基础技能
2. 公众号及小程序案例实战
共计60课时,配有番外篇,目前视频已在网易云课堂上线。