【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

接口作用

通过第三方短信平台发送短信,可以根据自己需求实现短信服务和监听服务。

正式服务器上使用该接口,需要购买了“短信平台”功能点,并在系统管理=>短信配置界面,开启短信平台,才可以使用。

接口内容

主要接口

SMSServiceProvider
package com.fr.stable.fun;

import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.stable.StringUtils;
import com.fr.stable.fun.mark.Selectable;

import java.util.List;
import java.util.Map;

/**
 * 第三方sms服务接入接口
 *
 * @author Lanlan
 */
public interface SMSServiceProvider extends Selectable {

    int CURRENT_LEVEL = 1;

    String XML_TAG = "SMSServiceProvider";

    /**
     * 根据内置的短信模板编号,转换成实际的第三方短信平台的短信模板
     *
     * @return 编号和实际模板的键值对集合
     */
    Map<String, String> mapping();

    /**
     * 发送测试短信
     *
     * @param mobile 接收短信的手机号
     * @return 结果
     */
    Response sendTest(String mobile);

    /**
     * FR包含的短信发送功能
     *
     * @param template 发送短信的模板(里面有参数,需要根据后面的para里的参数值进行替换)
     * @param mobile   接收短信的手机号
     * @param para     生成最终短信需要的参数
     * @param receiver 接收者(用户)
     * @return 结果
     * @throws Exception 异常
     */
    Response send(String template, String mobile, JSONObject para, String receiver) throws Exception;

    /**
     * FR包含的批量发送短信的功能
     *
     * @param template  发送短信的模板(里面有参数,需要根据后面的para里的参数值进行替换)
     * @param mobiles   接收短信的手机号列表
     * @param params    对应的生成最终短信需要的参数JSON数组
     * @param receivers 接收者(用户)列表,三个列表/数组,根据序号一一对应
     * @return 结果
     * @throws Exception 异常
     */
    Response batchSendSMS(String template, List<String> mobiles, JSONArray params, List<String> receivers) throws Exception;

    /**
     * 第三方sms服务响应
     */
    class Response {

        public final static String RES_STATUS_SUCCESS = "success";
        public final static String RES_STATUS_FAILED = "failed";

        private String status;
        private String msg;
        private JSONObject content;

        public static Response create(String status, String msg, JSONObject content) {
            if (StringUtils.isEmpty(status) || StringUtils.isEmpty(msg)) {
                return null;
            }
            if (content == null) {
                content = JSONObject.create();
            }
            return new Response(status, msg, content);
        }

        private Response(String status, String msg, JSONObject content) {
            this.status = status;
            this.msg = msg;
            this.content = content;
        }

        public String getStatus() {
            return status;
        }

        public void setStatus(String status) {
            this.status = status;
        }

        public String getMsg() {
            return msg;
        }

        public void setMsg(String msg) {
            this.msg = msg;
        }

        public JSONObject getContent() {
            if (!content.has("status")) {
                content.put("status", status);
            }
            if (!content.has("msg")) {
                content.put("msg", msg);
            }
            return content;
        }

        public void setContent(JSONObject content) {
            this.content = content;
        }
    }

    /**
     * sms监听器
     *
     * @author Lanlan
     * @date 2019/1/29
     */
    interface Listener {

        /**
         * 短信发送前事件处理接口
         *
         * @param text      发送短信的模板(里面有参数,需要根据后面的para里的参数值进行替换)
         * @param mobiles   接收短信的手机号列表
         * @param params    生成最终短信需要的参数JSON数组
         * @param receivers 接收者(用户)列表
         */
        void beforeSend(String text, List<String> mobiles, JSONArray params, List<String> receivers);

        /**
         * 短信发送后事件处理接口
         *
         * @param text      发送短信的模板(里面有参数,需要根据后面的para里的参数值进行替换)
         * @param mobiles   接收短信的手机号列表
         * @param params    生成最终短信需要的参数JSON数组
         * @param receivers 接收者(用户)列表
         * @param response  响应(仅在使用了第三方服务接口后且仅在发送结束后事件有效!)
         */
        void afterSend(String text, List<String> mobiles, JSONArray params, List<String> receivers, Response response);
    }
}

接口接入

<extra-core>
    <SMSServiceProvider class="com.fr.plugin.third.sms.SRGT"/>
</extra-core>

示例效果

接口示例

示例源码:https://git.fanruan.com/fanruan/demo-third-sms

注意事项

内置各类短信时间的编号和模板列表:

项目短信编号默认模板内容
定时任务发送失败提醒10

【信息平台】尊敬的管理员,#taskname##time#运行失败,请知晓。

工单提醒11

【帆软软件】尊敬的#name#,您有一个工单号为:#order_number#的待处理工单,请您及时处理!

短信平台告警13

【帆软软件】您好,#webname#系统内存持续#m#分钟内存高于#n#,可能存在宕机风险,请及时关注。

定时任务发送失败提醒14

【帆软软件】尊敬的管理员,#taskname##time#运行失败,请知晓。

定时任务发送成功提醒15

【帆软软件】您好,#taskname##time#运行成功。

短息登录验证码16

【帆软软件】您的手机验证码为#Verifiecode#,请于10分钟内正确输入。

短信平台告警17

【信息平台】您好,#webname#系统内存持续#m#分钟内存高于#n#,可能存在宕机风险,请及时关注。

短信平台测试结果18

【信息平台】恭喜!您的短信服务已经配置成功。

短信平台开通通知19

【信息平台】您好,#taskname##time#运行成功。

短息登录验证码20

【信息平台】您的手机验证码为#verifiecode#,请于10分钟内正确输入。

日志清理预警49

【信息平台】您好,#webname#系统日志文件已大于#logsize#M,请及时登录平台进行日志清理。

短信平台告警50

【信息平台】您好,#webname#系统#clustername#内存持续#m#分钟内存高于#n#,可能存在宕机风险,请及时关注。

定时任务发送失败提醒51

【信息平台】你好,#task#出错,请及时处理。该任务开始执行时间:#time#

上报流程预警53

【信息平台】上报任务 #task#,已经到您这里#time#,请尽快处理!

上报流程提醒54

【信息平台】#name#您好,上报任务#task#已经发起,请尽快处理!

集群状态异常提醒63

【信息平台】系统检测到,节点#node_id#的系统时间与其他节点不一致。请配置时间服务器,实现节点时间的自动同步。

集群状态异常提醒64

【信息平台】节点#node_id#,非正常脱离集群环境。请重启该节点,加入集群。

集群状态异常提醒89

【信息平台】节点#nodename#,与节点#node1name#jar包不一致,将影响集群工程的稳定性,请前往集群节点管理页面查看详细异常信息,并及时处理。

集群状态异常提醒

90

【信息平台】节点#nodename#情况异常,用户不能正常访问,请及时检查该节点状态。

任务提醒125

【信息平台】您有个#proname#任务即将过期,请您尽快办理。

任务提醒127

【信息平台】您有个#proname#任务需要处理,请您尽快办理。发起人:#startpeople#,发起时间:#starttime#

集群状态异常提醒134

【信息平台】#ip_port#节点已无法使用,可能原因为:节点宕机、内存已满、其他异常。为避免影响用户使用,请前往状态服务器配置页面查看详情,并及时处理。

文件服务器异常提醒135

【信息平台】文件服务器出现无法读写的情况,可能原因为:文件服务器宕机、磁盘已满、其他异常。为避免影响用户使用,请及时检查文件服务器状态。

短信平台告警136

【信息平台】您好,#webname#系统#clustername#当前负载状态过高,可能存在宕机风险,请及时关注。建议使用管理系统-智能运维-云端运维功能分析当前系统存在的性能问题。

  • No labels