&ItemId=【节目标识,由服务方申请,业务分配】
&UserNumber:=【目的用户号码】
&UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
&OverIp=【从网页定制时用户的IP地址,要求在初次包月或点播定制时带有该字段,点播一定在初次收费下发时带有该字段】
(回车换行)
回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
3.4 接收发送报告
指令在发送过程中出现各种成功、错误等状态变化,以及移动在短信提交给用户后的状态反馈都以报告方式发送给源发送方。分发中心向服务方发送报告。对于由系统发送的收费短信的成功或失败报告,我们也会及时以下面格式发给合作方,供合作方及时了解自己的业务收入和发送情况。格式如下:
分发中心==>Report (空格)
CommandId=【命令标识,4字节整型,循环使用】
&GateName=【源网关名】
&MsgId=【服务方在Submit时写在MsgId参数中的值】
&ExtData:=【服务方在Submit时写在ExtData参数中的值】
&State=【发送状态,0:向网关提交成功(中间状态,后续还会有报告反馈),1:向网关提交失败,2:发送成功,3:等待发送(中间状态,后续还会有报告反馈),4:发送失败,5:Submit参数错误,6:定制被拒绝[该用户已经订制了该费率的服务,或当月已收取该用户的费用,不能再下发包月收费,故被拒绝。],7:黑名单用户,8:该手机单日流量超限,9:限制发送】
&StateMsg=【附加状态信息,对于State的解释文字】
&UserNumber:=【目的用户号码】
&UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
&FeeNumber:=【该包月对应的计费号码,对于移动的报告反馈可能会没有该字段,只有UserNumber】
&FeeNumberType=【0:计费号码为真实号码,1:计费号码为伪码】
&FeeType=【报告对应指令的计费类型,1:免费,2:按条计费,3:定制包月计费】
&ItemId= 【报告对应指令节目标识】
(回车换行)
回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
注:只要是报告发送失败请先找原因,不要再重发,只要有错无论重发多少次都是失败。
3.5 接收定制状态变更
分发中心向服务方通报定制状态变化,格式如下:
分发中心==>Orderchg (空格)
CommandId=【命令标识,4字节整型,循环使用】
&ItemId=【节目标识】
&UserNumber:=【取消定制的手机号码】
&UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
&OrderState=【变更状态,0:用户取消定制,1:用户定制节目,2:暂停节目,3:激活节目,默认:0】
&Reason:=【原因,最多40个字节】
&Msg:=【表示当移动用户通过MO方式建立定制时所发送的定制指令的内容】
&UserPwd=【只有OrderState=1时才有该参数】
(回车换行)
回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
3.6 主动变更定制状态
服务方主动建立或取消定制关系
服务方==>Ordersub (空格)
CommandId=【命令标识,4字节整型,循环使用】
&GateName=【取消手机所属网关名】,默认由分发中心根据手机号码决定目的网关名】
&ItemId=【节目标识】
&UserNumber:=【取消定制的手机号码】
&UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码,默认:0】
&OrderState=【变更状态,0:用户取消定制,默认:0】
&Reason:=【状态变更原因,最多40个字节】
&MsgId=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】,如果不需要回馈报告可以不写该参数。
&ExtData:=【短信扩展数据,服务方短信发送的附加信息,在有报告反馈时会连带该扩展数据反馈给服务方,需加码处理,但加码后不能超过120个字节长度。默认为空串】
(回车换行)
回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
注意:参数中注明需要特定权限的参数值是为系统的特殊需要建立的,合作方是不能发送这些参数的,如果发送,会立即报错的。
3.7 针对联盟的TCP和HTTP接口说明
参加5
4 开机探测协议
4.1 协议说明
这个协议主要用户探测某手机号码是否开机,然后将结果反馈给提交的手机的服务。该协议能使用的节目必须是业务做过特殊设置允许服务的节目,否则会反馈错误
4.2 查询用户是否在开机状态
服务方向分发中心提交指令查询用户是否在开机状态,仅支持移动用户,格式如下:
服务方==>QueryUserinfo (空格)
CommandId=【命令标识,4字节整型,循环使用】
&ItemId=【节目标识,必须为免费业务】
&SUserNumber:=【发起查询的手机号码,如果是网页发起可以为空】
&UserNumber:=【需要查询的手机号码】
&MsgId=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】,必需,系统返回查询结果(ReturnUserinfo)将带入此参数
&ExpireTime=【查询过期时间,格式举例:021201090508,范围:发送后1~24小时之间,默认为(24小时后)】
(回车换行)
回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
4.3 返回用户开关机状态
分发中心向服务方返回用户开关机状态,仅支持移动用户,格式如下:
分发中心==> ReturnUserinfo(空格)
CommandId=【命令标识,4字节整型,循环使用】
&ItemId=【节目标识】
&UserNumber:=【查询的手机号码】
&MsgId=【服务方在QueryUserinfo时写在MsgId参数中的值】
&State=【开关机状态,2:表示查询到结果为开机,此次查询中止;1:表示查询到结果为已关机,查询未中止,如果在过期时间之前用户开机,返回2,如果在过期时间之前用户没有开机,则中止此次查询,不再返回结果;5:无效参数itemid;4:用户号码问题,详情查看参数StateMsg】
&StateMsg:=【查询结果的中文说明,最多40个字节】
(回车换行)
回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
5 MIX平台协议
该平台提供一种模式,将合作方分为AD(广告宣传和号码拥有合作方)、TP(技术实现提供合作方)、CP(内容提供合作方),允许某个AD实现任意我们的其他TP和CP提供的节目,然后在产生利润后由AD、我们、提供服务的TP、提供服务的CP来组合分帐,大家各自发挥自己的特长。
模型如下:
AD、TP、CP跟节目中心的通信都通过分发中心来实现,具体协议参见1.1.1的TCP协议部分。
1. AD对于接收到的MO经过判定,发现是需要共享联盟协议的节目,那么发起请求指令给节目中心,那么把MO指令稍做变动,转发给节目中心来处理,指令格式为:
AD合作方==>CtCmd (空格)
Command= Deliver
&CommandId=【命令标识,4字节整型,循环使用(注意,此参数应该重新生成,而不是沿用上行指令的CommandId)】
&GateName=【源网关名】
&SrvId=【指令发起方的服务ID】
&ItemId=【节目标识,由服务方申请,业务分配】
&UserNumber:=【用户号码】
&UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
&SpNumber=【服务号码,必须以9160开头】
&TP_pId=【GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9】
&TP_udhi=【GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐】
&MsgCode=【短信编码,0:ASCII串;3:短信写卡操作;4:二进制信息;8:UCS2编码;15:含GB汉字;24:UCS2编码闪电短信(Msg<=69个汉字),124:GBK编码闪电短信(Msg<=69个汉字)】
&Msg:=【短信内容,经加码处理,需解码】
&LinkID=【要求对于该MO引起的MT下发时附带该参数】
&AreaCode=【手机所在地区,格式为:(区号,类型,省份,城市)】
&MsgId=【用户自定义消息标识,要求必须格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。】,如果没有该参数或格式不对,节目中心会自动生成该参数。另外,如果该条指令产生了多条Mt下发,则节目中心或多条下发的产生cp会自动在该MsgId参数后续1~5位识别数字,以区别各条下发。
&FuncID=【请求的功能模块号,次序为1,如果业务没有特殊要求可以不用写】
&FuncID1=【请求的功能模块号,次序为2,如果业务没有特殊要求可以不用写】
... ...
&FuncIDn=【请求的功能模块号,次序为n,如果业务没有特殊要求可以不用写】
(回车换行)
回应:Received CommandId=【对应于发送时的命令标识,注意,此指令是分发中心回应的,不是节目中心回应的,因为所有指令都是有分发中心转发给节目中心的】(回车换行)
2. 节目中心接收到AD发来的请求后,根据情况向TP或CP发起节目请求,格式如下:
节目中心==>ReqCmd (空格)
CommandId=【命令标识,4字节整型,循环使用(注意,此参数应该重新生成,而不是沿用上行指令的CommandId)】
&ToSrvId=【TP或CP的服务ID】
&GateName=【源网关名】
&ItemId=【节目标识,由服务方申请,业务分配】
&UserNumber:=【用户号码】
&UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
&MsgId=【用户自定义消息标识,该参数前15位必须与AD请求指令的MsgId相同】
... ...
【后续指令部分根据不同TP和CP有所不同,具体由TP、CP跟技术协商】
回应:Received CommandId=【对应于发送时的命令标识,注意,此指令是分发中心回应的,不是节目中心回应的,因为所有指令都是有分发中心转发给节目中心的】(回车换行)
3. TP和CP接收到节目中心的指令后,根据情况反馈服务内容给节目中心,格式如下:
TP或CP==>BackCmd (空格)
CommandId=【命令标识,4字节整型,循环使用(注意,此参数应该重新生成,而不是沿用上行指令的CommandId)】
&ResultType=【0:不能服务,1:成功服务,2:拒绝服务】
&Reason=【失败或拒绝的原因,如果成功可以不写该参数】
&GateName=【源网关名】
&SrvId=【指令发起方的服务ID】
&ItemId=【节目标识,由服务方申请,业务分配】
&UserNumber:=【用户号码】
&UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
&MsgId=【用户自定义消息标识,必须与ReqCmd请求指令的MsgId参数相同,或者因为ReqCmd的请求产生了多条信息,那么可以在原MsgId后续识别码,但MsgId的总长不能超过20】
&NextFuncID=【下一步要请求的功能模块标识,对于TP或CP在回复内容时,发现必须要到另外一个功能模块才能完成完整服务,则可以加该参数,告诉节目中心把该指令的内容作为NextFuncID模块的输入参数通过ReqCmd去请求NextFuncID的接口模块,以获得最终的下发结果】
... ...
【后续指令部分根据不同TP和CP有所不同,具体由TP、CP跟技术协商】
4. 节目中心根据收到的TP或CP的反馈来生成最终的下发结果,直接下发结果给用户,格式参加Submit指令,另外需要加上所有提供服务的FuncID(功能模块标识,每个功能模块标识对应于某TP或CP提供的一种服务)以及每个功能模块附加的MsgID值,格式为:&FuncID=【值】&FuncID1=【值1】&FuncIDn=【值n】&MsgID=【值】。
5. 如果TP或CP反馈结果的参数ResultType不为1时,节目中心要根据情况请求别的同类功能模块,如果已经没有可替换的方案,则直接给AD回应失败,并告知失败的FuncID号,格式如下:
节目中心==>BackCmd (空格)
CommandId=【命令标识,4字节整型,循环使用(注意,此参数应该重新生成,而不是沿用上行指令的CommandId)】
&ResultType=【0:不能服务,2:拒绝服务】
&GateName=【源网关名】
&ItemId=【节目标识,由服务方申请,业务分配】
&UserNumber:=【用户号码】
&UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
&FuncID=【最后请求识别或被拒绝的服务模块标识】
&ToSrvId=【AD的服务ID】
&Reason=【失败或拒绝的原因】
&MsgId=【用户自定义消息标识,与反馈结果的BackCmd参数值相同】
... ...
【后续指令部分根据不同TP和CP有所不同,具体由TP、CP跟技术协商】
6 针对TCP和HTTP接口说明
1、 Tcp接口的登陆和注册参见1.1.1的Tcp接口协议,登陆注册完成后就可以按照联盟的协议规则发送和接收指令了。联盟协议被设定为对应于节目,也就是说对于设定为联盟协议的节目必须按联盟协议方式下发,而非联盟方式还是按原来协议的方式下发,对于针对联盟协议节目下发,不能不能其他协议的指令,否则回馈错误。也就是说一个连接可能根据下发的节目的不同使用不同的协议指令。
2、 Http接口的指令参见1.1.3,对于下发指令来说只是每个指令都要求有登陆名和密码,也就是说在联盟指令里面加上&Name=【注册名】&Pwd=【注册密码】参数,就可以通过Http连接方式下发联盟指令了。接受http指令时,Tcp指令的命令被转换为Command=【指令】这么一个参数,接收http指令最好带地址验证,目前需要验证地址就是1.1.1提到的几个服务器的地址。
7 版本变更说明
1.0版本:前期没有定义版本号的时候统一作为1.0版本。
1.1版本:增加了小灵通短信的示例。此次小灵通只能下发北方10省(网通部分),电信的小灵通正在申请。另外,小灵通收费短信发送失败禁止重新发送,这是网通的规定,免费的可以重发,但别发的次数太多。
2.0版本:增加了彩信功能
2.01版本:对彩信Submit指令的参数FeeType,ItemType做了变更,要求如下:
对于初次建立包月定制要求:FeeType=3,ItemType=1
对于初次建立点播定制要求:FeeType=2,ItemType=4
以后发送定制包月时要求:FeeType=1,ItemType=1
以后发送点播包月时要求:FeeType=2,ItemType=1
2.02版本:对于TCP指令,原来忘记把测试指令ActiveTest加入了,现在添加上。
2.03版本:添加小灵通点播定制要求,要求初次点播定制itemtype=4先建立定制,否则后续下发内容会被拦截。
2.04版本:接网通通知,小灵通改造后将不允许设定ScheduleTime和ExpireTime。
3.00版本:分发中心改为多分发中心,各接口合作方可根据业务分配连接某一个分发中心,个别特殊需要的可以分配连接多个分发中心。连接类型增加稳定发送和稳定接收2种类型。对于移动,同一Linkid只允许一次收费,后续下发都将被置成免费。下发短信允许一条指令下发多条内容,作为多条短信来收费(移动的点播不适用该条,对于移动的点播,同一linkid只有第一条能收费)。
3.10版本:增加了联盟接口协议
3.20版本:增加了开机探测协议
3.21版本:上行和报告增加地区参数
3.21版本:增加了彩信上misc后的新变更,点播带有linkid,定制通过orderchg传送。无反向定制。修改了部分描述。
3.30版本:增加MIX平台协议