add sendSmsUniCloud
This commit is contained in:
		
							parent
							
								
									a7d45c3473
								
							
						
					
					
						commit
						dba319adde
					
				@ -10,15 +10,20 @@ module.exports = {
 | 
				
			|||||||
    tls: { rejectUnauthorized: false }
 | 
					    tls: { rejectUnauthorized: false }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  SMS: {
 | 
					  SMS: {
 | 
				
			||||||
    dxton:{
 | 
					    UNICLOUD: {
 | 
				
			||||||
 | 
					      appid: '????',
 | 
				
			||||||
 | 
					      smsSecret: '????',
 | 
				
			||||||
 | 
					      smsKey: '????',
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    DXTON: {
 | 
				
			||||||
      urlChina:'http://sms.106jiekou.com/utf8/sms.aspx?account=????&password=????',
 | 
					      urlChina:'http://sms.106jiekou.com/utf8/sms.aspx?account=????&password=????',
 | 
				
			||||||
      urlWorld:'http://sms.106jiekou.com/utf8/worldapi.aspx?account=????&password=????',
 | 
					      urlWorld:'http://sms.106jiekou.com/utf8/worldapi.aspx?account=????&password=????',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    aliyun:{
 | 
					    ALIYUN: {
 | 
				
			||||||
      accessKeyId:'????',
 | 
					      accessKeyId:'????',
 | 
				
			||||||
      secretAccessKey:'????',
 | 
					      secretAccessKey:'????',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    tencent:{ // https://cloud.tencent.com/document/product/382/43197
 | 
					    TENCENT: { // https://cloud.tencent.com/document/product/382/43197
 | 
				
			||||||
      credential: {
 | 
					      credential: {
 | 
				
			||||||
        /* 必填:腾讯云账户密钥对secretId,secretKey。
 | 
					        /* 必填:腾讯云账户密钥对secretId,secretKey。
 | 
				
			||||||
         * 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
 | 
					         * 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										41
									
								
								messenger.js
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								messenger.js
									
									
									
									
									
								
							@ -16,16 +16,22 @@ module.exports = {
 | 
				
			|||||||
    return await util.promisify(my.smtpTransporter.sendMail).call(my.smtpTransporter, option)
 | 
					    return await util.promisify(my.smtpTransporter.sendMail).call(my.smtpTransporter, option)
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  async sendSms ({ phone, vendor, msg, msgParam, msgTemplate, signName }={}) {
 | 
					  async sendSms ({ phone, vendor, 
 | 
				
			||||||
 | 
					    msg, // for vendor==='DXTON'
 | 
				
			||||||
 | 
					    msgParam, msgTemplate, // for ['ALIYUN','UNICLOUD'].includes(vendor)
 | 
				
			||||||
 | 
					    signName // for vendor==='ALIYUN'
 | 
				
			||||||
 | 
					  } = {}) {
 | 
				
			||||||
    // 通过option对象,对外提供统一的调用参数格式
 | 
					    // 通过option对象,对外提供统一的调用参数格式
 | 
				
			||||||
    if (/^\+\d+-\d+$/.test(phone)) {
 | 
					    if (/^\+\d+-\d+$/.test(phone)) {
 | 
				
			||||||
      if (vendor === 'dxton' && msg) {
 | 
					      if (vendor === 'DXTON' && msg) {
 | 
				
			||||||
        return await this.sendSmsDxton(phone, msg)
 | 
					        return await this.sendSmsDxton(phone, msg)
 | 
				
			||||||
      } else if (vendor === 'aliyun' && msgParam && msgTemplate && signName) {
 | 
					      } else if (vendor === 'ALIYUN' && msgParam && msgTemplate && signName) {
 | 
				
			||||||
        return await this.sendSmsAliyun(phone, msgParam, msgTemplate, signName)
 | 
					        return await this.sendSmsAliyun(phone, msgParam, msgTemplate, signName)
 | 
				
			||||||
 | 
					      } else if (vendor === 'UNICLOUD' && msgParam && msgTemplate) {
 | 
				
			||||||
 | 
					        return await this.sendSmsUnicloud({phone, msgParam, msgTemplate})
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return null // 手机号格式错误,或者 option.vendor 错误。
 | 
					    return null // 手机号格式错误,或者 vendor 错误。
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  /*  使用 dxton.com 的短信接口 http://www.dxton.com/help_detail/38.html
 | 
					  /*  使用 dxton.com 的短信接口 http://www.dxton.com/help_detail/38.html
 | 
				
			||||||
@ -38,10 +44,10 @@ module.exports = {
 | 
				
			|||||||
    var matches = phone.match(/\d+/g)
 | 
					    var matches = phone.match(/\d+/g)
 | 
				
			||||||
    var smsNumber, smsUrl
 | 
					    var smsNumber, smsUrl
 | 
				
			||||||
    if (matches[0] === '86') {
 | 
					    if (matches[0] === '86') {
 | 
				
			||||||
      smsUrl = wo.envi.SMS.dxton.urlChina
 | 
					      smsUrl = wo.envi.SMS.DXTON.urlChina
 | 
				
			||||||
      smsNumber = matches[1]
 | 
					      smsNumber = matches[1]
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      smsUrl = wo.envi.SMS.dxton.urlWorld // 国际短信不需要签名、模板,可发送任意内容。
 | 
					      smsUrl = wo.envi.SMS.DXTON.urlWorld // 国际短信不需要签名、模板,可发送任意内容。
 | 
				
			||||||
      smsNumber = matches[0] + matches[1]
 | 
					      smsNumber = matches[0] + matches[1]
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // let returnCode = await RequestPromise.get(smsUrl + '&mobile=' + smsNumber + '&content=' + encodeURIComponent(msg))
 | 
					    // let returnCode = await RequestPromise.get(smsUrl + '&mobile=' + smsNumber + '&content=' + encodeURIComponent(msg))
 | 
				
			||||||
@ -95,4 +101,27 @@ module.exports = {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  async sendSmsUniCloud({ phone, msgTemplate, msgParam, appid, smsKey, smsSecret }) {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      const result = await uniCloud.sendSms({
 | 
				
			||||||
 | 
					        appid: appid || my.envi.SMS.UNICLOUD.appid || wo.envi.SMS.UNICLOUD.appid,
 | 
				
			||||||
 | 
					        smsKey: smsKey || my.envi.SMS.UNICLOUD.smsKey || wo.envi.SMS.UNICLOUD.smsKey,
 | 
				
			||||||
 | 
					        smsSecret: smsSecret || my.envi.SMS.UNICLOUD.smsSecret || wo.envi.SMS.UNICLOUD.smsSecret,
 | 
				
			||||||
 | 
					        phone,
 | 
				
			||||||
 | 
					        templateId: msgTemplate || 'uni_sms_test',
 | 
				
			||||||
 | 
					        data: msgParam // 模版中的变量的值,例如 { passcode: '234345', purpose: '注册' }
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      // 调用成功,请注意这时不代表发送成功
 | 
				
			||||||
 | 
					      return Object.assign(result, { _state:'SMS_SENT_SUCCESS' }) // { code:0, errCode:0, success:true }
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					      // 调用失败
 | 
				
			||||||
 | 
					      // {"code":undefined,"msg":"短信发送失败:账户余额不足"}
 | 
				
			||||||
 | 
					      return {
 | 
				
			||||||
 | 
					        _state: 'SMS_SEND_FAIL',
 | 
				
			||||||
 | 
					        error // { errCode, errMsg }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user