短信计费回调

记帐回调提供了NowSMS SMS网关与外部计费和收费系统之间的接口。它们还可以用于控制消息路由,为用户应用程序提供一种方法来控制将哪些SMSC连接用于发送特定消息。

这些记帐回调基于HTTP。启用计费回调后,NowSMS将向客户提供的URL发出HTTP请求,以便与客户计费和收费系统对接。

若要启用SMS记帐回调,必须使用以下配置参数手动编辑SMSGW.INI配置文件,并在[SMSGW]节标题下定义回调URL:

SMSAccountingURL = http://服务器/路径

每当SMS网关处理SMS消息时,它都会通过向回调URL发出HTTP事务来发出计费回调。描述SMS消息事务的变量作为HTTP GET CGI样式变量附加到SMSAccoutingURL,其中标准URL转义应用于编码保留字符。

例如:

http://server.name/path?PreAuth=是&Type=SMSSend&From=UserAccount&To=%2B447777777777
&MsgCount=1&SubmitIP=127.0.0.1&Text = This%20is%20a%20test。

(这些变量和事务类型将在本节后面描述。)

计费回调主要用于记录计费和收费信息,但是它们也可以提供在NowSMS外部维护信用控制的功能。

SMS消息传递存在以下记帐回调:

  • 短信发送 PreAuth回调 –当客户端用户帐户试图向NowSMS提交SMS消息时,将发生此回调。回调可以选择接受还是拒绝消息,并且可以选择控制消息路由和某些其他消息属性。
  • 短信发送会计回拨 –客户端用户帐户已向NowSMS提交了SMS消息,并且NowSMS接受了此消息进行处理时,将发生此回调。回调可以选择接受还是拒绝消息,并且可以选择控制消息路由和某些其他消息属性。
  • SMSOut会计回调 –此回调记录一条消息已提交到上游SMSC连接,或者在尝试发送到上游SMSC连接时遇到错误情况或拒绝。
  • SMSIn会计回调 – This callback records that an inbound message has been received from an upstream 短信服务中心 connection.

本节的其余部分提供了有关这些回调支持的参数的更多详细信息。

短信发送 PreAuth回调

当SMS(Web,SMPP,SMTP)用户请求发送消息时,将执行此回调。

这是一个“预授权”请求,并不意味着该消息实际上将被NowSMS接受以进行传递。如果NowSMS无法成功连接到计费URL,或者URL返回的响应不是标准的“ HTTP 200 OK”响应,则将阻止用户发送消息的请求。为了将错误条件与主动阻止消息分开,我们建议响应中包含以下文本:“PreAuth=Deny”是否应阻止该消息被接受。

HTTP客户端可以将一条消息提交给多个收件人。在这种情况下,NowSMS的正常行为是使用单个PreAuth回调,该回调指定将在“MsgCount”参数。通过在SMSGW.INI的[SMSGW]部分标题下设置SMSAccountingPreAuthPerRecip = Yes,可以覆盖此行为并为每个收件人生成单独的PreAuth回调。 (设置SMSAccountingMustSetRoute = Yes还会对每个收件人回调行为强制执行此操作。)如果PreAuth回调拒绝了多个收件人邮件中的一个收件人,则整个邮件将被拒绝。因此,重要的是要了解成功的PreAuth回调并不意味着NowSMS已接受消息进行处理。当NowSMS接受邮件进行进一步处理时,它将生成一个单独的SMSSend计费回调(每个接收者一个)。

将为预授权请求设置以下变量:

PreAuth =是的(表明该消息是预授权请求)
类型=短信发送
发件人=已定义 “SMS Users” 帐户
到=以逗号分隔的邮件收件人列表(如果邮件发送给100个以上的收件人,则不会出现)
消息计数=####(用户正在请求将邮件发送到的收件人数)
提交IP =A B C D
短信服务中心路线=xxxxxxxx(可选,仅在消息提交中请求显式路由时才会显示)
发件人=xxxxxxxx(可选,仅在邮件提交中指定了发件人地址时才显示)
二进制=1(可选,如果消息是二进制的,将出现)
PID =#(可选,仅在消息提交中指定非零PID值时才存在)
DCS =#(可选,仅在消息提交中指定了非零DCS值时才存在)
UDH =HexString(可选,仅当消息包含用户数据标题时才会显示)
数据=HexString(可选,仅当消息为二进制时才存在)
文字=字符串(可选,仅当消息为文本时才显示)
ReceiptRequested =是的(可选,仅在邮件要求发送收据时才显示…仅在v2009.01.26及更高版本中可用)

任何定义的SMPPOption参数也将包括在内。

(Note: For SMTP message submissions, only PreAuth, 类型, 从, 至 and 消息计数 variables will be present.)

例:

http://server.name/path?PreAuth=是&Type=SMSSend&From=UserAccount&To=%2B447777777777&MsgCount=1&SubmitIP=127.0.0.1&Text = This%20is%20a%20test。

请注意,构建URL字符串时会执行URL转义。大多数HTTP脚本语言会自动为您取消转义这些参数(例如,%2B被翻译回“+”并将%20转换回空格字符)。

HTTP响应可以包括其他文本响应,以进一步控制消息处理。这些额外的响应预计会出现在HTTP响应的文本中,因为出现的Name = Value条目每行文本显示一个Name = Value(例如,用换行符分隔)。

短信发送 PreAuth回调支持以下Name = Value响应:

PreAuth =拒绝

这将导致NowSMS拒绝该消息,并且提交客户端将收到提交错误。

SMPPErrorCode= 0x ####或####

如果邮件是通过SMPP提交的,则指定要返回给提交客户端的数字错误代码。拒绝邮件的默认错误代码是0x0058(ESME_RTHROTTLED)。

拒绝留言=文字字串

如果提交接口支持返回此类文本(例如HTTP),则此参数指定要返回给用户的错误文本。

仅在SMSGW.INI的[SMSGW]节标题下设置了SMSAccountingPreAuthPerRecip = Yes或SMSAccountingMustSetRoute = Yes时,才支持以下Name = Value响应:

短信服务中心Route=路由名称

如果响应中存在此设置,则NowSMS将使用指定的出站路由名称来传递邮件。 (有关SMS消息路由的更多信息,请参阅 http://www.zgbianpofanghuwang.com/routing-sms-messages-to-a-specifc-smsc-route)。在NowSMS 2011.08.11及更高版本中,SMSCRoute也可以采用localuser:username格式(文本localuser:后接用户帐户名)来指示消息应路由到本地用户帐户而不是出站路由SMSC连接。

注意:如果您依靠计费回调来设置路由信息,我们建议在SMSGW.INI的[SMSGW]部分标题下设置SMSAccountingMustSetRoute = Yes。如果不存在此设置,并且计费回调返回无效或缺少路由信息,则NowSMS将使用其内部路由逻辑来路由邮件。如果存在此设置,则当计费回调返回无效或缺少路由信息时,NowSMS将拒绝或失败消息。

进一步的注意:可以根据SMSSend PreAuth或SMSSend会计回拨s返回路由信息。如果由SMSSend PreAuth回调设置,则将忽略SMSSend计费回调的任何路由响应,并使用PreAuth路由信息。

路线收费= ####

如果将NowSMS信用余额用于用户帐户,则这将指定用于消息的费用。默认情况下,NowSMS假设每封邮件1信用。该值可以支持可变数量的信用,包括有效至千分之一信用的十进制值(例如.001)。

用户数据=文字

如果返回此值,它将作为参数传递给以后引用此同一事务的任何SMSSend会计回拨。 NowSMS版本2012.02.09和更高版本还将将此参数传递给任何将来引用此同一事务的SMSOut记帐回调。

帐户ing callbacks also have the ability to modify some message attributes (v2011.05.23+), including sender/source address, recipient/destination address and 开关电源TLV parameters.  仅当在SMSGW.INI的[SMSGW]节标题下设置了SMSAccountingAllowChanges = Yes时,才支持以下Name = Value响应: “To=”, “Sender=”, “ServiceType=”, “Validity=”, and “SMPPOption_xxxx=”(SMPPOption_xxxx指任何可选 开关电源TLV parameters 在NowSMS中已配置)。如果存在任何这些Name = Value参数,则指定的值将替换正在处理的消息中的现有值。 (在SMPPOption_xxxx =参数的情况下,空白值将删除该参数。)建议HTTP响应以新行终止每个值,以信号通知值字符串的结尾。

 

短信发送会计回拨

NowSMS接受了客户端用户帐户提交的SMS消息以进行进一步处理之后,将执行此回调。

在NowSMS 2009和更高版本中,NowSMS将检查对HTTP请求的响应。如果此回复包含文字“SMSC路线=xxxxxxx”,则NowSMS会将此SMSC路由应用于邮件。指定路线“xxxxx”可以是特定SMSC连接的名称(例如,“SMPP – host:port”),也可以是“RouteName=”为一个或多个连接定义的属性。 (有关“RouteName=” attribute, see http://www.zgbianpofanghuwang.com/routing-sms-messages-to-a-specifc-smsc-route

在NowSMS版本2011.08.11及更高版本中,SMSCRoute也可以采用localuser:username格式(文本localuser:后接用户帐户名)来指示消息应路由到本地用户帐户,而不是出站SMSC连接。

注意:如果您依靠计费回调来设置路由信息,我们建议在SMSGW.INI的[SMSGW]部分标题下设置SMSAccountingMustSetRoute = Yes。如果不存在此设置,并且计费回调返回无效或缺少路由信息,则NowSMS将使用其内部路由逻辑来路由邮件。如果存在此设置,则当计费回调返回无效或缺少路由信息时,NowSMS将拒绝或失败消息。

将为会计回调设置以下变量:

类型=短信发送
发件人=已定义 “SMS Users” 帐户
到=邮件收件人电话号码(如果将邮件发送给多个收件人,则对每个收件人重复此回调)
MessageID =NowSMS分配给邮件的邮件ID
提交IP =A B C D
短信服务中心路线=xxxxxxxx(可选,仅在消息提交中请求显式路由时才会显示)
发件人=xxxxxxxx(可选,仅在邮件提交中指定了发件人地址时才显示)
二进制=1(可选,如果消息是二进制的,将出现)
PID =#(可选,仅在消息提交中指定非零PID值时才存在)
DCS =#(可选,仅在消息提交中指定了非零DCS值时才存在)
UDH =HexString(可选,仅当消息包含用户数据标题时才会显示)
数据=HexString(可选,仅当消息为二进制时才存在)
文字=字符串(可选,仅当消息为文本时才显示)
ReceiptRequested =是的(可选,仅在邮件要求发送收据时才显示…仅在v2009.01.26及更高版本中可用)

任何定义的SMPPOption参数也将包括在内。

(注意:对于SMTP邮件提交,将仅显示Type,From和To变量。)

例:

http://server.name/path?Type=SMSSend&From=UserAccount&To=%2B447777777777&SubmitIP=127.0.0.1&Text = This%20is%20a%20test。

请注意,构建URL字符串时会执行URL转义。大多数HTTP脚本语言会自动为您取消转义这些参数(例如,%2B被翻译回“+”并将%20转换回空格字符)。

HTTP响应可以包括其他文本响应,以进一步控制消息处理。这些额外的响应预计会出现在HTTP响应的文本中,因为出现的Name = Value条目每行文本显示一个Name = Value(例如,用换行符分隔)。

短信发送 帐户ing回调支持以下Name = Value响应:

短信服务中心Route=路由名称

如果响应中存在此设置,则NowSMS将使用指定的出站路由名称来传递邮件。 (有关SMS消息路由的更多信息,请参阅 http://www.zgbianpofanghuwang.com/routing-sms-messages-to-a-specifc-smsc-route)。在NowSMS 2011.08.11及更高版本中,SMSCRoute也可以采用localuser:username格式(文本localuser:后接用户帐户名)来指示消息应路由到本地用户帐户而不是出站路由SMSC连接。

注意:如果您依靠计费回调来设置路由信息,我们建议在SMSGW.INI的[SMSGW]部分标题下设置SMSAccountingMustSetRoute = Yes。如果不存在此设置,并且计费回调返回无效或缺少路由信息,则NowSMS将使用其内部路由逻辑来路由邮件。如果存在此设置,则当计费回调返回无效或缺少路由信息时,NowSMS将拒绝或失败消息。

进一步的注意:可以根据SMSSend PreAuth或SMSSend会计回拨s返回路由信息。如果由SMSSend PreAuth回调设置,则将忽略SMSSend计费回调的任何路由响应,并使用PreAuth路由信息。

用户数据=文字

如果返回此值,则NowSMS版本2012.02.09和更高版本还将将此参数传递给任何将来引用此同一事务的SMSOut会计回调。

帐户ing callbacks also have the ability to modify some message attributes (v2011.05.23+), including sender/source address, recipient/destination address and 开关电源TLV parameters.  仅当在SMSGW.INI的[SMSGW]节标题下设置了SMSAccountingAllowChanges = Yes时,才支持以下Name = Value响应: “To=”, “Sender=”, “ServiceType=”, “Validity=”, and “SMPPOption_xxxx=”(SMPPOption_xxxx指任何可选 开关电源TLV parameters 在NowSMS中已配置)。如果存在任何这些Name = Value参数,则指定的值将替换正在处理的消息中的现有值。 (在SMPPOption_xxxx =参数的情况下,空白值将删除该参数。)建议HTTP响应以新行终止每个值,以信号通知值字符串的结尾。

 

 

SMSOut会计回调

This callback is executed when a submitted 短信message is dispatched to an upstream 短信服务中心 connection, or queued for a local 开关电源user account.

当前忽略对该HTTP回调的响应。鼓励使用标准的HTTP 200 OK响应以实现将来的兼容性。

可以为计费回调设置以下变量:

类型= SMSOut
=String (local user account name, or upstream 短信服务中心 connection name)
=邮件收件人电话号码
MessageID= NowSMS分配给消息的消息ID
提交IP=a.b.c.d (not present for messages received from upstream 短信服务中心 connection)
发件人= xxxxxx
二元= 1(可选,如果消息为二进制,将出现)
PID=#(可选,仅在消息提交中指定了非零PID值时才存在)
DCS=#(可选,仅在消息提交中指定了非零DCS值时才存在)
UDH= HexString(可选,仅当消息包含用户数据标题时才会显示)
数据= HexString(可选,仅当消息为二进制时才存在)
文本= String(可选,仅当消息为文本时才会显示)
MessageID= String(NowSMS分配的消息ID)
短信服务中心MsgId=String (upstream 短信服务中心 assigned message ID, if available)
短信服务中心Name= String(此消息被路由到的SMSC连接,其格式类似于NowSMS 短信服务中心列表中显示的格式,例如,“SMPP – servername:port”)
状态= String(以“OK”, “Retry Pending” or “ERROR”指示消息的处置)

任何定义的SMPPOption参数也将包括在内。

 

 

SMSIn会计回调

This callback is executed when an 短信message is received from an upstream 短信服务中心 connection.

当前忽略对该HTTP回调的响应。鼓励使用标准的HTTP 200 OK响应以实现将来的兼容性。

可以为计费回调设置以下变量:

类型=短信
=邮件收件人电话号码
发件人= xxxxxx
二元= 1(可选,如果消息为二进制,将出现)
PID=#(可选,仅在消息提交中指定了非零PID值时才存在)
DCS=#(可选,仅在消息提交中指定了非零DCS值时才存在)
UDH= HexString(可选,仅当消息包含用户数据标题时才会显示)
数据= HexString(可选,仅当消息为二进制时才存在)
文本= String(可选,仅当消息为文本时才会显示)
短信服务中心ReceiptMsgID= String(可选,如果这是传递收据,则会显示NowSMS分配的消息ID)
短信服务中心ReceiptMsgIDOrig=String (optional, upstream 短信服务中心 assigned message ID will be present if this is a delivery receipt)
短信服务中心Name= String(从中接收此消息的SMSC连接,其格式应为NowSMS 短信服务中心列表中显示的格式,例如,“SMPP – servername:port”)

任何定义的SMPPOption参数也将包括在内。