SMPP连接器描述 smpp-connector-desc
SMS连接器数据流 sms-data-flow
本节介绍SMS流程如何处理数据。
这是一个概要框图,其中汇总了短信流程与其环境的交互方式。
SMS流程托管2个重要组件:SMPP连接器本身,它处理与SMPP提供商的通信,以及SR协调的后台任务。
SMPP帐户的数据流 sms-data-flow-smpp-accounts
SMS进程轮询nms:extAccount并在其SMPP连接器中派生新连接,传递每个帐户的设置。 可以在 configRefreshMillis 设置的serverConf中调整轮询频率。
对于每个活动的SMPP帐户, SMPP连接器会尝试始终保持连接活动。 如果连接丢失,它将重新连接。
发送消息时的数据流 sms-data-flow-sending-msg
-
SMS进程通过扫描nms:delivery来选择活动投放。 投放在以下情况下处于活动状态:
- 其状态表示消息可以发送
- 其有效期未届满
- 它实际上是投放(例如,它不是模板,不会删除)
- SMPP连接器可以为链接到投放的外部帐户打开至少一个连接
-
对于每个投放,短信流程都会加载投放部分。 如果投放部分已部分发送,则短信流程会通过检查广泛日志来检查已发送哪些消息。
-
短信流程使用投放部分的个性化数据扩展模板。
-
smpp连接器会生成与内容和其他设置匹配的MT (SUBMIT_SM PDU)。
-
SMPP连接器通过发射器(或收发器)连接发送MT。
-
提供商返回此MT的ID。 它插入到nms:providerMsgId中。
-
短信流程会将广泛日志更新为已发送状态。
-
在最终错误的情况下,短信进程将相应地更新广义日志,并且可能会在nms:broadLogMsg中造成新类型的错误。
接收SR时的数据流 sms-data-flow-sr
- SMPP连接器接收并解码SR (DELIVER_SM PDU)。 它使用外部帐户中定义的正则表达式来获取消息ID和状态。
- 已将消息ID和状态插入nms:providerMsgStatus
- 插入后,SMPP连接器会回复一个DELIVER_SM_RESP PDU。
- 如果在此过程中出现错误,SMPP连接器会发送一个否定的DELIVER_SM_RESP PDU并记录一条消息。
接收MO时的数据流 sms-data-flow-mo
- SMPP连接器接收并解码MO (DELIVER_SM PDU)。
- 将从消息中提取关键字。 如果它与任何声明的关键字匹配,则执行相应的操作。 它可能会写入nms:address以更新隔离。
- 如果声明了自定义TLV,则会根据其各自的设置对它们进行解码。
- 已完全解码和已处理的MO已插入到nms:inSms表中。
- SMPP连接器使用DELIVER_SM_RESP PDU进行回复。 如果检测到任何错误,则会向提供程序返回错误代码。
协调MT和SR时的数据流 sms-reconciling-mt-sr
- SR协调组件定期读取nms:providerMsgId和nms:providerMsgStatus。 来自两个表的数据被连接。
- 对于两个表中都有条目的所有消息,将更新匹配的nms:broadLog条目。
- 如果检测到新类型的错误,则可以在进程中更新nms:broadLogMsg表,或者更新未手动限定的错误的计数器。
匹配MT、SR和broadlog条目 sms-matching-entries
下图描述了整个过程:
阶段1
- 扫描消息并进行格式化,然后将其传输到SMPP连接器。
- SMPP连接器将其格式化为SUBMIT_SM MT PDU。
- MT将发送到SMPP提供商。
- 提供程序使用SUBMIT_SM_RESP进行回复。 SUBMIT_SM和SUBMIT_SM_RESP按其序列号。
- SUBMIT_SM_RESP提供来自提供程序的ID。 此ID与广义日志ID一起插入到nms:providerMsgId表中。
阶段2
- 提供程序发送DELIVER_SM SR PDU。
- 将解析SR以提取提供程序ID、状态和错误代码。 此步骤使用提取正则表达式。
- 提供程序ID及其相应状态已插入nms:providerMsgStatus。
- 将所有数据安全地插入数据库后,SMPP连接器会使用DELIVER_SM_RESP进行回复。 DELIVER_SM和DELIVER_SM_RESP通过它们的序列号匹配。
阶段3
- SMS进程的SR协调组件定期扫描nms:providerMsgId和nms:providerMsgStatus表。
- 如果任意行在两个表中具有匹配的提供程序ID,则这2个条目将连接在一起。 这允许将广泛日志ID(存储在providerMsgId中)与状态(存储在providerMsgStatus中)匹配
- 广泛日志将更新为相应的状态。
亲和度和专用流程连接器 sms-affinities
专用进程连接器会忽略相关性,它仅在短信进程中运行。
serverConf选项 sms-serverconf-options
某些设置可在serverConf.xml中调整。 与此文件中的任何其他设置一样,应在config-instance.xml文件中指定它。 所有设置都位于< mta2 >元素中。
此表汇总了所有设置。 最小/最大合理值大致说明了在大多数情况下应考虑的范围。 调试值是在尝试查找与性能无关的问题时要选择的值。