接口名称: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; } }