开关电源 TLV可选参数

张贴者 于2013年9月5日在 支持博客

主题关键字: , , ,

开关电源协议定义了对可选参数(称为TLV参数)的支持。一些TLV参数在核心规范中定义,并且NowSMS可以根据配置设置使用它们。这些TLV参数包括message_payload,source_port,dest_port,sar_msg_ref_num,sar_total_segments,sar_segment_seqnum,payload_type,message_state和receiveed_message_id。 (还有一些高级配置设置可为 user_message_referencecallback_num,这是特定客户实施所需的。)

SMS服务提供商可以自由定义自己的TLV参数,与移动运营商连接时有时可能需要这些参数。这些TLV参数可能包括入站消息的运营商信息,溢价SMS的价格信息或该服务提供商所需的其他安全和防欺诈参数。

NowSMS提供了灵活性,可以根据需要配置对自定义TLV参数的支持。  TLV参数必须在使用之前手动定义给NowSMS。

TLV代表标签,长度和值,这是这些参数的基本格式。

标签是提供者为参数定义的一个数值,通常表示为十六进制值。对于服务提供商特定的参数,这些值通常为0x1400或更高。在逻辑上将参数视为“名称=值”对时,此数字在SMPP请求中使用,而不是参数名称。

长度和值用于编码SMPP请求中的参数值。

解释TLV参数可能很棘手,因为值的格式取决于提供程序定义参数的方式。值可能被编码为字符串值,数字值或二进制数据。对于字符串值,有时可能会更复杂,因为SMPP协议定义了两种类型的字符串,即以N结尾的C格式字符串(这是使用C编程语言时常见的字符串),而另一种不包含null的字符串。终结者。一些提供程序参数实现可能会因这种微小差异而感到困惑。

通常,要为NowSMS定义TLV参数,您需要知道其Tag号(十六进制)和值数据的格式。

已知这时,请手动编辑SMSGW.INI并创建或修改[SMPPOptions]节以定义参数详细信息。

基本格式为:

[SMPPOptions]
参数名称= ####,类型,长度

参数名 是与参数关联的描述性名称。在将参数与HTTP格式相互转换时,NowSMS将使用该名称。

#### 是参数标记号(以十六进制数表示)。不包括任何前缀以表示十六进制格式…例如,此参数设置的0x1400仅为1400。

类型 指定参数类型:整数,字符串,CString或HexString。

是可选的,但通常要求整数值指定提供者定义的1、2或4字节值。 (4字节整数参数需要NowSMS 2013.08.30或更高版本。NowSMS的早期版本只能使用HexString格式支持4字节整数。)

字符串 是一个以null结尾的文本字符串(例如,末尾的最后00个字节),  是不以null结尾的文本字符串。

十六进制字符串 将值视为二进制数据,并将其转换为HTTP的十六进制字符串(对于SMPP,则转换为二进制)。

伦可以用于String或HexString来强制长度(截断长度的值或使用null填充)。在大多数情况下,除非提供程序要求参数具有特定长度,否则在String,CString和HexString格式参数的参数定义中会省略Len。 (NowSMS将根据实际值字符串的长度为TLV生成L。)

用一个例子更容易解释。

就本示例而言,我们将假定我们的提供者定义了一个称为request_id的TLV参数。它是一个文本字符串,且标记号为0x1555。

我们在SMSGW.INI中定义以下内容:

[SMPPOptions]
request_id = 1555,字符串

如果NowSMS通过SMPP从提供商处收到包含此参数的SMS,则计费回调和2向命令将自动将该参数添加为HTTP请求,如下所示:&SMPPOption_request_id = xxxxx(xxxxx是从消息中解析出的参数的值)。

通过HTTP向NowSMS提交消息时,同样&SMPPOption_request_id = xxxxx可用于指定在将消息提交给SMPP提供程序时应包括TLV参数。

始终包含具有默认值的参数

如果要在每条消息中自动包括TLV参数,而无需为每个消息提交显式设置,则可以将NowSMS配置为在将消息提交到SMPP连接时使用此参数的默认值。

要为此参数定义默认值,请手动编辑SMSGW.INI,然后在SMPP连接的节标题中(例如[SMPP–ip.address:port]),添加一个“DefaultSMPPOptions=”设置,其中此设置的值可以包含任何“SMPPOptions”设置。例如:

DefaultSMPPOptions =request_id=myrequest

(If you have multiple 开关电源选项 parameters defined that need to be set as default, separate them with a “;”. For example: DefaultSMPPOptions =request_id=myrequest;otherparm=othervalue)

在2-Way SMS回复中包括TLV参数

对某些TLV参数的另一个常见要求是,在生成对消息的自动回复时,必须将接收到的消息中TLV参数的值复制到新的回复消息中。如果您使用2向SMS发送对传入消息的回复(“命令返回响应文本”检查2向命令),将2WayReplyCopySMPPOptions = requestid添加到SMSGW.INI的[SMSGW]部分。此设置告诉NowSMS,如果它正在处理2向命令答复,则应自动将request_id TLV参数从源消息复制到答复。

更多例子

其他示例可以在以下链接中找到:

mBlox TLV参数: http://www.zgbianpofanghuwang.com/mblox-and-nowsms-premium-rate-sms-and-oppc

有关更新的mBlox参数,另请参见: http://www.zgbianpofanghuwang.com/discus/messages/1/71879.html

为隐藏了实际发件人地址的双向回复复制TLV参数:  http://www.zgbianpofanghuwang.com/discus/messages/1/71840.html

提供商特定的参数: http://www.zgbianpofanghuwang.com/premium-rate-sms-oppc-with-verisign-and-nowsms

更多提供商特定的参数: http://www.zgbianpofanghuwang.com/discus/messages/1/70296.html

使用TLV进行高级消息路由: http://www.zgbianpofanghuwang.com/smpp-tlv-parameters-for-advanced-message-routing

通过USSD进行2向响应的TLV: http://www.zgbianpofanghuwang.com/discus/messages/1/41585.html

PRICEPOINT的SMPP TLV参数: http://www.zgbianpofanghuwang.com/discus/messages/1/71897.html

如有评论和更多讨论,请单击此处访问NowSMS技术论坛(讨论板)...