主页‎ > ‎UMS系统‎ > ‎

常见技术问题(UMS 1.x)

网关协议

1你们系统支持SMPP协议吗?

答:支持SMPP协议3.33.4,可以与短信息中心直连。

2系统连接到SMSC需要注意哪些问题?

答:需要注意的是在<authentication>中的配置。这些配置需要按照SMPP中的bind指令来设置如下几个数值:<system_id><system_type><password><interface_version>等等。另外一个需要注意的是,这个时候不支持群发和计费字段。如果使用了群发方式,那么将只有第一个号码会接收到短信息。

3亚信的网关做过升级吗?

答:在20023月底到4月份初间,亚信的网关的确发生过变动。当时并没有立即通知所有的SP,随后才通知各家SP下载新的API并升级。主要的变化是在Login部分的MD5算法上。我们的系统对此比较敏感,我们及时发现并及时做了修正。

    现在新的亚信系统已经将发送连接和接收连接进行了合并工作,其基本模式已经和标准CMPP模式没有什么差别。

4在完成与东大Nokia系统兼容的时候,你们做了哪些处理?

答:东大NokiaSMIAS短信息系统所使用的协议与中国移动的CMPP协议差异比较大,但是从功能的角度来考虑,差异还是比较小的。可以说SMIAS系统是CMPP协议的一个扩展。我们按照以下原则来实现协议间的转换:(1)实现所有CMPP所应该支持的功能;(2)在处理CMPP_SUBMIT_RESPONSE的时候,SMIAS系统可以具体的返回某个号码发送失败的原因。但是CMPP协议本身没有安排这个部分。因此这个在做协议转换的时候被丢弃,但是日志文件中可能存在(如果打开了日志文件);(3SMIAS中使用了message_mode这样一个混合功能的字段。我们按照它的功能做了比较完备的处理。从功能上保证两者之间没有差异。

5在你们的系统中,东大Nokia的网关为什么会有两种?

答:东大NokiaSMIAS系统支持三种方式连接到网关:发送、接收和收发。然而,收发通道一般是不可能与其他的另外两种类型并存的。看过SMPP我们就知道,要么单独的发送与接收,要么就是收发。考虑到不可能多种情况同时启动,因此我们将Nokia的网关分成两种。一种是收发分离,另外一种是收发在一个通道上。但是一般正式运行后,就采用收发分离的方式。只有在测试阶段可能会使用收发在一个通道上进行。

6用户名和密码都正确,但是为什么还返回SP认证错?

答:如果您在网关的相关注册数据才完成过修改,那么网关当时将无法接纳你。除非它重新启动,重新启动网关后再试!

7我发送了带收条的短信息,为什么接收不到收条?

答:如果是本地的收条,应该是很快的。异地的收条比较慢,因此不可能立即就收到。另外,可能网关此时对收条的支持并不完善。

9要收条需要交钱吗?

答:中国移动一般来说是发方收费,因此发送收条的时候总有一方付费。要么用户付,要么发送方替用户付。具体情况请与当地移动核对。

10我收到的收条中的status内容很多,我怎么判断?

答:可以根据以下的情况来判断:

发送成功:DELIVRED

等待发送:ENROUTEACCEPTED

发送失败:EXPIREDDELETEDUNDELIVERABLEUNKNOWNREJECTED

11你们系统支持SGIP协议吗?

答:我们的系统支持联通的SGIP 1.2协议。

12你们的系统支持CMPP 3.0吗?

答:支持。其实CMPP 1.2CMPP 2.0,对SP没有明显的影响。CMPP3.0影响比较大,我们的系统已经内置了CMPP3.0的支持。

13系统的联通SGIP协议与移动CMPP协议转换规则如何?

答:请参见附录中的表格。

系统安装

1我如何使用jsl

答:先将数据包解压缩到一个目录。然后按照使用说明做修改。注意:路径一定要写全。

2数据库生成后有什么缺省值需要重新设置的吗?

答:需要重新设置的缺省数值如下:

msg_src = 企业代码

src_terminal_id = 特服号码

3在哪儿能够找到Java MailJava Active Frame

答:在java.sun.com可以找到这两个部分。

系统配置

1我如何进行流量控制?

答:修改配置文件中的<gateway>\<connect>标签中的flux属性。该属性是设置流量用的。如果flux小于或等于零,那么系统将不做流量限制(系统会自动选择合适的流量)。如果flux指定的数值大于网关实际支持流量,那么系统将会尽量稳定在网关最大流量上。如果,指定的数值小于系统流量极限,那么系统将按照指定流量工作。

2移动网关要升级,切换端口,我如何配置?

答:(1)如果不是协议方面的变化,那么您可以自己解决这个问题。只需要将<gateway>\<connect>标签中的port属性修改到合适的端口就可以了。(2)如果是协议方面的变化,请及时通知我们!

3我如何修改网关用户名和密码?

答:首先您要通知移动方面配合您的工作。他们在网关那边做了修改之后,然后您再修改配置文件中的<gateway>\<authenticate>中的选项。请注意,有些网关在修改数据后,并不能升效,要等到网关重新启动后才可能升效。

4修改哪些部分的配置需要通知你们?

答:(1)如果您想修改网关中的远程IP地址,即你们想切换主机地址,那么请通知我们。在签定一个变更协议后,我们将提供新的配置文件。(2)如果您修改网关部分的IP地址,那么我们需要根据实际情况来决定。其他部分可以按照使用说明做修改。

5多个网关的配置可以在一套程序里面启动吗?

答:是的,完全可以。这是这个系统的特点。

6系统可以分布式运行吗?

答:是的,完全可以。请参考“启动系统”部分。

7我无法在Linux下启动,老报load config.xml错误!

答:如果config.xml是使用Windows下编制的,在传送到Unix系统后,往往不能够直接使用。请使用dos2unix将文件转换到Unix系统下的格式。

系统运行

1为什么无法启动?

答:您没有正确地配置系统的路径。或者说,您没有在classpath中正确地指定SimpleTeam.jar的路径。请在classpath中增加该配置。

    一般来说,在安装完成后,系统下会有启动系统用的startup.bat或者startup.sh。根据操作系统的情况来选择命令就可以了。

2系统无法启动显示:Address already in bind

答:有其他程序占用了远程管理端口或XML端口,请修改配置然后重新启动。例如:您使用同一个配置文件启动了两个SMSG-1系列。

3系统运行了一段时间就自动退出,然后就再也启动不了。

答:系统退出的原因有这么几种情况:(1)系统内部Bug;(2)系统运行达到极限,JVM不正常;(3IP路由出错,系统无法获得Licence(系统每30分钟自动检查一次Licence)。如果这个时候有Log记录,请先打开Log文件,查看最后的记录是否有checkLicence: unexpected exit !的字样,如果有那么可以肯定是(3)。一般遇到这种情况请及时通知我们。

4系统不发送了,新插入一条也不发送。

答:(1)请检查该条信息指定了网关没有,该网关名称是否属于该系统所支持的范围。(2)请检查该网关当前是否处于工作状态。(3)检查程序是否被鼠标给锁定。(4)重新启动系统,看是否能够发送,如果还不行,请通知我们。

5系统有重发机制吗?

答:是的,系统没有重发机制。最主要的原因是:因为发送得到的结果是千差万别,单纯的系统定时重发,有时候会导致一些意向不到的问题。我们的建议是人工审核后,再决定重发于否。

6系统的发送效率有多高?

答:如果单从简单的传送数据来说,系统可以达到每秒150条的速度。但是这个并不一定能够得到网关的响应。因此,系统有一套自稳定机制,可以自动判断流量的大小,并尽量稳定在该状态上。所以说,发送效率还是要取决于网关。

7系统的发送效率怎么只有8/秒左右?

答:如果系统开着屏幕Logo,那么将消耗大量的CPU资源,同时由于等待屏幕输出的响应而输出速度急剧下降。请使用screen off关闭屏幕Logo

8如果网关停止工作,你们是如何处理的?

答:如果网关停止工作,那么不影响其他的网关。那么系统将不再从数据库提取发向该网关的数据。并且,网关将反复重试连接(如果异常的时间太长,那么还要通知管理员),一旦接通将继续发送数据。

9我发送了短消息,为什么收不到?

答:这个问题比较复杂,涉及好几个方面。如果该条短消息已经得到网关的接收确认,例如:msg_id不是缺省值,ih_processcmpp_submit_successih_result0,那么就可以认为提交短信息已经成功,后面的问题就很难说了。短消息一旦出了我们的系统就不再受我们控制。如果您想确保知道问题的原因,请在发送短信息的时候要上收条。

10系统为什么会反复重试连接?

答:系统反复重试连接的主要原因来自于与网关的连接被中断了。例如:路由错误、网关临时关闭等等方面。这个是没有关系的,等连接恢复了系统会自动恢复发送。

11短信息发送不出去了,我该怎么办?

答:这个原因比较复杂,包含了多个方面。其中常见的一种情况是在填写数据库的时候没有指定ih_gateway的值,或者指定成错误的数值。另外一种情况是无法连接到移动的网关。再就可能是运行在Windows环境的时候,鼠标不小心将控制台给锁住了。这种情况下,你可以使用回车来消除。最后可能是程序本身的问题,请及时通知我们(或者重新启动程序)。

12为什么系统在连接数据库的时候总是报错?

答:JDBC在连接数据库的时候,其实也是使用Socket连接来实现的。因此,如果系统自身带有防火墙那么很可能会拒绝这个连接。因此需要重新设定防火墙的机制。

13如何使系统在后台运行?

答:在Windows环境下,请参考“如何使Java程序成为NT Service”;在Unix环境下,只需要在命令行的最后加上“&”字符就可以了。

14系统提示无法连接IO,但是我在本地是能够连接上网关的,这是什么原因?

答:无法连接IO说明系统从服务器上无法连接到网关。无法连接到网关的原因很多,如果在本地是可以连接上网关,但是通过该服务器确无法访问,那么说明服务器所在的网络无法与网关建立连接。

15在连接短信息中心的时候,返回消息队列满的错误提示,这是什么意思?

答:短消息中心的处理能力不是十分强,再因为其工作模式的要求,因此需要一个消息队列作为缓冲。如果该队列满,则直接返回队列消息满的错误提示。此时需要重新发送该消息。

数据库接口

1 JDBC速度快吗?我们测试最多只能达到38/秒的插入速度。再也上不去了。

答:JDBC速度还是比较快的。一个JDBC连接可能在38/秒。但是多个JDBC连接就可以超过这个速度。我们对系统做过优化与调整,普通配置的情况下可以支持100/秒的插入速度。这个速度足够用了。

2数据库系统的负载大吗?

答:在数据交换繁忙的时候,数据负载比较大。我们做过一项测试:CMPP网关模拟器、数据库、短信息系统分布在不同的服务器上。而且后端还接着XML客户端做全面的测试。在XML客户端每秒钟发送100/秒的时候,系统每秒种能向模拟器发送50多条。该服务器负载为30%左右。数据库负载在30%80%之间跳跃。CMPP网关模拟器在80%左右。在空载的时候,系统消耗只有3%左右。

3可以在表中增加字段吗?

答:可以的,我们使用的是名字确认方式。因此增加字段对系统没有影响。但是要注意,该字段缺省状态不要与系统冲突,这样容易造成系统的数据库错误。

4你们的数据表字段太多,我们需要填写每个部分吗?

答:我们的数据库字段是比较多,但是不必要填写每个部分。其实我们中的大部分都有缺省的数值,只有少部分需要填写。其实如果只是要简单地发送文本短信息,那么就只需要填写两个字段:dest_terminal_id(目标手机号码)和msg_content(内容)。很多部分都已经在数据库中有缺省的数值。

5我使用ODBC来启动,怎么会报错?

答:我们不支持ODBC的启动方式,主要原因:(1)由于JDBC-ODBC的过渡会造成效率降低;(2)有些特殊的转换函数会在ODBCSQL语句中失效。

6我怎么从收条中知道是哪条短信息的收条吗?

答:一般来说在msg_mr字段中就是与先前发送的cmpp_submit表中的msg_id相对应。如果不完全相等,那么低16位(bit)应该相等。不同的网关在该点上处理有所不同。

7我在PL/SQL Plus中输入了插入了一条数据,但是系统并没有发送,这是为什么?

答:可能忘记了提交数据。请在PL/SQL Plus中输入提交命令:commit

8这种模式在系统死机或突然停电的情况下是不是会丢失数据?

答:会,在缓冲区中的就会丢失。但是一般缓冲区不能开得太大。一般只要有1到2个可以缓冲就足够了。这样丢失的数目相对就很少,下次启动的时候还可以继续工作。如果你确信需要高速工作的时候,才需要将缓冲区开得比较大。

9在下发短信后正在等待收条的时候,这条短信保存在什么地方?

答:短信息在文件中。有超时控制。

10短信在移动的网关中是24小时有效的,用户在24小时内开机就会收到,这样的话,我们在群发的时候会有大量的短信暂收不到收条,全存在文件中?

答:是的。所以要准备一个大硬盘。24小时一过,就自动删除了。并且系统自动按照TIMEOUT返回收条。这个功能系统是有的。

系统测试

1如何检测与网关的物理链路?

答:请使用telnet命令来检测。例如:telnet 214.106.231.45 7890。如果能建立连接,而且连接能够保持,那么就说明物理链路是通畅的。否则,则可能不通。有些网关需要双向验证,例如:上海英斯克的网关。如果自己的系统带防火墙就需要注意这个问题。

2如何检查MO信息是否到达网关呢?

答:在没有移动网关管理人员的参与下,是无法确认该情况的。但是我们在独立测试的时候可以采用一种间接的方法来做到:在发送短信息的时候,选择“状态报告”一项。如果在发送短信息完成之后,短信息中心能够回复“发送成功”的话,那么说明短消息已经到达网关,否则就有丢失的可能。

3怎样检测MO信息是否到达系统呢?

答:请打开日志文件,并设置成LOG_ALL状态。在测试过程中,可以通过查询日志文件中是否存在cmpp_deliver字段来判别。或者通过远程控制台的状态报告来查看是否得到MO信息。

4网关在做计费测试的时候报错:无法产生03话单。怎么办?

答:请不要使用fee_user_type = 3来做计费。虽然简便,但很多网关并不支持。

5系统既不能MO,也不能MT,什么原因?

答:这个原因比较复杂。很可能是短信息中心没有将相关的资料记录下来,造成短信息无法被发送。

6系统可以MT但是不能MO,这是什么原因?

答:一般这种情况比较少见。最近中国移动在做CMPP 2.0的升级以及MO全网通的测试。因此可能会对MO有一定的影响。最好是向移动技术人员询问,并通过实际测试跟踪来确认。

8在发送的时候要了收条,但是长时间没有回应。

答:(1)网关不一定支持;(2)接收方没有开机;(3)接收方非本地用户;(448小时内才可能有回条。

9为什么发送短信息总是不成功?

答:(1)检查接收放是否为神州行,目前神州行还不能享受梦网服务;(2)检查ih_gateway是否与当前网关名称相对应;(3)检查当前网关是否工作正常;(4)检查相关字段是否填写正确。

10收条的字段是乱的,怎么回事情?

答:收条的处理的确比较混乱。很可能该收条不符合CMPP标准。请及时通知我们。

11我怎么来完成移动的测试啊!

答:请根据第七章的指导来完成。不过请先仔细阅读第六章的内容,并实际使用一下再开始。

12为什么无法群发?

答:各个网关的群发情况不大一样。东大Nokia的网关支持255个人一组的群发,清华深讯支持30个人一组的群发,亚信的网关升级后只支持2个人一组的群发,MISC系统不支持群发。因此,根据所连接的网关实际情况来控制一次群发的数目。超过该数目网关将会抱错。

系统日志

1如何查看系统日志?

答:系统日志与系统的工作与包传送方式密切相关。系统日志中对各个步骤做了详细说明,请参看日志中的说明。当然,由于很多线程在一起工作,因此记录在次序上有些混乱。

2现在MTMO是否分开记录?

答:目前还不支持。

3记录文件每天生成一个?

答:是的。以当天的时间来命名开头:YYYYMMDD.log

4过时的记录文件可以删除吗?

答:如果没有保留的必要的话,请删除这些文件。请勿删除当天的log文件,否则可会引起系统异常。

5记录文件一般有多大?

答:系统的记录文件看发送量的频繁程度。一般一天2M3M是很正常的。

6我如何查看记录中数据包以及响应的情况?

答:在Windows下可以输入:find “cmpp_submit” xxxxxxxx.union.log

    Unix系统下可以输入:cat xxxxxxxx.union.log | grep cmpp_submit

    如果没有,则可能没有接收到该类型的数据包。

远程控制

1我在Linux下运行,使用后台运做方式。但是老有字符出来。

答:请使用控制台中的screen off关闭屏幕Log

1我如何控制Log

答:我们已经将Log问题实行了简化。通过远程控制界面就可以控制Log,请看“控制台”部分的详细说明。

2我如何关闭系统?

答:登陆到5000端口,输入shutdown指令就可以关闭系统。

3我如何查看系统状态?

答:登陆到9000端口,输入sog命令。有关状态报告的解析,请看前面关于控制台的介绍。

系统维护

1系统需要哪些平时的维护工作?

答:启动以后,就基本上不用动。只需要定时清理数据库就可以了。有紧急情况,它会eMail通知管理员。

2数据库是否会越来越大?你们有什么方法处理吗?

答:是的,如果长期不清理,数据库的确会越来越大。由于这些部分是最原始的记录,因此我们的程序不删除任何数据内容。因此,希望每天能够在系统空闲的时候清理或者备份数据库。其实过程十分简单,使用几条SQL语句就可以解决这个问题。即使数据库中有50万条记录,对系统的效率没有太大的影响。

3日志文件会越来越多吗?

答:是的,如果长期不清除,可能会占满整个磁盘空间。如果没有必要的话,请删除或者关闭日志。

特殊短信

1如何发送图片和铃声?

答:Nokia的发送方法请见“如何写数据库”部分。其他的为我们另外的技术服务部分。

2你们的系统能够支持图片、铃声吗?

答:能够。我们使用自己的系统已经成功地发送了Nokia的图片和铃声、Motorola的铃声和EMS

3除了图片铃声、我们还要开展新的业务,你们的系统能够支持吗?

答:我们的系统完全按照移动运营商所提供的协议来执行。只要是移动运营商协议所能支持的业务,我们的系统就能够支持。那么可以简单地将我们的系统看作一个网卡,我们只负责数据传输,至于数据是娱乐内容还是银行密码都与我们没有太大的关系。

4你们的系统支持EMS吗?

答:我们的系统是支持EMS的。由于EMS需要对用户数据头有自由控制的权利,因此具体发送情况还与具体的网关有密切的关系。我们自己在天津亚信的网关与上海英斯克的网关上做过测试,使用Motorola 388Erisson T68都成功地接收了EMS

5系统可以接收图片和铃声的短信息吗?

答:当然可以。我们是binary的方式处理短信息。因此文本和其他类型的数据都是同等对待。

开发编程

1系统支持手机号码自动路由吗?

答:SMSG支持主动路由和被动路由两种模式。主动路由是指在信息包里面指明了destination。被动路由模式是按照配置文件中的路由表来工作的。

2我可以用该系统做二次开发吗?

答:从技术的角度上来说是没有问题的。但是我们一般不公开该接口。您可以使用HTTP/FTP/SMTP/Telnet或短信息协议类与我们的平台通讯。

3我想做互动游戏如何保证系统的实时性呢?

答:现在这个系统支持子号码路由,可以将游戏节目单独分解出来。

4 CMPP_Submit多长时间算作是超时,然后重发呢?CMPP对此好像没有规定,你们的系统是怎么设置的。

答:超时设置主要是在transmit/receive两个标签中的cache部分的timeout配置。可以灵活调整,缺省是没有超时。

5你们的系统应该都是长连接吧?对于短连接,如何确定超时呢?

答:我们系统所使用的是长连接,目前没有提供短连接。主要是短连接很多网关不支持,而且效率不高,因此我们没有采用。短连接的超时也没有规定。

6我如何获得更多的技术支持?

答:电子邮件到:support@exdata.com.cn。或者访问技术站点:www.simpleteam.com。或者访问技术论坛:http://lyy00.xilubbs.com

7我们自己开发MT的应用程序,但是在开发时不知道如何实现验证,请指教网关对用户验证有什么特别的要求?

答:在独立开发MT应用的时候也同样严格遵循CMPP1.2协议即可。协议中规定了SP接入网关时必须提供经过RD5加密的用户名与密码。

业务知识

    以下问题以上海移动为例子,其他地方可以借鉴。

1什么是服务代码和服务业务代码?

答:服务代码是由中国移动分配给SP的代码。例如143401434,前者表示全国业务,后者是本地业务(网关所在地)。每种服务都有一个服务代码,明确标识此服务的用户范围。

服务业务代码(短信服务代码)是SP自己定义的每一项短信服务的内部代码。例如某SP2种服务,天气预报和体育新闻,设置它们的服务业务代码分别为F001S002(不论字母或数字),它将用于网关和SP自己的程序统计。注册时需要先进行SP的注册(只一次),然后对该SP所有的服务进行注册,n项服务则注册n次。

在填写服务的注册信息时,每种服务都必须有服务代码和服务业务代码。举例如下:

 

SP1接入上海网关开展业务,企业代码909111,服务代码1434

天气预报 服务代码01434,服务业务代码F001(只发给上海手机用户)

体育新闻 服务代码1434,服务业务代码S002(发给全国手机用户)

打折信息 服务代码01434,服务业务代码D003(只发给上海手机用户)

 

另外,取消某种服务不应该作为一项服务而注册

2相关容易混淆的名词

    本地手机——手机所使用的SIM卡和SP在同一区域。

外地手机——手机所使用的SIM卡和SP在不同区域。

本地————SP所在区域。

外地————非SP所在区域。

3关与IP地址与密码、FtpIP地址及账号与密码,请问是我们决定还是由上海移动与网关分配?

答:关于这个问题,需要特别强调,以上数据都是由用户方直接提供的,并不是由上海移动分配或者网关进行分配。请在提交相关数据资料时同时提供这些数据,以保证测试的正常进行。

4请问上海网关对连接数量有没有限制?

答:本来对连接数量不设限制,因为各家SP都会有业务的高峰。但是在实际业务中发现有部分SP建立了过多的无用连接,浪费了网关的资源,不但大大影响了网关为其他SP提供的服务的能力,而且增大了网关的不稳定因素。因此不得不做出规定:每家SP建立的连接数量不能超过15个。

5共有哪几个IP地址,以及对SP业务的有什么影响?

答:在SP接入的过程中,网关需要SP提供3IP地址。1)主叫方(SP)接入IP。该地址用于顺利通过网关的防火墙。2MOIP。该地址用于网关主动发起一个TCP/IP连接,以便传送MO数据包。3FTPIP。该地址用于网关主动发起一个FTP连接,用来传送话单文件到SP指定的目录下。4)网关的IP地址。一是让SP建立CMPP的连接;二是请包把这个地址加到SP方相应的防火墙中,否则网关无法向SP传送任何数据。

有些公司可能有3个不同的IP,当然也有的SP只有一个。但都请明确指出来。还有主叫方的接入IP地址,请尽量不要改动。因为,A)如果经常改动此地址,网关方面就要频繁地修改防火墙配置并重启网关,会导致影响其它SP的正常业务。B)如果SP方的改动因为没能及时通知移动公司并转达给网关,或网关方面的管理人员,没有及时修改。将会使SP的业务被中断。

如何进行MO测试

    以下内容以上海移动为例子,其他地区也可以借鉴。

1什么是MO(Mobile Originate)

答:简言之,MO就是手机发送短消息到SP。具体路径是:手机用户发出MO请求,短信中心收到MO信息转发到网关,网关接收后根据其被叫号码(服务代码)将短信发送给相应的SP或前转到其他网关,SP接到短信数据包,接收数据,更新用户数据库。

2为什么用到MO

答:IOD (Information on Demand) 是许多SP提供的一类重要的短信业务,以天气预报、股票查询等形式出现,这种业务对网关的MO接收和前转的功能提出了进一步的要求,在中国移动“一点接入,全国服务”的口号下,这个功能更是其中的核心部分。

3 MO有几种形式?

答:

MO主要有以下三种形式:

形式一:本地SP接收本地手机用户的MO请求

形式二:外地SP接收本地手机用户的MO请求

4 MO流程

答:

l  SPMO业务必须经过以下步骤:

l  SP告诉接入地移动公司自己的服务代码,请短信中心开出一个服务端口;

l  SP告诉接入地移动公司接收MO短信的主机地址和端口号;

l  SP自己写程序接收MO信息,进行服务;

5 SP的的具体实现一?

答:由本地手机用户向SP发出MO请求,网关接收后根据其被叫号码服务代码,判断是本地的SP,于是按照CMPP协议将该请求送至该SPMO接收端口(需要符合CMPP协议接收)。其中判断被叫号码是决定是否进行前转的标准。(如:被叫号码是02000 [地方服务号],则认为是灵通网)。

6 SP的具体实现二?

答:手机用户向SP发出MO请求,根据MO请求中的被叫服务号码,手机所在地网关接收到短信中心转发过来的MO信息后,会分析服务号码,发现是全国服务号码,于是查询全国SP号码表,可以确定该SP所连接的短信网关,于是将此MO转发至该SP所在地网关,记录转发信息后,流程即结束。

7MO功能的测试策略?

答:由于MO功能牵扯到很多网关和网关与网关之间的问题,所以采用的测试方法是黑盒测试。这样有关网关、网关与网关之间、网关与短信中心之间的问题就可以屏蔽掉。

8如何对MO进行测试?

答:对应于和SP有关的两种MO情况,再分成更详细的情况分别用手机模拟,查看是否能收到所点播的短信。

l  本地手机在本地点播

l  本地手机在外地点播

l  外地手机在本地点播

l  外地手机在外地点播

9如果点播的业务可以收到,可以说测试通过吗?

答:不可以,因为SP的接口不但要满足功能上的正确,而且要满足很高的性能要求。所以在一个手机发送请求接收到之后,不能说接口的MO部分没有问题了。

10如何对SPMO接口的性能进行测试?

答:首先要针对需要测试的SP接口的MO功能制定技术指标,然后根据技术指标进行测试。例如,用本地手机连续发送10条定制信息,查看SP纪录,是否能正确的接收到10条定制信息,是否正确发送了10条所要求的服务;或者用几个手机同时发送定制请求,查看SP纪录正确。

11用本地手机对SP接口MO功能的具体测试步骤?

答:下面以上海手机点播上海灵通网服务为例说明:

l  在手机上输入被叫号码0200002000是灵通网的地方服务号)

l  向灵通发送LSA0031420LS是指铃声,A003是指定哪个铃声,1420是期待接收到定制服务的日期)

l  在所要求发送定制服务的时间,手机应该收到所定制的服务。

12用外地手机对SP接口MO功能的具体测试步骤?

答:下面以用北京手机点播上海灵通网服务为例说明:

l  在手机上输入被叫号码20002000是灵通网的全国服务号)

l  向灵通发送LSA0031420LS是指铃声,A003是指定哪个铃声,1420是期待接收到定制服务的日期)

l  在所要求发送定制服务的时间,手机应该收到所定制的服务。

13测试要注意的问题有什么?

答:测试时有如下问题容易出错:

1)服务号问题。

服务号有两类:全国服务号和地方服务号。全国服务号是全国统一制定,在全国范围内是唯一标示,是不以”0”为开头的;地方服务号是在一个地区范围内统一,在特定范围内是唯一表示,一定是以”0”开头的。

例如”02000”在上海范围内是上海灵通网的服务号,而在北京则可能是另外一家北京的网站。如果要在外地点播上海灵通网的服务,则只能用灵通网的全国服务号”2000”

2)手机所在地的问题。

有人可能会认为本地手机在本地和在外地定制服务对于SP来说是不同的。实际上,这只是对网关的前转和计费产生影响,而测试采用黑盒测试,这个不同的部分对测试是透明的。所以,只要是本地手机定制服务,对SP来说是相同的。同理,外地手机也是一样。

3SP注册问题

SP如果要提供服务,就一定要先注册,否则无法提供任何服务(包括MO服务)。而且,SP所提供的服务项目也要进行注册,没有进行过注册的服务项目是不能使用网络资源的。

14测试出现的情况有几种?

答:测试时有可能出现情况有以下几种:

l  手机发送点播服务的短信不成功

l  手机发送点播服务的短信成功

l  手机正确接收到点播的服务

l  手机没有收到任何点播的服务

l  手机只收到部分点播的服务

l  手机收到乱码

l  手机收到其它信息(不是所点播的服务)

15手机发送点播服务的短信不成功的原因及解决办法?

答:

l  手机故障致使信号无法发出,例如SIM没有插紧。这时请修理手机。

l  信号强度太弱或者有磁场干扰,这时请找一个信号强度大没有干扰的地方测试。

l  短信中心没有收到点播的短信。

l  短信中心收到点播的短信,但是手机没有收到短信中心发出的Acknowledge信号。

出现后两种情况,请重试。如果重试若干次还不能成功发送,则请联系短信中心有关人员。

16手机不能接收点播的服务的原因及解决办法?

答:

l  SP没有注册

l  所点播的服务项目没有注册

出现上两种情况请到当地的移动局进行注册。

l  SP接口的MO功能部分出现问题。

请检查SP发送短信的纪录,确定是否发送出短信,并和当地短信中心同一短信各字段定义及格式。

l  网关将数据包丢失

按上述步骤检查过后,如还没有问题,那么就是网关出现问题。请联系当地网关技术人员解决问题。

17手机不能接收所有点播的服务的原因及解决办法?

答:

l  如果连续点播多条服务或多个手机同时点播多个服务,但没有全收到,这时请检查SP接收纪录,如果没有接收到全部的请求,或者全部接收到并且全部正确发送出去,这两种情况问题出在网关。请联系当地网关技术人员。

l  如果全部接收到,但没有全部发送,这时问题出现在SP的接口,请提高接口的性能。

18手机收到乱码的原因及解决办法?

答:手机接收到乱码的原因是短信中心对SP发送的短信进行解码出错。这时请联系短信中心的技术人员协定统一编解码的方式。

另有一种情况,为该手机型号不支持所点播的服务。

19手机收到其它信息(不是所点播的服务)的原因及解决办法?

答:

l  检查SP发送短信纪录,是否发送出现错误。如果是,请检查SP发送短信的程序和接口程序。

l  检查SP发送短信纪录,是否发送出现错误。如果不是,请联系当地短信中心和网关的相关技术人员。

20关于MO测试,能不能够介绍比较完整的测试流程以及应该注意的事项?

    答:MO测试由于测试过程中涉及到的参数比较复杂,需要多方面的协调与配合才能够正常的进行MO测试工作。对于SP来说,MO测试主要注意以下几个方面:

1.      用户确保己方已经根据CMPP协议开发了相应的MO监控程序(或者利用我们提供的Java类库中的程序进行测试);

2.      用户确保自己的业务代码已经在当地的短信中心开通(和移动公司确认);

3.      用户方确认移动公司已经把SP的注册资料以及业务代码等开通事务,在网关中进行了注册;

4.      用户确认开通了提供MO点播的IP地址,并且开放了相应的端口号(7900);

5.      以上工作确认后,如果还不能够进行MO点播,请和我们客户服务部联系。

21 MO测试时没有检测到网关发送的数据包,我如何知道问题出在什么地方?

答:这个问题请和我们客户服务部工程师联系,他会帮助你查找问题的关键所在。一般情况下,请首先确认自己的工作,然后提供详细的测试情况,以便于我们发现问题,解决问题。

22我们自己开发MO程序时发现贵网关不支持UDP协议,请问,你们的短连接是什么含义?

答:我们要求SP开通7900端口(短连接),并且在端口运行监控程序。网关发现有该SP的数据,会主动发起连接,并等待连接确认后发送数据包。由于MO信息来自于单个数据源(手机用户),所以每次建立连接时都只传送一个数据包,传送完成后网关主动关闭数据连接。另外,网关的连接是基于TCP/IP协议的,建立的是可靠的连接而不是基于UDP的不可靠连接(请参考CMPP协议)。

23为什么我做了MO点播没有受到任何确认信息?(以上海为例)

答:上海移动公司总共设置了两个短信中心,但是上海移动公司对外宣称的是+8613800210500短信中心,所以上海移动要求我们的网关只接受来自该短信中心MO点播,所以个别用户如果连接其他的短信中心就会导致点播失败。

计费问题

    以下内容均以上海移动为例子,其他地区可以借鉴。

1赠送服务填写方法

答:A赠送给B用户时,源终端(src_terminal_id)填写A用户手机号码,目的终端(dest_terminal_id)填写B用户手机号码。此时,对A用户收取此条短信费用。

2非赠送服务填写方法

答:用户A为自己定制一个服务(点播一条短信),则src_terminal_id为空不填,对dest_terminal_id所填手机号码用户进行收费。

3群发服务的填写方法

答:若src_terminal_id不为空,对此填写的用户手机号码收取所有短信费用。若src_terminal_id为空,则对在dest_terminal_id中填写的每个目的手机号码收取相同的单条费用。

4点播业务等单条计费短信

答:用户当月话单记录中会产生02mt队列。

例如:02mt1, 02mt2, 02mt3….02mtn

计费方式:合计所有MT记录的fee_code的值,做为用户该项业务计费值;

5 PUSH业务(对同一用户当月定制的同一业务)

1. 包月(fee_type=03

A)   每条短信资费类别均填写“03”,在当月话单中产生 03mt 序列;

例如:03mt1, 03mt2, 03mt3, 03mtn

计费方式:cdr_type只有mt时,以第一条记录的fee_code的值,做为用户该项业务计费值;

B)   取消此包月业务时,在当月话单中产生03mt/03mc序列:

03mt1, 03mt2…03mc1

C)   当月中多次定制/取消/定制此包月服务时,在当月话单中产生03mt/03mc交替出现的序列:

03mt1, 03mt2, 03mt3…03mc1, 03mt4,03mt5…03mc2…

计费方式:cdr_type中有的为mt有的为mc时,若MT, MC间隔出现, 则代表有NMC业务, 累计所有MC业务的费用. (若其中出现连续的MC记录,以第一个mc的费用为准, 后面连续的MC费用不计).

2. 封顶类业务(fee_type=04

SP发送短信时,需先发送按条计费的短信(02mt),等该用户此服务发送的短信总数达到一定数量后,发送一条封顶类的短信。

A)   02/04队列(: 02mt1, 02mt2, 04mt3, 02mt4, 04mt5….02mtn)

B)   以最后一个04mt记录的fee_code的值,做为用户该项业务计费值;

6不正确的填写可能导致的问题

针对同一用户定制的同一业务出现收费类型前后不一致的情况:

1.   按条计费(02)的服务,其中出现了包月收费(03),这样会导致:

02mt1,02mt2…02mt4, 03mt1…02mt5…

当月的帐单只合计03mt1出现之前的所有02mt费用。

2.   包月类服务(03),当月出现了按条计费(02)序列

如果03开始的序列中出现02(04), 则只对此02(04)以前的记录进行费用核算

7请问"取消包月请求数据包"用途是什么?

答:用户曾经定制了过包月服务,如果想取消它。则发送一个取消包月的请求,看网关能不能正确响应。

8怎么确认发送"取消包月请求数据包"后,系统是否正确响应?

答:SP在发出的短信的消息体中,Registered_Delivery一项填写“2”;FeeType中填“03”。发给网关后,再读取网关的返回代码,就可以判断出系统是否正确响应(通常返回代码为0时,表示正确)。

9是不是可以把费用记录在Src_terminal_id或者Dest_terminal_id?第三方是什么意思?

答:CMPP中的Src_terminal_ID 一项,原先要求填写的是服务代码,现在还是。

CMPP中除Src_terminal_ID外还有Dest_terminal_ID,后者用于填写收信人的手机号码。网关的处理机制是:

l  Src_terminal_ID为空,则向Dest_terminal_ID收费(所有号码一样收费,若各用户收费不同,则须逐条发送);

l  Src_terminal_IDDest_terminal_ID相同(只有一个号码),则向Src_terminal_ID收费。

l  第三方的赠送问题暂时无法解决。这是CMPP协议的不完善造成的。

发现在使用消息格式为0发送英文,没有问题;而使用消息格式为15发送英文或中英文混合,就有问题。可能是英文长度计算错误,发送n个英文字母,只能收到n/2个?

答:SMSC只发送中文时支持Unicode码,因此所有GB码的短信必须转换成Unicdoe码。在GB码中,英文字母只占1个字节,但在Unicode码中,英文字母占2个字节(高字节填00,低字节不变)。所以中英文混合时,计算字节长度时必须注意。我们提供的Linux API已经实现了转换时计算字节长度的功能。

10 src_terminal_id相关的问题

l  方法中用Src_terminal_id为空来判断是否向发送方收费,如果Src_terminal_id不填,在接收方手机上显示的是什么呢??是显示我们的特服号码(如:1630)吗??

答:可以根据企业代码判别,从而显示特服号如:1630

 

l  假设一个用户预定了股票服务,我们每天早上9:30给他发开市行情,这条短信是由接收者付费。按照你方的规定是Src_terminal_id不填,就是向接收方收费。这时候我们想显示在用户手机的发送号码是:1630110001,其中1630是特服号,11是股票业务码,0001是股票代码。这样做就可以方便用户直接回复到我们的服务上来,请问这个发送号码:1630110001我们可以显示到用户手机上吗??

答:这是与OICQ同样的问题,需要进一步的确定。

 

l  由于我们还在跟其它地区的移动公司合作短信服务,对Src_terminal_id字段我们是这样处理的:是由网易公司发送的短信(如用户定制的短信、发送用户注册密码及一些免费服务 )我们对这个字段中填的是1630;对用户发送给用户的短信(如在主页上进行言语传情发送)这时候这个字段填写的是发送方的号码,这样在接收方的短信中就会显示出发送者的手机号码。经过这段时间的开展,我们觉得这样还是很合理,很方便的。如果不填Src_terminal_id,和这个字段来定义收费方式,可能不是很理想吧。

答:上海短信中心具有被叫号码鉴权的功能,不是什么手机号码都能够填写的,于是只能如此处理。

 

l  这个规定是不是暂时性的。因为CMPP协议中没有规定哪个字段来显示是哪方计费,所以它不是很完善,但是要用其它字段来定义计费方式,也不是一个规范的协议。所以我们想知道这是否是一个临时的规定,也好我们在以后的工作中(还有与其它地区的工作中)做出改变!!

答:的确CMPP中没有明确的定义,但是中国移动计费结算的部分则对计费信息的逻辑完整性提出了较高的要求,这却不是暂时的,具体的解决办法中国移动正在策划出台,我们提供的方法是基于目前的协议功能可以解决问题的唯一方式。

11资费相关问题

l  我们有一些服务是用户发给用户的,但是我们对发送者和接收者都是免费的。发送的费用由我们公司出。请问这样的服务又如何设定发送方号码和接收方号码呢??资费类型填01可以吗??还是填02,然后费用填000000??

答:发送方号码和接收方号码应该没有疑问,填入对应的手机号码,资费信息两种方式都行,但为了如果该业务是免费的,我们建议利用第一种。

l  计费字段中的FeeCode是否必须为六位,前补0,如不足六位行不行?因为我觉得在程序处理中字符串转为整数时,与位数也没有关系。我的程序中没有做强制为六位的处理,不知道这会不会出问题?

    答:会。一定要右对齐,左补0

l  请问,发送"取消包月"请求数据包里面要填的内容是什么?

答:关于用户取消包月的处理,CMPP中没有规定。但在1月份在北京参加的CMCC召开的各网关供应商的会议上,CMCC规定:在CMPP_SUBMIT包中,registered_delivery2表示管理类的数据包,feetype03则表示取消包月。现在我们的网关就是这么处理的,SP可以发送实时的取消包月的数据包,从网关到最后的出帐,我们都已经考虑在内。

12联通计费话单(计费业务代码?)是在我们这边填写的,这好像有别于中国移动?

答:计费话单无论如何是双方都要记录的。联通需要代收,它要将话单计到用户的话费单中。这个部分与中国移动区别不大。区别可能如此:(1)移动要求所有的服务都要求注册,因此只要填写了服务代码,那么相关的收费项目网关会自动填写;(2)联通则不要求注册服务,因此在发送的时候必须写清楚服务代码和相关的收费项目。那么服务和资费都是自己定义的。