一种实时预测手机通话余额的方法
技术领域
本发明属于移动终端的增值服务领域,具体涉及一种实时预测手机通话余额的方法。
背景技术
随着科技的不断发展,中国手机用户数量不断增加,与此相对应的手机话费的查询业务需求也随着用户数量的上升以及带来的通讯费的增长而增长。手机通话费指手机接听或拨打电话所消耗的话费,不包含短信费和流量费。
目前市面上几种主要的话费统计软件主要通过两种方式来得出手机话费使用情况:
第一,通过发送话费查询短信并接收运营商的返回短信来显示话费使用情况。该方式确切的说只能称作话费查询方法,不能实时的计算和显示当前的话费消费情况,例如,用户打了一个电话出去,该方式无法立即让用户知道或预测这次电话的消费情况。
第二,通过让用户设置自己所使用的套餐来定义计费规则,根据规则和使用的次数或时长来预测扣费情况。这种方式可以比较精确的计算出话费的实时消费情况,但是由于套餐种类非常多,即使程序都能实现所有规则,但最终必须让用户手动确认其中一个为其正在使用的套餐。而恰恰正是这一步必要操作,让很多用户觉得操作麻烦,有的用户甚至也不记得自己的套餐具体型号。最终导致用户体验不好,不易上手,影响软件的广泛推广。
发明内容
本发明就是针对上述背景技术中的不足之处,而提出的一种实时预测手机通话余额的方法,该方法通用、简单、高效,能实时计算出当前通话消费情况,并且用户在这一过程中无需关心套餐的具体类型,避免繁琐的人工设置;精确的预测出每次通话后手机通话费的消耗情况,适应手机在漫游或本市内资费差异导致的费率不同。
尽管手机资费套餐种类多,且复杂。但是也有基本特征可以作为费用预测的基础:中国手机sim卡主要分为3大运营商:中国移动、中国电信和中国联通;它们都提供余额或话费查询业务,也都能通过短信指令查询,且短信查询资费一般免费;尽管套餐有很多种但是大部分的模式是类似的,如在套餐内给定的条件内通话、发短信或上网,资费较低或免费;超出套餐外的通话、短信和资费则是另外一个标准;超出套餐外的资费根据运营商品牌而不一样,但比较统一;套餐结算日根据运营商而不同,但是比较固定,比如中国移动的为每月的1号。
以上仅适用于用户在中国地区使用这三大运营商的情况,不适用于其他国家或地区或其它类型的sim手机卡。
本发明的目的是通过如下技术措施来实现的。
一种实时预测手机通话余额的方法,该方法包括以下步骤:
(1)话费对帐流程,以固定的时间周期频率,重复性的开始话费对账处理流程,用以定期矫正话费余额并收集每个对账周期中的总体通话费用并以多元组的形式写入周期对账资费数据库;
(2)用户打完电话后,触发话费预测流程,首先根据手机的通话记录数据库,取出自上次对账后的通话记录,类型,时长以分钟为单位向上取整并根据类别累加之和,需要计算的就是主叫本地,主叫异地,被动接听这三种类型通话的总费用。
(3)周期对账间的通话余额实时预测,在每次对账之间的空档期,话费余额和实时话费的显示是通过历史资费信息推算而来的,它依赖于步骤(1)对账记录到周期对账资费数据库中的资费多元组;
初始状态下,矩阵A=0,扩展矩阵A ext=0, i=0,i为整数,距离上一次对账这段时间的通话使用情况用行向量β表示,则我们最终需要求出βX即为离上次对账的预测使用话费差值,再根据上次对账的余额即可求出当前的余额实时预测值;具体流程如下:
S1,从周期对账资费数据库中按生成时间从最近到最久顺序,依次取出第i个行向量αi和扩展行向量αext_i,并且需要保证该行向量的秩不为0,即R(αi),否则直接取下一个,直到取出的行向量满足上述条件;
S2,如果数据库中没有符合条件的行向量,则流程结束,该次实时预测失败;若存在一个行向量满足条件,则进入步骤S3;
S3,判断矩阵A与扩展矩阵A ext的秩是否不相等,即R(A)≠R(A ext)若是则流程结束,该次实时预测失败;若否,则进入步骤S4;
S4,判断矩阵A加入行向量αi后的矩阵与原矩阵A的秩是否相差1,即 若否则进入步骤S5;若是则进入步骤S6;
S5,将i=i+1,返回步骤S1;
S6,为了求βX,检验β是否能够用A的所有行向量和αi组成的向量组线性表示,即是否满足若否则进入步骤S7,若是则进入步骤S8;
S7,将行向量αi加入矩阵A的所有行向量组,并且将扩展行向量αext_i加入扩展矩阵A ext的行向量组,即,进入步骤S5;
S8,说明βX有解,即存在,使得;
S9,根据矩阵公式进一步推导即可解 ;
S10,代入即 可求出βX值,其中fi为第i个方程的常数项,即αi X=fi满足R(αi)≠0
;
(4)如果预测成功则实时报账显示给用户,否则直接结束。
上述步骤中使用到的变量含义叙述如下:
矩阵A——消费记录矩阵,即步骤(1)、(3)所述的资费多元组,矩阵A的行向量为相邻两次对账的信息值,具体包含主叫本地、主叫异地、接听、余额变化量;
A ext——矩阵A的扩展矩阵;在矩阵A 进行多次取值后增加矩阵行数,到达可以求解的矩阵;
行向量β——距离上一次对账的通话使用情况,具体包含主叫本地、主叫异地、接听、余额变化量;
βX——离上次对账的预测使用话费差值;
X——根据历史对账记录结合预算模型得到的当前消费情况;
αi——矩阵A的第i个行向量;
αext_i——矩阵A的第i个扩展行向量;
R(αi) ——矩阵A的第i个行向量的秩;
R(A) ——矩阵A的秩;
R(A ext) ——扩展矩阵A ext的秩。
在上述技术方案中,所述步骤(1)的话费对帐流程具体步骤如下
J1,判断用户是否设置手机卡的归属地,运营商、品牌以及套餐允许的短信数量和2G/3G流量,如果用户没有设置则进入步骤J2,否则进入步骤J3;
J2,提示用户设置手机卡的归属地,运营商和品牌,套餐短信数和套餐2G/3G流量;
J3,根据用户设置的套餐类型,归属地查询余额指令数据库,得到运营商的查询话费余额短信的号码和短信指令;
J4,发送余额查询短信,等待并接受运营商返回的短信结果,为了避免给用户造成不便,运营商回来的短信会被自动截获而不展现给用户;
J5,对截获的短信内容进行识别,主要是对余额字段所对应的数据和单位进行识别和提取,例如:10086返回的短信内容:“您的话费余额:可用余额:46.74元 信用额度:0 实时话费:40.48元 历史欠费:0.0元 欢迎登录中国移动。”则程序匹配并提前出46.74为当前话费余额,单位是元;
J6,判断程序是否提取出话费余额,若是进入步骤J7,若否则进入步骤J8;
J7,对账成功,在UI界面展现更新后的余额,进入步骤J9;
J8,对账失败,程序对账流程结束;
J9,从手机通话记录数据库中取出这次对账时间点和上次对账时间点之间的来电、去电以及接听记录的号码和时长信息;
J10,计算两次对账的余额差值;
J11,查询手机号归属地数据库,将来电、去电的号码根据数据库分为本地与异地两大类;
J12,查询手机短信和流量相关的数据库,将短信和流量的资费排除,计算纯通话产生的费用;
J13,将通话记录中的通话时间按向上取整,如3:45按4分钟取整,并将通话记录以本地,异地、接听这三种类型类分并累加,连同余额变化值一起记录到周期对账资费数据库中,记录的信息多元组类似这样:
(10,8,2,10.5)表示10分钟主叫本地,8分钟主叫异地,2分钟接听,扣费10.5元;该多元组存储到本地数据库中作为实时话费预测流程的必要信息。
本发明方法通用、简单、高效,能实时计算出当前通话消费情况,与传统的手机话费查询方式相比,其优点在于:
1. 不需要用户设置过于复杂的套餐规则,只需要设置基本的sim类型和品牌,归属地以及套餐允许的短信条数和流量。
2. 利用过去历史来预测用户通话的实时消费情况,这是该发明的思想核心。特别是尽量采用最近的话费消费情况来计算,充分考虑到了套餐资费的消费特点,使得实时预测通话费用的精度较高。
3. 定期的对账功能能将误差控制在合理的、比较小的范围内,避免了发送扣费短信、手机充值、运营商结算等余额突变造成的失真。并且由于运营商查询话费短信免费、快捷使得这一功能对用户可以接受。
4. 考虑到了手机异地漫游的情景,只要手机不是频繁的由本地状态切换到异地漫游状态,该算法都能很好的兼顾不同的场景。
附图说明
图1是本发明实施例实时预测手机通话余额的方法的整体步骤流程图。
图2是本发明实施例中话费对帐阶段的步骤流程图。
具体实施方式
下面结合附图及实施例对本发明作进一步的描述。
如图1所示,本实施例提供一种实时预测手机通话余额的方法,该方法包括以下步骤:
(1)话费对帐流程,以固定的时间周期频率(如每隔4小时,可设置),重复性的开始话费对账处理流程,用以定期矫正话费余额并收集每个对账周期中的总体通话费用并以多元组的形式写入周期对账资费数据库;
(2)用户打完电话后,触发话费预测流程,首先根据手机的通话记录数据库,取出自上次对账后的通话记录,类型,时长以分钟为单位向上取整并根据类别累加之和,需要计算的就是主叫本地,主叫异地,被动接听这三种类型通话的总费用,即βX;
(3)周期对账间的通话余额实时预测,在每次对账之间的空档期,话费余额和实时话费的显示是通过历史资费信息推算而来的,它依赖于步骤(1)对账记录到周期对账资费数据库中的资费多元组;首先,要计算的是通话完毕后的话费余额,并且已知上次对账的余额,所以需要求出自上次对账以来这段时间所使用话费,即流程中的βX,其中β为行向量。然后依次从周期对账数据库中取出最近时间生成的一个多元组按照周期对账间的通话余额实时预测流程进行处理。有四种可能情况出现:
情况1,取出的多元组能够计算出βX,则将通话后的余额直接展现给用户;
情况2,取出的多元组条件信息还不足以计算出βX,则需要进一步取更多的多元组;
情况3,取出的多元组导致矩阵计算无解,则提前结束流程,预测失败;
情况4,没有更多的多元组取出,则提前结束流程,预测失败;
导致情况2出现的原因主要是历史记录的信息太少不足以预测本次通话后余额,比如以前记录的主要是接听和拨打本地的号码,这次用户主动拨打了一个异地的号码,需要进一步获取历史数据;
导致情况3出现的原因主要是不明费用的消耗,比如扣费短信,充值,月租扣费,运营商的某些业务计费规则特殊等情况。这些因素导致的费用很难提前计算出来,它们会导致矩阵方程算出无解;
导致情况4出现的原因是历史记录不够或不足以本次余额的预测;
由于没有历史数据借鉴,自然也无从知道本次通话后的余额。但是由于有周期性的对账机制,程序会将历史记录和费用存储到数据库中,不断完善和充实资费记录使得让下次预测更加成功和准确。
其具体的周期对账间的通话余额实时预测计算方法如下:
初始状态下,矩阵A=0,扩展矩阵A ext=0, i=0,i为整数,距离上一次对账这段时间的通话使用情况用行向量β表示,则我们最终需要求出βX即为离上次对账的预测使用话费差值,再根据上次对账的余额即可求出当前的余额实时预测值;
S1,从周期对账资费数据库中按生成时间从最近到最久顺序,依次取出第i个行向量αi和扩展行向量αext_i,并且需要保证该行向量的秩不为0,即R(αi),否则直接取下一个,直到取出的行向量满足上述条件;
S2,如果数据库中没有符合条件的行向量,则流程结束,该次实时预测失败;若存在一个行向量满足条件,则进入步骤S3;
S3,判断矩阵A与扩展矩阵A ext的秩是否不相等,即R(A)≠R(A ext)若是则流程结束,该次实时预测失败;若否,则进入步骤S4;
S4,判断矩阵A加入行向量αi后的矩阵与原矩阵A的秩是否相差1,即若否则进入步骤S5;若是则进入步骤S6;
S5,将i=i+1,返回步骤S1;
S6,为了求βX,检验β是否能够用A的所有行向量和αi组成的向量组线性表示,即是否满足若否则进入步骤S7,若是则进入步骤S8;
S7,将行向量αi加入矩阵A的所有行向量组,并且将扩展行向量αext_i加入扩展矩阵A ext的行向量组,即,进入步骤S5;
S8,说明βX有解,即存在,使得;
S9,根据矩阵公式进一步推导即可解
;
S10,代入即 可求出βX值,其中fi为第i个方程的常数项,即αi X=fi满足R(αi)≠0
;
(4)如果预测成功则实时报账显示给用户,否则直接结束。
在上述技术方案中,如图2所示,所述步骤(1)的话费对帐流程具体步骤如下
J1,判断用户是否设置手机卡的归属地,运营商、品牌以及套餐允许的短信数量和2G/3G流量,如果用户没有设置则进入步骤J2,否则进入步骤J3;
J2,提示用户设置手机卡的归属地,运营商和品牌,套餐短信数和套餐2G/3G流量;
J3,根据用户设置的套餐类型,归属地查询余额指令数据库,得到运营商的查询话费余额短信的号码和短信指令;
J4,发送余额查询短信,等待并接受运营商返回的短信结果,为了避免给用户造成不便,运营商回来的短信会被自动截获而不展现给用户,该机制在绝大部分智能手机系统中都能实现;
J5,对截获的短信内容进行识别,主要是对余额字段所对应的数据和单位进行识别和提取,例如:10086返回的短信内容:“您的话费余额:可用余额:46.74元 信用额度:0 实时话费:40.48元 历史欠费:0.0元 欢迎登录中国移动。”则程序匹配并提前出46.74为当前话费余额,单位是元;
J6,判断程序是否提取出话费余额,若是进入步骤J7,若否则进入步骤J8;
J7,对账成功,在UI界面展现更新后的余额,进入步骤J9;
J8,对账失败,程序对账流程结束; 对账失败的原因有几种,比如运营商没有返回短信结果、余额查询指令错误、短信结果的格式内容不兼容导致的识别失败等。需要说明的是,如果识别失败,会导致周期对账资费数据的元素得不到更新,会直接影响到实时话费预测的成功和准确性;
J9,从手机通话记录数据库中取出这次对账时间点和上次对账时间点之间的来电、去电以及接听记录的号码和时长信息;
J10,计算两次对账的余额差值;
J11,查询手机号归属地数据库,将来电、去电的号码根据数据库分为本地与异地两大类;对于去电需要区分目的号码的归属地与本机的归属地是否是一致,即分为主叫本地和主叫异地两大类,主叫本地意味着自己的号码和对方的号码在一个地方区域,如都是湖北武汉的号码,主叫异地则相反,如自己的号码是武汉,而目的号码是北京。这里并不区分本地手机是否处于漫游状态,因为漫游状态的主叫和被叫都是相对固定的费率,只要手机不是经常性的切换实际地理位置,那么预测该费用是和手机是否漫游没有太大关系;
J12,查询手机短信和流量相关的数据库,将短信和流量的资费排除,计算纯通话产生的费用;
J13,将通话记录中的通话时间按向上取整,如3:45按4分钟取整,并将通话记录以本地,异地、接听这三种类型类分并累加,连同余额变化值一起记录到周期对账资费数据库中,记录的信息多元组类似这样:
(10,8,2,10.5)表示10分钟主叫本地,8分钟主叫异地,2分钟接听,扣费10.5元;该多元组存储到本地数据库中作为实时话费预测流程的必要信息;这里没有考虑短信、彩信和流量造成的费用变化情况,只考虑通话的资费变化。短信和流量通过用户预设值的套餐短信数和流量值来计算,一般而言超出套餐外的短信数和流量值的资费标准是非常统一和固定的,比如短信套餐外的是0.1元每条,流量根据运营商有所区别,一般是1元每兆字节,这样我们可以直接将短信和流量费用单独计算出来,排除话费预测的干扰。