跳到主要内容

短信插件

短信插件体系说明

调起短信插件和其他插件不同,为了加快响应时间,短信插件的调起是由后端异步调起的,客户端调起发短信功能,只是向mq发送一个消息,消费者监听到消息之后,才会真正的调起短信插件来发送短信。下面以发送短信验证码为例:

image-20201207114436309

插件接口

SmsPlatform

插件方法描述

    /**
* 配置各个存储方案的参数
*
* @return 参数列表
*/
List<ConfigItem> definitionConfigItem();

/**
* 发送短信事件
*
* @param phone 手机号
* @param content 发送内容
* @param param 其它参数
* @return
*/
boolean onSend(String phone, String content, Map param);


/**
* 获取插件ID
*
* @return 插件beanId
*/
String getPluginId();

/**
* 获取插件名称
*
* @return 插件名称
*/
String getPluginName();

/**
* 短信网关是否开启
*
* @return 0 不开启 1 开启
*/
Integer getIsOpen();

现有短信方式

助通短信

image-20201207114436309

开发新的短信插件

实现插件接口

@Service
public class YourPlugin implements SmsPlatform {
//其他方法略
}

注意:用@Service注解为spring bean,以便spring ioc识别,将插件扫描加入插件体系。

定义插件id及名字

    @Override
public String getPluginId() {
return "myPluginName";
}
@Override
public String getPluginName() {
return "xx短信插件";
}

注意:需要保持插件id的唯一性,这是插件机制调起插件依据

定义短信配置项

短信平台配置项的目的是定义用户使用短信插件前需要配置的一些短息查询参数,如用户名等:

image-20201207114436309

要达到上图的效果,需要后端来配置信息,具体在短信接口的definitionConfigItem中,一个配置项相当于一个ConfigItem对象,如下

    @Override
public List<ConfigItem> definitionConfigItem() {
List<ConfigItem> list = new ArrayList();


ConfigItem name = new ConfigItem();
name.setType("text");
name.setName("name");
name.setText("用户名");

ConfigItem password = new ConfigItem();
password.setType("text");
password.setName("password");
password.setText("密码");

ConfigItem id = new ConfigItem();
id.setType("text");
id.setName("id");
id.setText("产品id");

ConfigItem trumpet = new ConfigItem();
trumpet.setType("text");
trumpet.setName("trumpet");
trumpet.setText("扩展的小号(没有请留空)");

list.add(name);
list.add(password);
list.add(id);
list.add(trumpet);

return list;
}

短信配置的获取

用户配置了短信平台的参数(如用户名等)在短信调起时需要获取到这些参数,可以通过如下方法获取:

 Map  SmsManagerImpl.getConfig()

返回值

以助通短信,返回类型Map如下,具体返回值不同的插件返回不同,会根据定义短信配置项内容相关

{
"name":"XXXXXXXXX",
"password":"XXXXXXX",
"id":"0"
}

编写发送逻辑

    @Override
public boolean onSend(String phone, String content, Map param) {
//在这里编写插件的查询逻辑
}

入参

  • phone

    要发送的手机号码

  • content

    要发送的短信内容

  • param

    短信参数获取的得到的map值

返回值

boolean 成功/失败