0

OmitRepeatedMessage 消息去重有时不起作用

微信开发 · pony1688 · 查看 97 次 · 于 31天前

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 31天前

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

0

Senparc 31天前

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

0

pony1688 31天前

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

1

Senparc 31天前

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


热门话题 更多 >>

找不到Senparc.Weixin.MP.Sample.sln文件解决方案文件

senparclsx 15 个回复 • 查看 568 次 • 105天前

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

sy87468118 15 个回复 • 查看 524 次 • 51天前

.net 5微信退款报错

magiboy 13 个回复 • 查看 999 次 • 163天前

appsettings.json取不到数据--centos7

yintingji 12 个回复 • 查看 848 次 • 173天前

小程序客服消息能否自动回复链接消息

LXL.WxDeveloper 11 个回复 • 查看 469 次 • 125天前

关于微信小程序发送订阅消息

LXL.WxDeveloper 8 个回复 • 查看 595 次 • 155天前

小程序授权

fjl-net 8 个回复 • 查看 278 次 • 36天前

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

senparclsx 5 个回复 • 查看 157 次 • 43天前

TenPay.V3.TenPayV3.Refund退款BUG

zhuyuelee 5 个回复 • 查看 509 次 • 140天前

小程序调用微信支付V3

说谎的人 4 个回复 • 查看 253 次 • 51天前

OmitRepeatedMessage 消息去重有时不起作用

pony1688 4 个回复 • 查看 97 次 • 31天前

微信事件Redis缓存

UNIQUE 3 个回复 • 查看 102 次 • 29天前

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

senparclsx 3 个回复 • 查看 101 次 • 35天前

使用csredis无法启动项目

lzy198845 3 个回复 • 查看 268 次 • 84天前

个人信息
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课时,配有番外篇,目前视频已在网易云课堂上线。