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

SMS Gateway Server 操作原理

通过使移动设备始发 SMS 消息与正确的电子邮件地址相匹配的机制,SMS Gateway Server 使得双向 SMS 更易于实现。本节包含以下 SMS Gateway Server 主题:

SMS Gateway Server 功能

SMS Gateway Server 同时作为 SMPP 中继和服务器运行。它可被配置为具有每项功能的多个“实例”。例如,可以将其配置为拥有三种不同的 SMPP 中继,每种中继侦听不同的 TCP 端口或网络接口,并中继到不同的远程 SMPP 服务器。与此类似,还可以将其配置为拥有四个不同的 SMPP 服务器,每个服务器侦听不同组合的 TCP 端口和网络接口。

可以将 SMS Gateway Server 配置为拥有零个或多个向电子邮件地址发送 SMS 消息的网关配置文件。每个网关配置文件说明了哪个目标 SMS 地址与该配置文件相匹配,说明了如何从 SMS 消息中提取目标电子邮件地址,并说明了 SMS 到电子邮件转换过程的各种特征。通过 SMPP 中继或服务器递交到 SMS Gateway Server 的每条 SMS 消息都将与各个配置文件相比较。如果找到匹配项,则消息将被路由到电子邮件。

最后,网关配置文件还说明如何处理远程 SMSC 为响应以前的电子邮件到移动设备的消息而返回的通知消息。

SMPP 中继和服务器性能

如果作为 SMPP 中继,SMS Gateway Server 应尝试尽可能地透明,就是将来自本地 SMPP 客户机的全部请求中继到远程 SMPP 服务器,然后再中继回远程服务器的响应。但有两种例外情况:

请注意,一般可对 SMS Gateway Server 进行配置,以便其所生成的唯一 SMS 源地址与网关配置文件之一相匹配。


注 –

SMS Gateway Server 的 SMPP 中继仅适合与限定的 Sun Java System SMPP 客户机(即 Sun Java System Messaging Server 的 SMS 通道)配合使用。它不用于与任意 SMPP 客户机配合使用。


以下三种情况下,如果作为 SMPP 服务器,SMS Gateway Server 都将 SMS 消息定向到电子邮件:

所有其他 SMS 消息都将被 SMPP 服务器拒绝。

远程 SMPP 到 Gateway SMPP 的通信

远程 SMPP 客户机使用协议数据单元 (PDU) 与 Gateway SMPP 服务器进行通信。远程 SMPP 客户机发布 Gateway SMPP 服务器所响应的请求 PDU。Gateway SMPP 服务器同步运行。它在处理来自已连接的远程 SMPP 客户机的下一个请求 PDU 之前,先完成对一个请求 PDU 的响应。

以下表 D–19 列出 Gateway SMPP 服务器所处理的请求 PDU,并指定 Gateway SMPP 服务器的响应。

表 D–19 SMPP 服务器协议数据单元

请求 PDU 

SMPP 服务器响应 

BIND_TRANSMITTERBIND _TRANSCEIVERUNBIND

与相应的响应 PDU 相对应。将忽略认证证书。 

OUTBIND

Gateway SMPP 服务器发送回一个 BIND_RECEIVER PDU。将忽略递交的认证证书。

SUBMIT_SMDATA_SM

尝试将目标 SMS 地址与唯一的 SMS 源地址或 Gateway 配置文件的 SELECT_RE 设置相匹配。如果都不匹配,PDU 将被拒绝,并返回 ESME_RINVDSTADR 错误。

DELIVER_SM

尝试在历史记录中查找目标 SMS 地址或已收到的消息 ID。如果都不匹配,则返回错误 ESME_RINVMSGID

BIND_RECEIVER

不支持。返回 GENERIC_NAK PDU 及 ESME_RINVCMDID 错误。

SUBMIT_MULTI

不支持。返回 GENERIC_NAK PDU 及 ESME_RINVCMDID 错误。

REPLACE_SM

不支持。返回 GENERIC_NAK PDU 及 ESME_RINVCMDID 错误。

CANCEL_SM

不支持。返回 GENERIC_NAK PDU 及 ESME_RINVCMDID 错误。

QUERY_SM

不支持。返回 GENERIC_NAK PDU 及 ESME_RINVCMDID 错误。

QUERY_LAST_MSGS

不支持。返回 GENERIC_NAK PDU 及 ESME_RINVCMDID 错误。

QUERY_MSG_DETAILS

不支持。返回 GENERIC_NAK PDU 及 ESME_RINVCMDID 错误。

ENQUIRE_LINK

返回 ENQUIRE_LINK_RESP PDU。

ALERT_NOTIFICATION

已接受但被忽略。 

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 消息将无效并返回一个错误响应。