8


传出的推送消息

通过推送技术,订户无需从设备请求即可接收内容链接。也可以使用推送技术将内容直接推送到某个设备。对于消息,Sun Java System Content Delivery Server 支持 WAP 推送、SMS 和 SMTP 推送格式;对于内容,它支持 SMS 和 MMS 推送。

消息传送服务可将消息和内容推送到订户。推送发送器适配器用作 Content Delivery Server 与推送实现之间的接口,可用于传送消息和内容。请配置消息传送服务以使用所需的推送发送器适配器。

随 Content Delivery Server 提供的推送发送器适配器将在以下各节进行介绍。如果这些适配器未提供所需的功能,则您可以使用消息传送 API 创建自己的推送发送器适配器。有关此 API 的信息,请参见《Sun Javatrademark System Content Delivery Server 5.1 定制指南》。

本章包含以下主题:


8.1 推送发送器适配器

Content Delivery Server 为 SMS、WAP 和 SMTP 推送格式的消息提供了适配器。可以支持多种 SMS 格式。

支持使用 MMS 或 SMS 传送二进制内容,但您必须为要使用的每种传送方法编写自己的适配器。

8.1.1 SMS 消息推送

Content Delivery Server 支持以下 SMS 推送协议: 对等短消息 (Short Message Peer-to-Peer, SMPP) 3.4 版、SMS HTTP 以及消息分发的计算机接口 (Computer Interface to Message Distribution, CIMD2)。请配置消息传送服务以支持所用的协议。

8.1.1.1 设置 SMPP 支持

1. 在运行消息传送服务的服务器上安装 SMPP API 库 0.3.7 版。

SourceForge.net 中提供了该库。

a. 下载 http://downloads.sourceforge.net/smppapi/smppapi-0.3.7.tar.gz 文件。

将该文件保存到临时位置。

b. 从刚刚下载的文件中提取 smppapi-0.3.7/lib/smppapi-0.3.7.jar 文件。

c. 将 smppapi-0.3.7.jar 文件复制到 $CDS_HOME/deployment/deployment-name/lib/external 目录中。

d. 如果使用的是 Sun Java System Application Server,请使用以下某种方法将 $CDS_HOME/deployment/deployment-name/lib/external/smppapi-0.3.7.jar 添加到 CLASSPATH 中:

2. 打开 MsgService.properties 文件。

该文件位于 $CDS_HOME/deployment/deployment-name/conf 目录中。

3. 根据环境需要设置相应的 SMS 属性。

以下代码显示了样例 SMPP 推送适配器的属性。


smsc.hostname = 127.0.0.1
smsc.port = 11111
esme.system_id=user1
esme.password = usrpw
esme.system_type =
esme.destination=
smsc.gsm.ton = 2
smsc.gsm.npi = 0

 

4. 根据环境需要设置相应的推送发送器属性。

以下代码显示了样例 SMPP 推送适配器的属性。


pushsender.send.keep_alive=true
pushsender.keep_alive.milliseconds=30000

 

5. (可选)设置相关属性,用于对从服务器传出的消息进行分类。

SMSC 可以将这些属性用于记帐或其他目的。如果没有为某种服务类型设置值,则使用 default.service_type 属性的值。


subscriber_detail_url.service_type=
mobile_originated_detail_url.service_type=
gifting_detail_url.service_type=
content_sharing_detail_ur.service_type=
password_reminder.service_type=
campaign_message.service_type=
default.service_type= 

 

6. 将更改保存到 MsgService.properties 文件中。

7. 在 pushsenderfactory.xml 文件中注册适配器。

如果您具有自己的 SMSC,请在 pushsenderfactory.xml 文件中将以下类指定为适配器,如 8.2 使用推送适配器中所述。


com.sun.content.server.smpp34impl.msgserver.push.SMSPushMsgSender 

 

8.1.1.2 设置 SMS HTTP 支持

1. 打开 MsgService.properties 文件。

该文件位于 $CDS_HOME/deployment/deployment-name/conf 目录中。

2. 根据环境需要设置相应的 SMS 属性。

以下代码显示了样例 SMS HTTP 推送适配器的属性。


# SMS HTTP properties
cds.sms.http.serverurl=
cds.sms.http.user=
cds.sms.http.password=
cds.sms.http.from=CDS

 

注 - 对于 SMS HTTP,参数名可能与提供的默认值不同。如果使用的 SMSC 所要求的参数与此适配器支持的参数不同,则您必须使用消息传送 API 编写自己的适配器。有关该 API 的信息,请参见《Sun Javatrademark System Content Delivery Server 5.1 定制指南》。



以下属性指定要在 SMS 消息中传送的 HTTP 参数的名称。


cds.sms.attribname.userid
cds.sms.attribname.password
cds.sms.attribname.from
cds.sms.attribname.msg
cds.sms.attribname.to

 

例如,如果 SMSC 使用 HTTP 参数 smsfrom 来标识消息的来源,则将 cds.sms.attribname.from 设置为 smsfrom。这些值不得为 Null 或空白。

3. 将更改保存到 MsgService.properties 文件中。

4. 在 pushsenderfactory.xml 文件中注册适配器。

如果要将 HTTP 用于 SMS 服务,请在 pushsenderfactory.xml 文件中将以下类指定为适配器,如 8.2 使用推送适配器中所述。


com.sun.content.server.messagingservice.msgserver.push.HTTPSMSPushMsgSender

 

8.1.1.3 设置 CIMD2 支持

1. 打开 MsgService.properties 文件。

该文件位于 $CDS_HOME/deployment/deployment-name/conf 目录中。

2. 根据环境需要设置相应的 SMS 属性。

以下代码显示了样例 CIMD2 推送适配器的属性。.


smsc.hostname = 127.0.0.1
smsc.port = 11111
esme.system_id=user1
esme.password = usrpw

 

3. 将更改保存到 MsgService.properties 文件中。

4. 在 pushsenderfactory.xml 文件中注册适配器。

如果使用的 SMSC 支持 CIMD2 协议,请在 pushsenderfactory.xml 文件中将以下类指定为适配器,如 8.2 使用推送适配器中所述。


com.sun.content.server.messagingservice.msgserver.push.SMSCIMD2PushMsgSender 

 

8.1.2 WAP 消息推送

该适配器支持使用 WAP 推送的推送传送。要配置消息传送服务以支持 WAP 推送,请执行以下操作:

1. 打开 MsgService.properties 文件。

该文件位于 $CDS_HOME/deployment/deployment-name/conf 目录中。

2. 根据环境需要设置相应的 WAP 属性和 PPG 属性,例如:


#WAP and PPG properties
asyncmsg.wap.ppg=
asyncmsg.wap.id=CDS
asyncmsg.wap.ip.bearer=
asyncmsg.wap.priority=high 
asyncmsg.wap.bearer_type=SMS 
asyncmsg.wap.bearer_required=false 
asyncmsg.wap.delivery_method=unconfirmed
asyncmsg.wap.network_type=GSM
asyncmsg.wap.netwok_required=true

 

3. 将更改保存到 MsgService.properties 文件中。

4. 在 pushsenderfactory.xml 文件中注册适配器。

com.sun.content.server.messagingservice.msgserver.push.WAPPushMsgSender 类用作适配器。请在 pushsenderfactory.xml 文件中指定此适配器,如 8.2 使用推送适配器中所述。

5. 如果 WAP 推送代理网关 (Push Proxy Gateway, PPG) 要求的属性不是消息模板中当前包含的属性,则必须更新 wap_push_msg_template.xsl 文件。

该文件位于 $CDS_HOME/deployment/deployment-name/conf 目录中。

8.1.3 SMTP 消息推送

此适配器支持使用 SMTP 推送的推送传送。将 com.sun.content.server.messagingservice.msgserver.push.SMTPPushMsgSender 类用作适配器。请在 pushsenderfactory.xml 文件中指定此适配器,如 8.2 使用推送适配器中所述。

8.1.4 SMS 二进制内容推送

如果要将二进制内容推送到设备,则您必须使用消息传送 API 创建自己的适配器。可以使用推送类别来确定发送的是二进制内容还是消息。在 PushConstants 类中定义的常量 PUSH_CONTENT_BINARY_CATEGORY 标识包含二进制内容的消息。有关消息传送 API 和 PushConstants 类的信息,请参见《Sun Javatrademark System Content Delivery Server 5.1 定制指南》。

如果您要编写自己的适配器,请在 pushsenderfactory.xml 文件中指定此适配器,如 8.2 使用推送适配器中所述。


8.2 使用推送适配器

pushsenderfactory.xml 文件用于注册推送发送器适配器。pushmsgsender 属性必须包含推送适配器类的全限定名称以及该适配器支持的协议,如以下代码示例中所示。

以下样例为所支持的每种类型的推送发送器注册了适配器。


代码样例 8-1 样例 pushsenderfactory.xml 文件
<pushmsgsenderset>
  <pushmsgsender0
    class= 
"com.sun.content.server.messagingservice.msgserver.push.TestSMSPushMsgSenderImpl"
    protocol="sms"/>
  <pushmsgsender1
    class=
"com.sun.content.server.messagingservice.msgserver.push.WAPPushMsgSender"
    protocol="wap"/>
  <pushmsgsender2
    class=
"com.sun.content.server.messagingservice.msgserver.push.SMTPPushMsgSender"
    protocol="smtp"/>
  <pushmsgsender3 
    class=
"com.sun.content.server.messagingservice.msgserver.push.MMSPushMsgSender"
    protocol="mms"/>
</pushmsgsenderset>

 

要指定希望使用的推送发送器适配器,请执行以下操作:

1. 在 Content Delivery Server 中注册适配器。

要注册适配器,请在 $CDS_HOME/deployment/deployment-name/conf 目录中创建一个名为 pushsenderfactory.xml 的 XML 文件。只能指定一个 SMS 推送适配器。

有关此文件的示例,请参见代码样例 8-1

2. 在类路径中包含该适配器类及所有相关类。

3. 保存 pushsenderfactory.xml 文件。


8.3 配置 SMS 推送消息

默认的 SMS 推送消息包含来自 Content Delivery Server 的消息以及要下载内容的 URL,例如:


Download: Application Name
http://servername:port/subscriber/main/ddd?subid=101&riid=115

 

如果发送的消息长度导致出现问题,则可以将此消息限制为仅为来自 Content Delivery Server 的消息或仅为 URL。编辑 $CDS_HOME/deployment/deployment-name/conf 目录中的 sms_push_msg_template.xsl 模板。

以下代码显示了一个模板样例。


1. <?xml version=”1.0” ?> 
2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3. version=”1.0”>
4. <xsl:output method="text" indent="yes" /> 
5. <xsl:template match="/">
6. <xsl:value-of select="/SMSMessage/MESSAGE" /> 
7. <xsl:value-of select="/CDSSMSMessage/HREF" /> 
8. </xsl:template>
9. </xsl:stylesheet>

 

要将消息限制为仅为来自 Content Delivery Server 的消息,请删除第 7 行。要将消息限制为仅为 URL,请删除第 6 行。


8.4 配置 MMS 支持

要使 Content Delivery Server 通过 MMS 传送内容,必须配置 VSAdminConsole.propertiesSubscriberPortal.propertiesMsgService.properties 文件中的 MMS 消息传送属性。多媒体消息服务中心 (Multimedia Message Service Center, MMSC) 基于为属性输入的值来处理 MMS 消息。表 8-1 中介绍了 MMS 消息传送属性及其值。

1. 编辑 VSAdminConsole.propertiesSubscriberPortal.properties 文件。

这两个文件位于 $CDS_HOME/deployment/deployment-name/conf 目录中。

2. 在两个文件中分别设置以下 MMS 消息传送属性,以使这些值相匹配。

以下代码显示了 MMS 支持的样例设置。


mms_smil.template.filename=mms_smil_template.xsl
mms.message.class=AUTO
mms.message.priority=NORMAL
mms.message.sender.visibility=SHOW
mms.message.read_report_required=true
mms.message.delivery_report_required=true
admin.mms.from.address=address@host.com

 

3. 在 SubscriberPortal.properties 文件中设置其他属性,例如:

      mms.fallback.pushtype=sms

请注意,还必须为 Content Delivery Server 配置所指定的服务。有关配置 SMS 或 WAP 的详细信息,请参见 10

4. 编辑 MsgService.properties 文件。

该文件位于 $CDS_HOME/deployment/deployment-name/conf 目录中。

5. 设置 MMS 发送器类的完整类名,例如:


mms.senderclass=
    com.sun.content.server.messagingservice.msgserver.push.TestMMSSenderImpl

 

下表介绍了 MMS 消息的属性。


表 8-1 MMS 消息传送属性

MMS 属性名

描述

admin.mms.from.address

用于发送 MMS 内容的电子邮件地址或电话号码。

mms.fallback.pushtype

标识在不使用 MMS 时推送消息的备用机制。有效值为:

  • sms - 短消息服务(默认)
  • wap - 无线应用协议

必须为

Content Delivery Server 配置备用机制。有关详细信息,请参见 10

mms.message.class

为 MMSC 提供消息类别。有效值为:

  • ADVERTISEMENT
  • AUTO(默认)
  • INFORMATIONAL
  • PERSONAL

mms.message.delivery_report_required

表明是否希望从订户设备收到传送报告。有效值为:

  • true - 要求从订户设备收到传送报告。这是默认值。
  • false - 不要求传送报告。例如,作为促销活动一部分发送给订户的消息可以将此属性设置为 false

mms.message.priority

为 MMSC 提供消息的优先级。有效值为:

  • HIGH
  • NORMAL(默认)
  • LOW

mms.message.read_report_required

表明是否希望从订户设备收到表示消息已被阅读的消息。有效值为:

  • true - 要求从订户设备收到阅读报告。这是默认值。
  • false - 不要求阅读报告。例如,作为促销活动一部分发送给订户的消息可以将此属性设置为 false

mms.message.sender.visibility

表明显示还是隐藏消息发送者的姓名。有效值为:

  • HIDE - 在 MMS 消息中不显示发送者的姓名。
  • SHOW - 在 MMS 消息中显示发送者的姓名。这是默认值。

mms.senderclass

实现 MMSSender 类的类的完整名称。MMSSender 类位于 cdsapi 模块中。

mms_smil.template.filename

用于创建同步多媒体集成语言 (Synchronized Multimedia Integration Language, SMIL) 数据的 XSL 模板的名称。此属性的值表示为模板文件及其路径的名称,且与 conf 目录相关。