文档中心 > API文档

1.7.2.1. 接口说明

接口名称:interface MessagePipeline

必须实现的方法如下:

方法定义 返回值 备注
getName() String 消息展现通道的系统标示,注意不要重复,有数字字母 下划线构成,如:pc,sms,email,rtx,gke getShowName() string 消息展现通道的显示名称 isAvailability() boolean 该通道是否可用,可以控制是否需要消息展现
isAllowSetting(User currentUser) String 是否允许用户在“个人设置-消息提示设置”中进行配 置; 如:短信提示,需要后台管理员授权,并且设置了个人 的手机号码,人员是当前登录者,允许配置返回 null, 否则返回提示信息(注意国际化)
getAllowSettingCategory() List<Integer> 得到哪些应用类别可以配置(参考 ApplicationCategoryEnum), 如果采用系统默认, 请直接返回 null 如果不允许配置请参考 isAllowSetting(User currentUser)
invoke(Message[] messages) void 在此方法中处理消息,把消息集成到外系统 getSortId() int 排序号,从 0 开始
isDefaultSend() boolean 默认是否发送,如果为 false,则个人需要在“个人设 置-消息提示设置”中进行配置

注册到系统

<bean id="rtxMessagePipeline" class="com.seeyon.v3x.plugin.rtx.message.RTXMessagePipeline"/> 

系统启动时显示:

[main] INFO MessagePipelineManagerImpl:68 - 加载消息展现通道:[pc, email, rtx]

则代表pc、email和rtx三个消息通道实现加载成功。

代码示例

以 RTX 消息展现为例:

public class RTXMessagePipeline implements MessagePipeline {
     // 处理消息
     public void invoke(Message[] messages) {
         for (Message message: messages) {
             try {
                 String remoteURL = message.getRemoteURL();
                 String userName = message.getReceiverMember().getLoginName();
                 RTXNotifyValueBean value = new RTXNotifyValueBean();
                 String content = message.getContent();
                 value.title = message.getSenderMember().getName();
                 // ...
                 rtxSendNotifyManager.sendNotify(value);
             } catch (Throwable e) {
                 log.error("", e);
             }
         }
     }
     // 该通道是否可用
     public boolean isAvailability() {
         return SystemEnvironment.hasPlugin("rtx");
     }
     // 消息展现通道的系统标示
     public String getName() {
         return "rtx";
     }
     // 默认是否发送
     public boolean isDefaultSend() {
         return false;
     }
     // 排序号
     public int getSortId() {
         return 6;
     }
 }