TRSWCM如何集成第三方的短信发送接口
最后更新时间:2021年07月27日 人气:...

1.前言

  WCM产品很多功能会使用到短信发送功能,比如:在工作流流转过程中,通过短信通知相应的人员;WCM用户直接通过消息(包括站内消息、短信消息)进行协作沟通等。

  由于发送短信需要购买短信网关,而且是收费的,并且不同厂商的短信网关接口也不一样,所以WCM产品自身只是提供了发送短信的接口抽象,项目在具体实现发送短信功能时,需要实现该接口来达到真正发送短信的目的。

  以下将以示例介绍如何在WCM中集成短信发送功能。


2.WCM集成第三方短信接口的具体步骤

2.1 获取第三方短信发送接口

  由于发送短信需要购买短信网关,而短信网关提供商会提供发送短信的示意代码,所以需要和用户沟通如何获取短信网关及相关资料,这个用户那边自己一般会购买。

2.2 实现WCM的短信接口

  如引言中的说明,WCM很多功能已经使用到了短信接口,但真正发送短信是一个空的方法实现,所以本步骤中,需要项目实现WCM的接口,在里面调用网关厂商的代码。

2.2.1 撰写ISendWorker接口实现的类

  撰写一个新的类,如:MySMSSendWorker,该类需要实现WCM的接口ISendWorker;新类的名称和包的名称可以根据自己的需求进行定义。笔者新建生成空的类名为MySMSSendWorker,代码如下:

package com.trs.components.common.message;
import com.trs.cms.auth.persistent.User;

public class MySMSSendWorker implements ISendWorker {
 public void send(Message message, User receiver) {
 // TODO Auto-generated method stub
 }
}

用户的发送代码需要在send中完成。

2.2.2 实现ISendWorker的send方法

在新撰写的类中实现send方法,send方法的参数说明如下:

Message:com.trs.components.common.message.Message


           含有用户发送消息的许多信息,常用到的有:


                      getCrUserName():获得当前用户的用户名


                      getTitle():获得当前消息的标题


                      getBody():获得当前消息的内容

User:com.trs.cms.auth.persistent.User


         含有短信接收人的相关信息,此处常用的函数有:


                     getMobile():获取消息接收者的手机号。

  通过上面两个参数能够获取用户发送短信所需的一切信息。笔者的试例代码如下,用户在使用时需按照服务提供上提供的接口进行编码。

 public void send(Message _currMessage, User _currReceiver) {
     //CMySms 为用户接口,不同接口中的函数有所不同,请根据情况使用
     UserSMS mySMS = new UserSMS();
     //获取发短信的人 
     mySMS.setFrom(_currMessage.getCrUserName());
     try {
         //获取并设置短信接收人 
         mySMS.setTo(_currReceiver.getMobile());
         //获取并设置短信内容 
         mySMS.setContent(_currMessage.getTitle() + ":"
         + _currMessage.getBody());
         //短信发送 
         mySMS.send();
    } catch (CMyException e) {
    logger.error(I18NMessage.get(SMSSendWorker.class,
    "SMSSendWorker.label1", "发送手机短信失败!"), e);
 }
 }


2.2.3 调整配置文件

修改配置文件【configfiles rsconfigdomaincom.trs.components.common.messageeans.xml】中的字段使WCM调用用户自定义的类。


修改方法如下:

  将所圈地方修改成用户自定义的类的路径。笔者的包为com.trs.components.common.message,类名为MySMSSendWorker ,因此笔者此处改为com.trs.components.common.message.MySMSSendWorker。

2.3 部署测试

  将写好的类及配置文件应用到WCM的Tomcat环境中,测试工作流或在线消息等功能的短信发送功能。


热门评论