一种串接长消息的处理方法及装置与流程

文档序号:11931882阅读:277来源:国知局
一种串接长消息的处理方法及装置与流程

本发明涉及短消息业务,具体涉及一种串接长消息的处理方法及装置。



背景技术:

单条短信的长度是有限制的,GSM(全球移动通信系统)网络的短信,在起呼和终呼消息中内容最多只能有140个字节。因此对于起呼消息,如果用户输入的消息长度大于140个字节,需要手机进行拆分。拆分后的消息经过多个网元的转发,最终终呼到被叫用户手机时,可能是乱序到达的。比如一条串接长消息拆分成两条,第二个分片先于第一个分片到达被叫用户手机。有些手机对长消息不做拼接显示,也就是来一条就显示一条,如果消息是乱序到达的,用户可能是先看到后面的消息分段,后看到前面的消息分段,用户体验非常不好。

另外一个问题就是串接长消息的扣费问题,目前的做法是,长消息按照拆分的条数进行计费。比如一条长消息拆分成了两条,就按照两条消息进行独立的扣费和补款。如果一个分片发送失败,一个分片发送成功,最终还是扣除了用户的一条消息的费用。也就是说在用户输入的是一条消息,被叫用户收到不完整消息的情况下,也对主叫用户进行了一条消息的扣费,对用户是不合理的。在用户没有收到完整短消息的情况下,不应当扣除用户的费用。



技术实现要素:

为了克服现有技术中存在的上述问题,本发明提供了一种串接长消息的处理方法及装置,保证串接长消息按照顺序下发到被叫用户,并且串接长消息按照单条消息进行扣费和补款,仅在被叫用户收到长消息所有分片的情况下,才对用户进行扣费,有任何分片失败的情况下都不对用户进行扣费。

为了解决上述技术问题,本发明采用如下技术方案:

本发明的实施例提供了一种串接长消息的处理方法,包括:

获取起呼消息;

若所述起呼消息为串接长消息,则将所述串接长消息的所有分片进行缓存;

在所述串接长消息的所有分片缓存完成后,发送一条计费消息到计费中心;

在收到所述计费中心反馈的扣费成功消息后,将所述缓存的所有分片顺序发送。

其中,上述串接长消息的处理方法中,若所述起呼消息为串接长消息,则将所述串接长消息的所有分片进行缓存的步骤包括:

将所述串接串接长消息的所有分片缓存入第一数组的多个第一数据区中;

将所述多个第一数据区的第一索引缓存入第二数组的多个第二数据区中;

将所述多个第二数据区的第二索引缓存入一哈希表中。

其中,上述串接长消息的处理方法中,所述分片的消息头中包括:长消息参考号、串接消息的总片数和当前分片序号;

其中,长消息参考号在同一个长消息的不同分片中是相同的,所述哈希表以所述起呼消息的主叫、被叫和长消息参考号合并后的字段作为键值。

其中,上述串接长消息的处理方法中,在所述串接长消息的所有分片缓存完成后,发送一条计费消息到计费中心的步骤包括:

在所述第一数组的一第一数据区中缓存分片的插入时间信息;如果所述时间信息大于一预设超时时间,则删除所述串接长消息缓存的所有分片;

在具有相同的主叫、被叫和长消息参考号合并后的字段的多个分片中,如果缓存入第一数组的分片数和所述分片的消息头中的串接消息的总片数相同,则确定所述串接长消息的所有分片缓存完成;

在所述串接长消息的所有分片缓存完成后,发送一条计费消息到计费中心。

其中,上述串接长消息的处理方法中,将所述缓存的所有分片顺序发送的步骤包括:

在具有相同的主叫、被叫和长消息参考号合并后的字段的多个分片中,按照分片的消息头中当前分片序号从小到大的顺序发送所有缓存的分片。

其中,上述串接长消息的处理方法中,按照分片的消息头中当前分片序号从小到大的顺序发送所有缓存的分片的步骤包括:

查找当前分片序号最小的分片开始下发,在当前分片下发成功后,删除第一数组中的该条分片,再发送下一条分片,若当前分片最终发送失败,则删除所述第一数组中当前具有相同的主叫、被叫和长消息参考号合并后的字段的所有缓存的分片。

其中,上述串接长消息的处理方法中,还包括:

在当前分片发送失败,删除所述第一数组中当前具有相同的主叫、被叫和长消息参考号合并后的字段的所有缓存的分片后,发送补款消息给计费中心。

本发明的实施例还提供一种串接长消息的处理装置,包括:

接收模块,用于获取起呼消息;

处理模块,用于若所述起呼消息为串接长消息,则将所述串接长消息的所有分片进行缓存;

发送模块,用于在所述串接长消息的所有分片缓存完成后,发送一条计费消息到计费中心;并在收到所述计费中心反馈的扣费成功消息后,将所述缓存的所有分片顺序发送。

其中,上述串接长消息的处理装置中,所述处理模块包括:

第一处理单元,用于将所述串接长消息的所有分片缓存入第一数组的多个第一数据区中;

第二处理单元,用于将所述多个第一数据区的第一索引缓存入第二数组的多个第二数据区中;

第三处理单元,用于将所述多个第二数据区的索引缓存入一哈希表中。

其中,上述串接长消息的处理装置中,所述分片的消息头中包括:长消息参考号、串接消息的总片数和当前分片序号;

其中,长消息参考号在同一个长消息的不同分片中是相同的,所述哈希表以所述起呼消息的主叫、被叫和长消息参考号合并后的字段作为键值。

其中,上述串接长消息的处理装置中,所述发送模块包括:

第一判断单元,用于判断所述串接长消息的分片缓存是否超时,在所述第一数组的一第一数据区中缓存分片的插入时间信息;如果所述时间信息大于一预设超时时间,则删除所述串接长消息缓存的所有分片;

第二判断单元,用于判断所述串接长消息的所有分片是否缓存完成,在具 有相同的主叫、被叫和长消息参考号合并后的字段的多个分片,如果缓存入第一数组的分片数和所述分片的消息头中的串接消息的总片数相同,则确定所述串接长消息的所有分片缓存完成;

第一发送单元,用于在所述串接长消息的所有分片缓存完成后,发送一条计费消息到计费中心。。

其中,上述串接长消息的处理装置中,所述发送模块还包括:

第二发送单元,用于将具有相同的主叫、被叫和长消息参考号合并后的字段的多个分片,按照分片的消息头中当前分片序号从小到大的顺序发送所有缓存的分片。

其中,上述串接长消息的处理装置中,所述发送模块的第二发送单元包括:

第一执行单元,用于查找当前分片序号最小的分片开始下发;

第二执行单元,用于在当前分片下发成功后,删除第一数组中的该条分片,再发送下一条分片,若当前分片发送失败,则删除所述第一数组中当前具有相同的主叫、被叫和长消息参考号合并后的字段的所有缓存的分片。

其中,上述串接长消息的处理装置中,所述发送模块还包括:

第三发送单元,用于在当前分片发送失败,删除所述第一数组中当前具有相同的主叫、被叫和长消息参考号合并后的字段的所有缓存的分片后,发送补款消息给计费中心。

本发明的有益效果是:

本发明提供的一种串接长消息的处理方法及装置,能够保证串接长消息按照顺序下发到被叫用户,解决了现有技术中被叫用户接收到的串接长消息可能存在乱序的问题。

此外,在长消息按照多条分片进行下发时,保证用户按照单条消息进行扣费和补款,并且仅在被叫用户收到串接长消息所有分片的情况下,才对用户进行扣费。如果有任何分片发送失败,则发送一条补款消息到计费中心,保证被叫用户在未收到消息的情况下,可以补回用户先前扣除的费用,提升了用户使用体验。

附图说明

图1为本发明实施例的串接长消息的处理方法的流程示意图;

图2为本发明实施例中将串接长消息进行分片并缓存的流程示意图;

图3为本发明实施例的分片缓存的结构框图;

图4为本发明实施例中将串接长消息分片按序下发的流程示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供本实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本发明针对现有技术中,在进行长消息的发送时,用户可能接收到乱序的长消息分片,并且在被叫用户可能未收到消息的情况下也要被扣费的问题,本发明的实施例提供了一种串接长消息的处理方法及装置,保证串接长消息按照顺序下发到被叫用户,并且串接长消息按照单条消息进行扣费和补款,仅在被叫用户收到串接长消息所有分片的情况下,才对用户进行扣费,有任何分片发送失败的情况下都不对用户进行扣费。

本发明的实施例提供了一种串接长消息的处理方法,如图1所示,该串接长消息的处理方法包括:

步骤S11、获取起呼消息;

步骤S12、若所述起呼消息为串接长消息,则将所述串接长消息的所有分片进行缓存;

步骤S13、在所述串接长消息的所有分片缓存完成后,发送一条计费消息到计费中心;

步骤S14、在收到所述计费中心反馈的扣费成功消息后,将所述缓存的所有分片顺序发送。

具体地,在上述串接长消息的处理方法中,如图2和图3所示,步骤S12包括:

S121、将所述串接长消息的所有分片缓存入第一数组3的多个第一数据区5中;

S122、将所述多个第一数据区5的第一索引缓存入第二数组2的多个第二数据区4中;

S123、将所述多个第二数据区4的第二索引缓存入一哈希表1中。

在实际应用中,短消息中心获取的串接长消息包括有消息头,其中,消息头中包括:长消息参考号、串接消息的总片数和当前分片序号。另外,长消息参考号在同一个长消息的不同分片中是相同的,并且哈希表1以起呼消息的主叫、被叫和长消息参考号合并后的字段作为键值。

例如,如图3所示为本实施例的分片缓存的结构框图。短消息中心在获取起呼消息后,如果该起呼消息为串接长消息,则将串接长消息的所有分片进行缓存。首先以起呼消息的主叫、被叫和长消息参考号合并后的字段作为键值,查找哈希表1中是否为无效值,如果是无效值,则判断该条分片是未缓存的长消息的分片,在第一数组3的多个第一数据区5中分配一个数据区用于缓存该分片,并将第一数组3中该数据区的索引j缓存入第二数组2的多个第二数据区4的其中一个数据区,然后将该第二数组2中该数据区的索引i缓存入哈希表1中。接着,在缓存同一长消息的其他分片时,按照以起呼消息的主叫、被叫和长消息参考号合并后的字段作为键值,查找哈希表1中的第二索引i,根据第二索引i查找对应的第二数组2中的第二数据区4,然后把该条分片缓存入第一数组3中的一个第一数据区5,并把该第一数据区5的索引k缓存入第二索引i对应的第二数据区4中。此外,第二数据区4中缓存的对应于第一数据区5的索引应按照当前分片序号从小到大的顺序排列。以此步骤完成同一长消息所有分片的缓存,并且在具有相同的主叫、被叫和长消息参考号合并后的字段的多个分片,如果缓存入第一数组3的分片数和所述分片的消息头中的串接消息的总片数相同,则确定所述串接长消息的所有分片缓存完成。在判断串接长消息的所有分片缓存完成后,发送一条计费消息到计费中心。

此外,在进行串接长消息的缓存时,在第一数组3中分配一个数据区5用于存储缓存插入的时间。系统设置串接长消息的缓存超时时间(例如为1分钟)。设置一个秒定时器,每秒都是去扫描长消息缓存中的插入时间,将缓存插入时间和超时时间做比较,如果超过了设置的串接长消息的缓存超时时间后串接长消息还未缓存完成,则删除这个串接长消息的所有分片,当作失败处 理。

此外,在上述串接长消息的处理方法中,如图4所示,步骤S14包括:

S141、查找当前分片序号最小的分片开始下发;

S142a、若当前分片下发成功,则删除第一数组3中的该条分片,再发送下一条分片;

S142b、若当前分片发送失败,则删除所述第一数组3中当前具有相同的主叫、被叫和长消息参考号合并后的字段的所有缓存的分片。

具体地,在收到计费中心反馈的扣费成功消息后进行终呼时,以主叫、被叫和长消息参考号合并后的字段为键值,查找哈希表1中的第二索引,按照分片的消息头中当前分片序号从小到大的顺序发送所有缓存的分片,即按照对应的第二数据区4中第一索引的排列顺序进行下发。如果当前分片下发成功,则删除第一数组3中缓存的该分片信息,并相应删除第二数据区4中对应的第一索引,然后再按序进行下一分片的发送,直到该条长消息的所有分片全部发送成功。如果当前分片最终下发失败,则删除第一数组3中具有当前相同的主叫、被叫和长消息参考号合并后的字段的所有缓存分片,并发送一条补款消息到计费中心。

作为另一种实现方式,在收到计费中心反馈的扣费成功消息后进行终呼时,以主叫、被叫和长消息参考号合并后的字段为键值,查找哈希表1中的第二索引,按照分片的消息头中当前分片序号从小到大的顺序发送所有缓存的分片。在当前分片下发成功后,再按序下发下一分片。在所有分片发送成功后,删除该具有相同的主叫、被叫和长消息参考号合并后的字段的所有缓存的分片。如果在终呼过程中,有当前分片最终下发失败,则删除第一数组3中具有当前相同的主叫、被叫和长消息参考号合并后的字段的所有缓存分片,并发送一条补款消息到计费中心,保证被叫用户在未收到消息的情况下,可以补回用户先前扣除的费用,提升了用户使用体验。

本发明的实施例还提供一种串接长消息的处理装置,与上述串接长消息的处理方法相对应,所述串接长消息的处理装置包括:

接收模块,用于获取起呼消息;

处理模块,用于若所述起呼消息为串接长消息,则将所述串接长消息的所 有分片进行缓存;

发送模块,用于在所述串接长消息的所有分片缓存完成后,发送一条计费消息到计费中心;并在收到所述计费中心反馈的扣费成功消息后,将所述缓存的所有分片顺序发送。

在实际应用中,短消息中心获取的串接长消息中包含有消息头,其中,消息头中包括:长消息参考号、串接消息的总片数和当前分片序号。另外,长消息参考号在同一个长消息的不同分片中是相同的,并且哈希表1以起呼消息的主叫、被叫和长消息参考号合并后的字段作为键值。

例如,接收模块在获取起呼消息后,如果该起呼消息为串接长消息,则处理模块将串接长消息的所有分片进行缓存。首先以起呼消息的主叫、被叫和长消息参考号合并后的字段作为键值,查找哈希表1中是否为无效值,如果是无效值,则判断该条分片是未缓存的长消息的分片,第一处理单元将第一数组3的多个第一数据区5中分配一个数据区用于缓存该分片,第二处理单元将第一数组3中该数据区的索引j缓存入第二数组2的多个第二数据区4的其中一个数据区,然后第三处理单元将该第二数组2中该数据区的索引i缓存入哈希表1中。接着,在缓存同一长消息的其他分片时,按照以起呼消息的主叫、被叫和长消息参考号合并后的字段作为键值,查找哈希表1中的第二索引i,根据第二索引i查找对应的第二数组2中的第二数据区4,然后把该条分片缓存入第一数组3中的一个第一数据区5,并把该第一数据区5的索引k缓存入第二索引i对应的第二数据区4中。此外,第二数据区4中缓存的对应于第一数据区5的索引应按照当前分片序号从小到大的顺序排列。以此步骤完成同一长消息所有分片的缓存,并且在具有相同的主叫、被叫和长消息参考号合并后的字段的多个分片,如果缓存入第一数组3的分片数和所述分片的消息头中的串接消息的总片数相同,则通过第二判断单元确定所述串接长消息的所有分片缓存完成。第一发送单元在判断串接长消息的所有分片缓存完成后,发送一条计费消息到计费中心;

此外,在进行串接长消息的缓存时,在第一数组3中分配一个数据区5用于存储缓存插入的时间。系统设置串接长消息的缓存超时时间(例如为1分钟)。设置一个秒定时器,每秒都是去扫描长消息缓存中的插入时间,第一 判断单元将缓存插入时间和超时时间做比较,如果超过了设置的串接长消息的缓存超时时间后串接长消息还未缓存完成,则删除这个串接长消息的所有分片,当作失败处理。

进一步地,发送模块在收到计费中心反馈的扣费成功消息后进行终呼时,第一执行单元以主叫、被叫和长消息参考号合并后的字段为键值,查找哈希表1中的第二索引,按照分片的消息头中当前分片序号从小到大的顺序发送所有缓存的分片,即按照对应的第二数据区4中第一索引的排列顺序进行下发。第二执行单元在当前分片下发成功后,删除第一数组3中缓存的该分片信息,并相应删除第二数据区4中对应的第一索引,然后再按序进行下一分片的发送,直到该条长消息的所有分片全部发送成功。第三发送单元在当前分片最终下发失败后,删除第一数组3中具有当前相同的主叫、被叫和长消息参考号合并后的字段的所有缓存分片,并发送一条补款消息到计费中心。

作为另一种实现方式,发送模块在收到计费中心反馈的扣费成功消息后进行终呼时,以主叫、被叫和长消息参考号合并后的字段为键值,查找哈希表1中的第二索引,按照分片的消息头中当前分片序号从小到大的顺序发送所有缓存的分片。在当前分片下发成功后,再按序下发下一分片。在所有分片发送成功后,删除该具有相同的主叫、被叫和长消息参考号合并后的字段的所有缓存的分片。如果在终呼过程中,有当前分片最终下发失败,则删除第一数组3中具有当前相同的主叫、被叫和长消息参考号合并后的字段的所有缓存分片,并发送一条补款消息到计费中心,保证被叫用户在未收到消息的情况下,可以补回用户先前扣除的费用,提升了用户使用体验。

本实施例提供的一种串接长消息的处理方法及装置,保证串接长消息按照顺序下发到被叫用户,并且串接长消息按照单条消息进行扣费和补款,仅在被叫用户收到串接长消息所有分片的情况下,才对用户进行扣费,有任何分片发送失败的情况下都不对用户进行扣费。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1