im-server icon indicating copy to clipboard operation
im-server copied to clipboard

对于语音通话或者视频通话产生的消息,怎么判断属于同一个通话里面的

Open BarryYang1 opened this issue 1 year ago • 12 comments

发起一次语音通话或者视频通话会在t_messages_x产生几条数据,类型是400,402这样的,我要怎么判断这几条消息是属于同一个通话里面产生的 我目前使用 WFCMessageContent.MessageContent.parseFrom(message.getData()).getContent() 这个返回的字符串判断的,目测好像能判断只要是同样的值就属于同一个会话,但是也会出现不同的会话同一个值的情况, 有没有什么办法可以判断这几条消息属于同一个通话里面的

BarryYang1 avatar Sep 09 '22 03:09 BarryYang1

请看下会话

imndx avatar Sep 09 '22 05:09 imndx

请看下会话

会话里面3个参数,会话类型(ConversationType),会话目标(Target),会话线路(Line),这3个参数并不能确定唯一性,比如我给同一个人拨打多次通话,这个3个值都是同样的, 我的意思说的是对于t_messages_x表里的数据,每次通话都会产生几条数据,我要怎么判断这几条数据是属于同一条通话的呢,用哪个参数可以确定唯一性

BarryYang1 avatar Sep 09 '22 05:09 BarryYang1

群会话的,那三个字段就能确定,如果是单聊的话:

t_messages_x 里面,还有个_from字段,比如:

from: 'userA', type:0, target: 'userB', line:0 from: 'userB', type:0, target: 'userA', line:0,表示的都是用户userA和用户userB之间的单聊会话,只是消息的发送者不一样

imndx avatar Sep 09 '22 05:09 imndx

群会话的,那三个字段就能确定,如果是单聊的话:

t_messages_x 里面,还有个_from字段,比如:

from: 'userA', type:0, target: 'userB', line:0 from: 'userB', type:0, target: 'userA', line:0,表示的都是用户userA和用户userB之间的单聊会话,只是消息的发送者不一样

如果是userA多次给userB拨打通话,from/type/target/line这几个值都是同样的,我要怎么判断t_messages_x里面这2次通话产生的数据归属于哪次通话的呢

BarryYang1 avatar Sep 09 '22 05:09 BarryYang1

那你需要把消息内容给解析一下,里面有个callId字段 WFCMessageContent.MessageContent.parseFrom(message.getData()).getContent()

imndx avatar Sep 09 '22 05:09 imndx

那你需要把消息内容给解析一下,里面有个callId字段 WFCMessageContent.MessageContent.parseFrom(message.getData()).getContent()

只有400类型的才会有callId字段,其他401,402类型的没有callId,那我要怎么知道这些401,402的消息属于哪一个通话的呢 image image image 我看到这里有个content_字段对应的就是callId,应该可以用这个字段判断 但是这个字段的值好像不是唯一的,我查了我的数据,存在不同的通话callId值相同

BarryYang1 avatar Sep 09 '22 07:09 BarryYang1

哪个字段表示callId,你需要看下客户端对应消息的encode方法,你上面的说的几个消息,content字段就是callId

imndx avatar Sep 09 '22 08:09 imndx

哪个字段表示callId,你需要看下客户端对应消息的encode方法,你上面的说的几个消息,content字段就是callId

我知道content字段就是callId,但是callId好像不是唯一的,不同的通话可能出现callId相同的情况,如果碰到这样的情况我要怎么区别这2个通话

BarryYang1 avatar Sep 09 '22 08:09 BarryYang1

正常不会出现callId重复的情况,请参考 #503

imndx avatar Sep 09 '22 08:09 imndx

正常不会出现callId重复的情况,请参考 #503

确实正常情况不会出现callId重复的情况,但是确实会有这样的问题, 没太明白 #503的意思,是要更新avenginekit.aar的意思吗,但是我的代码是最新的, 我看callId的生成规则并不是发起人ID + 时间戳的规则,而是发起人ID + 4位数字的规则,如果是时间戳的话就不会重复了

BarryYang1 avatar Sep 09 '22 08:09 BarryYang1

正常不会出现callId重复的情况,请参考 #503

确实正常情况不会出现callId重复的情况,但是确实会有这样的问题, 没太明白 #503的意思,是要更新avenginekit.aar的意思吗,但是我的代码是最新的, 我看callId的生成规则并不是发起人ID + 时间戳的规则,而是发起人ID + 4位数字的规则,如果是时间戳的话就不会重复了

嗯嗯,你更新下avenginekit.aar

imndx avatar Sep 10 '22 02:09 imndx

正常不会出现callId重复的情况,请参考 #503

确实正常情况不会出现callId重复的情况,但是确实会有这样的问题, 没太明白 #503的意思,是要更新avenginekit.aar的意思吗,但是我的代码是最新的, 我看callId的生成规则并不是发起人ID + 时间戳的规则,而是发起人ID + 4位数字的规则,如果是时间戳的话就不会重复了

嗯嗯,你更新下avenginekit.aar

我把代码更新了就OK了,callId就是发起人ID + 时间戳的规则了,但是我看avenginekit.aar没有提交记录,我是增量更新的 image 我只更新了这部分代码就可以了,这是怎么回事

BarryYang1 avatar Sep 13 '22 01:09 BarryYang1

callid是引擎库里生成的,只有更新这个库才可能生效的。

heavyrain2012 avatar Nov 01 '22 10:11 heavyrain2012