Sun Java System Messaging Server 6 2005Q4 管理指南

SMS 回复和通知的处理

SMS Gateway Server 保留通过其 SMPP 中继转发的每条 SMS 消息的历史记录。之所以需要使用历史数据,是因为这样的事实:在向 SMS 提交电子邮件消息时,通常不可能将消息发起人的电子邮件地址转换成 SMS 源地址。由于任何 SMS 回复和通知都将被定向到该 SMS 源地址,所以往往会出现问题。使用已中继消息中自动生成的唯一 SMS 源地址可以解决这一问题。然后,通过对远程 SMSC 进行配置,就可把这些 SMS 源地址路由回 Gateway SMPP 服务器。

历史数据将表示为消息 ID 和已生成的唯一 SMS 源地址的内存中散列表。这些信息还与相关联的电子邮件始发数据一起保存在磁盘上。基于磁盘的存储是一系列文件,每个文件均表示由 HASH_FILE_ROLLOVER_PERIOD 指定秒数的事务(默认值为 30 分钟)。每个文件将保留由 RECORD_LIFETIME 指定的秒数(默认值为 3 天)。有关历史数据的内存中和磁盘上资源要求的讨论,请参见《Sun Java System Communications Services 6 2005Q4 Deployment Planning Guide》

每条记录由三个部分组成:

SMS 回复的路由选择过程

Gateway SMPP 中继和服务器使用历史记录处理 SMS 回复、通知和移动设备始发的消息。当某条 SMS 消息递交到 SMPP 中继或服务器时,将进行以下路由选择过程:

  1. 将 SMS 目标地址与历史记录相比较,以查看是否有由 SMPP 中继以前生成的、与之匹配的唯一 SMS 源地址。如果找到匹配地址,请参见步骤 6。

  2. 如果没有匹配地址,而该消息是一个 SMS 通知 (SMPP DELIVER_SM PDU),则会将收到的消息 ID(如果存在)与历史记录相比较。如果找到匹配地址,请转至步骤 8。[SMS Gateway Server 实际上允许将这些地址递交至 SMPP 中继或 SMPP 服务器。]

  3. 如果没有匹配地址,则会将目标 SMS 地址与每个已配置的网关配置文件的 SELECT_RE 选项表达式相比较。如果找到匹配地址,则请转至步骤 9。

  4. 如果没有匹配地址并且 SMS 消息被递交到 Gateway SMPP 中继,则该消息就会被中继到远程 SMPP 服务器。

  5. 如果没有匹配地址并且 SMS 消息被递交到 Gateway SMPP 服务器,则会确定该消息为无效消息,并在 SMPP 响应 PDU 中返回一个错误响应。对于电子邮件到 SMS,最终将生成一个非传送通知 (NDN)。

  6. 如果找到匹配的唯一一个 SMS 源地址,则会进一步检查该 SMS 消息,以查看其是否是一个回复或一条通知消息。要成为通知消息,则该消息必须是一个带有已收到消息 ID 的 SUBMIT_SM PDU。否则,将被视为是一个回复。

  7. 如果其为回复,则会使用历史记录中的始发电子邮件信息将该 SMS 消息转换成电子邮件消息。

  8. 如果是通知,则该 SMS 消息会根据 RFC 1892-1894 被转换成电子邮件传送状态通知 (Delivery Status Notification, DSN)。请注意,原始电子邮件消息的 ESMTP NOTIFY 标志 (RFC 1891) 将被接受(例如,如果 SMS 消息是“成功”DSN,而原始电子邮件消息仅请求“失败”通知,则该 SMS 通知将被放弃)。

  9. 如果目标 SMS 地址与已配置的网关配置文件中的 SELECT_RE 选项相匹配,则该 SMS 消息会被视为是一条移动设备发出的消息,并按照该网关配置文件的 PARSE_RE_n 规则转换回电子邮件消息。如果转换失败,则该 SMS 消息将无效并返回一个错误响应。