目录 上一页 下一页 索引

第 8 章

消息传送 API


本章介绍 Sun Java System Content Delivery Server 消息传送 API。消息传送 API 为运营商或应用程序供应商集成自身的 WAP、SMS 和 MMS 推送实现(通过提供适配器进行集成)提供了一种机制。Content Delivery Server 还提供了可以在大多数情况下使用的缺省 WAP、SMS 和 MMS 推送实现。

下图说明了消息传送 API 的高层体系结构以及使用此 API 的其他组件。

图 8-消息传送 API 的体系结构

此图以文本形式进行说明。

外部推送系统可以与 Content Delivery Server 进行交互或者从中接收推送消息。

有关本节中未介绍的类或方法的信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中的消息传送 API 的 Javadoc 工具的 HTML 输出。

8.1 PushMsgSender 接口

PushMsgSender 接口声明推送消息发送器实现所需的方法。此接口在 Content Delivery Server 发送推送消息时由 Content Delivery Server 消息传送服务调用。

public PushResponse pushMessagePushMessage msg, int retryNumthrows PushMessageFailException; 

8.2 PushMsgListener 接口

PushMsgListener 接口声明推送消息监听器实现所需的方法。

8.2.1 connect()

此方法在 SMSC 发送推送消息时由 Content Delivery Server 消息传送服务调用。

public boolean connect() 

8.2.2 initialize()

这是 Content Delivery Server 消息传送服务调用的第一个方法,以便在连接到 SMSC 之前初始化 SMSC 参数。

public void initialize(String pushActionType) throws InitializationFailedException 

8.2.3 listen()

PushMsgListener 已连接到 SMSC 并且希望监听来自设备的传入消息时,此方法将由 Content Delivery Server 消息传送服务调用。

public void listen() 

8.2.4 sendKeepAliveMsg()

如果一段时间后 SMSC 要求发送“保持活动”的信号,那么此消息将由 Content Delivery Server 消息传送服务调用。

public void sendKeepAliveMsg() 

8.3 PushMessage 接口

PushMessage 是由 Content Delivery Server 生成的所有不同类型推送消息的接口。MMSPushMessageWAPPushMessageSMTPMessageSMSMessage 类扩展了 PushMessage

在消息构建期间,所有 set 方法由 Content Delivery Server 使用。所有 get 方法可以由推送消息的发送器实现使用。

8.3.1 addUserAgent()

设置接收订户设备的用户代理。

public void addUserAgent(String ua) 

8.3.2 getAllUserAgents()

返回接收订户设备的所有用户代理。

public ArrayList getAllUserAgents() 

8.3.3 getAttribute()

返回所有消息特性。

protected Object getAttribute(String attributeName) 

8.3.4 getDestinationAddress()

返回目标地址,即接收订户的电话号码或者电子邮件 ID。

public String getDestinationAddress() 

8.3.5 getJMSMessageId()

返回 JMS 消息的 ID。

public String getJMSMessageId() 

8.3.6 getMessageText()

返回消息文本。

public String getMessageText() 

8.3.7 getPushCategory

返回推送消息的类别。

public long getPushCategory() 

8.3.8 getPushDomain()

返回推送消息的域。

public long getPushDomain() 

8.3.9 getPushType()

返回消息类型。

public String getPushType() 

8.3.10 getSubscriberId()

返回订户 ID。

public long getSubscriberId() 

8.3.11 getUniqueDeviceId()

返回唯一设备 ID。

public String getUniqueDeviceId() 

8.3.12 getVendingContentId()

返回销售内容 ID。

public long getVendingContentId() 

8.3.13 setAllUserAgents()

设置接收订户设备的多个用户代理。

public void setAllUserAgents(ArrayList list) 

8.3.14 setAttribute()

设置所有消息的特性。

protected void setAttribute(String attributeName, Object attributeVal) 

8.3.15 setDestinationAddress()

设置推送消息的接收订户的目标地址。目标地址可以是电话号码或电子邮件 ID。

public void setDestinationAddress(String receiverId) 

8.3.16 setJMSMessageId()

设置 JMS 消息的 ID。

public void setJMSMessageId(String msgId) 

8.3.17 setMessageText()

设置消息文本。

public void setMessageText(String text) 

8.3.18 setPushCategory()

设置推送消息的类别。

public void setPushCategory(long category) 

8.3.19 setPushDomain()

设置推送消息的域。

public void setPushDomain(long domain) 

8.3.20 setSubscriberId()

设置订户的 ID。

public void setSubscriberId(long subId) 

8.3.21 setUniqueDeviceId()

设置设备唯一的 ID。

public void setUniqueDeviceId(String uniqueId) 

8.3.22 setVendingContentId()

设置销售内容 ID。

public void setVendingContentId(long contentId) 

8.3.23 toString()

PushMessage 对象的数据显示到日志。此方法主要用于调试。

public String toString() 

8.4 SMSURLEncoder 接口

SMSURLEncoder 接口声明了获取 HTTP 请求的 URL 所需的方法。

8.4.1 encode()

此方法由 HTTPSMSPushMessageSender 调用,以获取服务提供商宿主特定 SIM 卡时 HTTP 请求所需的 URL 和参数。

public SMSHTTPMessageData encode(SMSMessage sm) 

8.5 SMSMessage 类

SMSMessage 类扩展了 PushMessage,并代表了一个 SMS 推送消息。SMSMessage 包括的方法可以获取并设置消息内容的名称和类型以及 MIME 类型。还包括获取并设置用于下载的 URL 的方法。

在消息构建期间,所有 set 方法由 Content Delivery Server 使用。所有 get 方法可以由推送消息的发送器实现使用。

8.5.1 setContentType()

设置消息的内容类型。

public void setContentType( String contentType) 

8.5.2 getContentType()

获取消息的内容类型。

public String getContentType() 

8.5.3 setContentName()

设置内容或应用程序的显示名称。

public void setContentName(String cName) 

8.5.4 getContentName()

获取内容或应用程序的显示名称。

public String getContentName() 

8.5.5 getMimeType()

获取 MIME 类型。

public String getMimeType() 

8.5.6 setMimeType()

设置 MIME 类型。

public void setMimeType(String mimeType) 

8.5.7 setDownloadURL()

设置应用程序的下载 URL。此方法在 Content Delivery Server 需要向设备发送下载消息时由它调用。

public void setDownloadURL(String downloadUrl) 

8.5.8 getDownloadURL()

如果在消息中设置了 URL,则获取下载 URL。如果未指定任何下载 URL 则返回空。

public String getDownloadURL() 

8.6 WapPushMessage 类

WapPushMessage 类扩展了 WAP 支持的 PushMessage 接口。

8.6.1 setDownloadURL()

设置应用程序的下载 URL。此方法在 Content Delivery Server 需要向设备发送下载消息时由它调用。

public void setDownloadURL(String downloadUrl) 

8.6.2 getDownloadURL()

获取在消息中设置的下载 URL。如果未指定下载 URL 则返回空。

public String getDownloadURL() 

8.7 SMTPMessage 类

此类表示 SMTP push message。SMTPMessage 扩展了 PushMessageSMTPMessage 包括的方法可以获取并设置消息主题以及用来覆盖消息的“发件人”字段的值。

在消息构建期间,所有 set 方法由 Content Delivery Server 使用。所有 get 方法可以由推送消息的发送器实现使用。

8.7.1 getOverrideFrom()

返回用作电子邮件消息的“发件人”地址的地址。

public String getOverrideFrom() 

8.7.2 getSubject()

获取 SMTP 消息的主题。

public String getSubject() 

8.7.3 setOverrideFrom()

设置电子邮件消息的覆盖“发件人”地址。如果设置为非空的值,它将用于已发送电子邮件消息的标题。

public void setOverrideFrom(String value) 

8.7.4 setSubject()

设置 SMTP 消息的主题。

public void setSubject(String subject) 

8.8 ContentSlide 类

此类用于存储 MMS 推送消息的二进制数据。该二进制数据可以具有 MIME 类型并具有与之关联的唯一 ID。在消息构建期间,所有 set 方法由服务器使用。所有 get 方法可以由推送消息的实现使用。

8.8.1 getContentData()

返回与 MMS 推送消息关联的二进制数据。

public byte[] getContentData() 

8.8.2 getContentId()

返回与 MMS 推送消息的二进制数据关联的唯一 ID。

public String getContentId() 

8.8.3 getContentMimeType()

返回 MMS 推送消息的二进制数据的 MIME 类型。

public String getContentMimeType() 

8.8.4 setContentData()

设置 MMS 推送消息的二进制数据。

public void setContentData(byte[] contentData) 

8.8.5 setContentId()

设置与 MMS 推送消息的二进制数据关联的唯一 ID。

public void setContentId(String contentId) 

8.8.6 setContentMimeType()

设置 MMS 推送消息的二进制数据的 MIME 类型。

public void setContentMimeType(String contentMimeType) 

8.9 MMSSlide 类

此类是 ContentSlide 对象的包装,用于构建 MMS 推送消息。在消息构建期间,所有 set 方法由服务器使用。所有 get 方法可以由推送消息的实现使用。

8.9.1 getAudioContent()

返回 MMSSlide 对象的音频内容。

public ContentSlide getAudioContent() 

8.9.2 getImageContent()

返回 MMSSlide 对象的图像内容。

public ContentSlide getImageContent() 

8.9.3 getTextContent()

返回 MMSSlide 对象的文本内容。

public ContentSlide getTextContent() 

8.9.4 getVideoContent()

返回 MMSSlide 对象的视频内容。

public ContentSlide getVideoContent() 

8.9.5 setAudioContent()

设置 MMSSlide 对象的音频内容。

public void setAudioContent(String contentId, String contentMimeType, byte[] contentData) 

8.9.6 setImageContent()

设置 MMSSlide 对象的图像内容。

public void setImageContent(String contentId, String contentMimeType, byte[] contentData) 

8.9.7 setTextContent()

设置 MMSSlide 对象的文本内容。

public void setTextContent(String contentId, String contentMimeType, byte[] contentData) 

8.9.8 setVideoContent()

设置 MMSSlide 对象的视频内容。

public void setVideoContent(String contentId, String contentMimeType, byte[] contentData) 

8.10 MMSPushMessage 类

MMSPushMessage 类扩展了 PushMessage 并表示了 MMS 推送消息。在消息构建期间,所有 set 方法由 Content Delivery Server 使用。所有 get 方法可以由推送消息的实现使用。此类将包含“发件人”地址、“收件人”地址、MMSC 相关数据、用户代理以及任何同步多媒体集成语言 (SMIL) 数据(如果可用)。同时还封装了 MMSSlide 对象。

8.10.1 addMMSSlide()

设置 MMSSlide 对象。

public void addMMSSlide(MMSSlide mmsSlide) 

8.10.2 addRecipient()

设置接收订户的电话号码或电子邮件 ID。

public void addRecipient(String to) 

8.10.3 getAllMMSSlides()

返回与此 MMSPushMessage 关联的所有 MMSSlide 对象。

public ArrayList getAllMMSSlides() 

8.10.4 getAllRecipients()

返回消息的所有收件人的电话号码或电子邮件 ID。

public ArrayList getAllRecipients() 

8.10.5 getDeliveryReportRequired()

返回 DeliveryReportRequired 特性的值。

public boolean getDeliveryReportRequired() 

8.10.6 getFromAddress()

返回发送者的电话号码或电子邮件 ID。

public String getFromAddress() 

8.10.7 getMessageClass()

返回 MessageClass 特性的值。

public String getMessageClass() 

8.10.8 getMessagePriority()

返回 MessagePriority 特性的值。

public String getMessagePriority() 

8.10.9 getReadReportRequired()

返回 ReadReportRequired 特性的值。

public boolean getReadReportRequired() 

8.10.10 getSenderVisibility()

返回 SenderVisibility 特性的值。

public String getSenderVisibility() 

8.10.11 getSMILPresentation()

返回 SMIL 数据。

public byte[] getSMILPresentation() 

8.10.12 setDeliveryReportRequired()

设置 DeliveryReportRequired 特性的值。

public void setDeliveryReportRequired(boolean deliveryReportRequired) 

8.10.13 setFromAddress()

设置发送者的电话号码或电子邮件 ID。

public void setFromAddress(String from) 

8.10.14 setMessageClass()

设置 MessageClass 特性的值。

public void setMessageClass(String messageClass) 

8.10.15 setMessagePriority()

设置 MessagePriority 特性的值。

public void setMessagePriority(String messagePriority) 

8.10.16 setReadReportRequired()

设置 ReadReportRequired 特性的值。

public void setReadReportRequired(boolean readReportRequired) 

8.10.17 setSenderVisibility()

设置 SenderVisibility 特性的值。

public void setSenderVisibility(String senderVisibility) 

8.10.18 setSMILPresentation()

设置 SMIL 数据。

public void setSMILPresentation(byte[] smil) 

8.11 PushResponse 类

PushResponse 是由外部推送服务生成的所有不同类型推送响应的基类。所有 set 方法由推送消息的发送器实现使用。所有 get 方法可以由服务器使用以便将推送消息记录到数据库中。

8.11.1 getMessageId()

返回消息 ID。

public String getMessageId() 

8.11.2 getResponseDescription()

返回响应的说明。

public String getResponseDescription() 

8.11.3 getResponseStatus()

返回响应的状态。

public String getResponseStatus() 

8.12 PushConstants 类

PushConstants 类包含所有推送服务服务器支持的常量。特定推送服务实现将这些常量与从 PushMessage 对象接收的值进行比较。

PushType 常量
public static final long SMS_PUSH_TYPE = "sms"  
public static final long WAP_PUSH_TYPE = "wap"  
public static final long MMS_PUSH_TYPE = "mms"  
public static final long SMTP_PUSH_TYPE = "smtp"  
推送类别类型常量
public static final long PUSH_SUBSCRIBER_DETAIL_URL_CATEGORY = "subscriber_detail_url" 
public static final long PUSH_MOBILE_ORIGINATED_DETAIL_URL_CATEGORY = "mobile_originated_detail_url" 
public static final long PUSH_CONTENT_BINARY_CATEGORY = "content_binary" 
public static final long PUSH_GIFTING_DETAIL_URL_CATEGORY = "gifting_detail_url" 
public static final long PUSH_CONTENT_SHARING_DETAIL_URL_CATEGORY = "content_sharing_detail_url" 
public static final long PUSH_PASSWORD_REMINDER_CATEGORY = "password_reminder"  
public static final long PUSH_CAMPAIGN_MESSAGE_CATEGORY = "campaign_message"  
public static final long PUSH_DEVELOPER_MESSAGE_CATEGORY = "developer_message" 
public static final long PUSH_NEW_MODEL_EMAIL_NOTIFICATION_CATEGORY = "new_model_email_notification" 
PushDomain 常量
public static final long SUBSCRIBER_PUSH_DOMAIN = "subscriber" 
public static final long VENDING_PUSH_DOMAIN = "vending" 
public static final long CATALOG_PUSH_DOMAIN = "catalog" 
public static final long DEVELOPER_PUSH_DOMAIN = "developer" 

8.13 使用消息传送 API

推送消息发送器适配器必须实现 PushMsgSender 接口。部署期间,实现类需要在 Content Delivery Server 中注册。XML 文件用于注册。此 XML 文件位于 $CDS_HOME/deployment/deployment-name/conf 目录中,且名为 pushsenderfactory.xml

以下示例显示了此文件的结构。

代码示例 11 样例 pushsenderfactory.xml 文件
<?xml version="1.0" encoding='UTF-8' ?> 
<PushSenderConfig nodeid="0"> 
  <pushmsgsenderset nodeid ="1"> 
    <pushmsgsender nodeid ="2" class =  
"com.sun.content.server.server.msgserver.push.SMSHTTPPushMsgSender" protocol="sms"/> 
    <pushmsgsender nodeid ="3" class =  
"com.sun.content.server.server.msgserver.push.WAPPushMsgSender" protocol="wap"/> 
    <pushmsgsender nodeid ="4" class =  
"com.sun.content.server.server.msgserver.push.SMTPushMsgSender" protocol="smtp"/> 
</pushmsgsenderset> 
</PushSenderConfig> 

此文件中注册了三个适配器。请指定适配器支持全限定类名和协议。例如,如果适配器用于 SMS 推送,则协议应为 SMS。确保在类路径中设置了适配器类和相关的类。

8.14 MMSSender 接口

MMSSender 接口声明用于发送 MMS 消息的方法。此接口必须在集成过程中由供应商特定的多媒体消息服务中心 (MMSC) 实现。

8.14.1 sendMMS()

发送 MMS 消息的功能封装在 sendMMS 方法中:

sendMMS(com.sun.content.server.server.messaging.message.MMSPushMessage message)  

此方法由 Content Delivery Server 消息传送服务在从 Content Delivery Server 接收 MMSPushMessage 时调用。

Content Delivery Server 将 MMSPushMessage 对象发送到 Content Delivery Server 消息传送服务。消息传送服务使用 MsgService.properties 文件中的 mms.senderclass 属性值标识提供 MMSSender.sendMMS 的供应商特定实现的类的全限定名称。sendMMS 实现中的代码将 MSSPushMessage 对象转换为 MMS 消息对象的供应商特定版本并将其发送到供应商特定 MMSC 进行处理。下图显示了此过程。

图 9-发送 MMS 消息的进程流

此图以文本形式进行说明。

实现 MMSSender.sendMMS 供应商特定版本的代码包含以下常规步骤:

  1. 连接到供应商特定的 MMSC。
  2. 实现 MMSSender.sendMMS 执行下列任务:
    1. 将传递到 Content Delivery Server 消息传送服务的 MMSPushMessage 对象转换为供应商特定的 MMS 消息对象。
    2. 将新的消息对象发送到供应商特定的 MMSC。


目录 上一页 下一页 索引 定制指南
Sun Java™ System Content Delivery Server,版本 2004Q1