接收消息#
我们的系统中,可以通过对接我们的小组级消息回调或企业级消息回调来实现接收消息的能力,但是对接过程中有一些小问题需要提前注意,以免引起上线之后的麻烦问题1. 过滤掉托管账号自己发送的消息#
因为某些客户的消息监控场景需求,因此目前系统支持推送托管账号自己发送的消息, 而这一点对于一些通过消息回调来实现机器人能力的用户是一个大麻烦,系统里提供了开关来开启和关闭推送托管账号发送的消息,但是对于通过消息回调来实现机器人的用户来说,一定要注意在程序层面也做一下拦截,因为我们无法排除某一天因为某个运营同学不小心打开了这个开关而导致了机器人自己回复自己消息进入死循环,轻则影响用户体验,重则直接造成账号封号。所以在程序层面对于自己发送的消息做一下过滤是非常有必要的事情2. 对消息进行去重过滤处理#
系统中,为了确保消息能够正确推送,某些特殊情况下可能会针对某些消息重复进行推送(比如系统故障失效,或自检测报错之后,补偿重推),在这种情况下,就会出现同一条消息多次推送的情况。除此之外,系统中在进行富媒体消息加载的时候,会首先推送一条不含富媒体数据的消息,以确保富媒体是否加载成功不影响基本的消息推送,然后在富媒体数据加载完成之后,会再次推送一条消息,并附带加载好的富媒体消息,另外,在用户主动调用加载原图接口的时候,系统在原图加载好之后也会推送一条消息。所以,不可避免的是系统会在某些情况下重复推送消息。这时候,如果没有对系统重复推送的消息做去重处理,就会导致系统重复回复,甚至可能发送多个优惠券等等影响业务的情况,因此我们建议用户在实现处理消息逻辑的时候,一定增加一个去重逻辑。系统会保证同一条消息,messageId
都是相同的。同时注意,当一个群内有多个托管账号 同时存在的时候,收到的同一条消息的 messageId
也是相同的,但是此时的 botId
是不同的。因此可以根据自己的需求来判断是对 messageId
进行去重,还是对 messageId
和 botId
来进行组合去重,来满足自己的业务需求。修改于 2024-06-27 06:10:06