class AliSms::Sms

Public Class Methods

new() click to toggle source
# File lib/ali_sms/sms.rb, line 9
def initialize()
  @config = AliSms::Config.instance
end

Public Instance Methods

query_sms(option_hash = {}) click to toggle source

option_hash 需提供参数PhoneNumber, 手机号 SendDate 年月日字符串,如20171116 PageSize 结果数量 CurrentPage 当前页数 以1开始 可选参数BizId,发送流水号

返回值:Hash, 详见help.aliyun.com/document_detail/55452.html?spm=5176.doc59840.6.563.lxmKXd 此方法暂未使用

# File lib/ali_sms/sms.rb, line 62
def query_sms(option_hash = {})
  option = option_hash.stringify_keys

  option["AccessKeyId"] = @config.AccessKeyId
  option["Timestamp"] = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
  option["Format"] = "JSON"
  option["SignatureMethod"] = "HMAC-SHA1"
  option["SignatureVersion"] = "1.0"
  option["SignatureNonce"] = SecureRandom.hex(16)
  option["Action"] = "QuerySendDetails"
  option["Version"] = "2017-05-25"
  option["RegionId"] = "cn-hangzhou"

  # 业务参数
  #option["PhoneNumber"] = "18733848323"
  #option["SendDate"] = "20171116"
  option["PageSize"] = option["PageSize"] || "10"
  option["CurrentPage"] = option["CurrentPage"] || "1"

  query_str = AliSms::Util.make_query_str(option)
  sign = AliSms::Util.make_sign(query_str, "GET", @config.AccessKeySecret + "&")

  url = "http://dysmsapi.aliyuncs.com/?Signature=" + sign + "&" + query_str
  response_body = AliSms::Curl.request_url(url)
  result = JSON.parse(response_body).with_indifferent_access

  # if result.empty?
  #   result = { Message: "请求错误", RequestId: "request_error", BizId: 0 }
  # end

  return result
end
send_sms(option_hash = {}) click to toggle source

option_hash 需提供参数PhoneNumbers, 它可以是字符串和数组 TemplateCode 模板code 可选:TemplateParam 传递hash,填充模板的参数值 返回值:{ Message: , RequestId: , BizId: , Code: }

# File lib/ali_sms/sms.rb, line 18
def send_sms(option_hash = {})
  option = option_hash.deep_stringify_keys

  option["AccessKeyId"] = @config.AccessKeyId
  option["Timestamp"] = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
  option["SignatureMethod"] = "HMAC-SHA1"
  option["SignatureVersion"] = "1.0"
  option["SignatureNonce"] = SecureRandom.hex(16)
  option["SignName"] = "易百事" 
  option["Format"] = "JSON"

  if option["PhoneNumbers"].present?
    option["PhoneNumbers"] = Array.wrap(option["PhoneNumbers"]).join(",")
  end
  option["Action"] = "SendSms"
  option["Version"] = "2017-05-25"
  option["RegionId"] = "cn-hangzhou"
  option["TemplateParam"] = option["TemplateParam"].to_json

  query_str = AliSms::Util.make_query_str(option)
  sign = AliSms::Util.make_sign(query_str, "GET", @config.AccessKeySecret + "&")

  url = "http://dysmsapi.aliyuncs.com/?Signature=" + sign + "&" + query_str

  response_body = AliSms::Curl.request_url(url)
  result = JSON.parse(response_body).with_indifferent_access

  # if result.empty?
  #   result = { Message: "请求错误", RequestId: "request_error", BizId: 0 }
  # end

  return result
end