Ruby接入预警通知接口:简单调用方式

Ruby与Rails在Web应用开发中语法简洁、表达力强。用Ruby接入互亿无线预警通知接口,可以在Rails后端、Rake定时任务或脚本中快速发出短信或语音告警。Ruby标准库net/http足以完成POST请求,无需额外gem。本文给出…

Ruby与Rails在Web应用开发中语法简洁、表达力强。用Ruby接入互亿无线预警通知接口,可以在Rails后端、Rake定时任务或脚本中快速发出短信或语音告警。Ruby标准库net/http足以完成POST请求,无需额外gem。本文给出简洁的调用示例。

Ruby接入的接口与参数

短信接口 https://api.ihuyi.com/sms/Submit.json ,语音接口 https://api.ihuyi.com/voice/vm 。参数account、password、mobile、content,表单方式提交。

  • account=APIID,password=APIKEY;
  • mobile=接收手机号;
  • content=通知内容;
  • 返回JSON中code=2为提交成功。

Ruby发送告警代码示例

使用net/http与uri库,几行即可完成:

require "net/http"
require "uri"
require "json"

def send_sms(mobile, content)
  uri = URI("https://api.ihuyi.com/sms/Submit.json")
  res = Net::HTTP.post_form(uri, {
    "account"  => "你的APIID",
    "password" => "你的APIKEY",
    "mobile"   => mobile,
    "content"  => content
  })
  JSON.parse(res.body) # code=2为提交成功
end

result = send_sms("13800138000", "Rails后台订单同步任务失败,请尽快检查")
puts result

post_form会自动对中文参数做URL编码。

Ruby接入注意事项

  • Net::HTTP默认走HTTPS时会校验证书,确保系统CA包完整;
  • 在Rails中可封装成Service对象,供控制器与Job调用;
  • 密钥从credentials或环境变量读取;
  • 返回code不等于2时记录响应体,便于排查。

带错误处理的Rails Service封装

在Rails项目里建议把发送逻辑封装成Service对象,并加上超时与返回码判断。下面这个版本适合放在app/services目录下:

class SmsNotifier
  API_URL = "https://api.ihuyi.com/sms/Submit.json"

  def self.send(mobile, content)
    uri = URI(API_URL)
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    http.open_timeout = 10
    http.read_timeout = 10

    res = http.post(uri.path, URI.encode_www_form(
      "account"  => ENV["IHUYI_APIID"],
      "password" => ENV["IHUYI_APIKEY"],
      "mobile"   => mobile,
      "content"  => content
    ))
    data = JSON.parse(res.body)
    Rails.logger.info("告警提交 code=#{data['code']} msg=#{data['msg']}")
    data
  rescue StandardError => e
    Rails.logger.error("告警发送异常: #{e.message}")
    nil
  end
end

# 控制器或Job中调用
SmsNotifier.send("13800138000", "订单同步Job连续失败,请检查")

运行方式与依赖说明

示例依赖Ruby标准库net/http与json,无需额外gem。在Rails中通过ENV读取密钥,可用credentials.yml.enc管理。post_form与encode_www_form都会自动对中文做URL编码。

常见报错排查

  • SSL校验失败:确认系统CA证书完整,Ruby的Net::HTTP默认校验证书;
  • Net::OpenTimeout:检查服务器出网与代理;
  • 返回code非2:打印data["msg"]定位认证、手机号或模板问题;
  • 语音通道:URL换成 https://api.ihuyi.com/voice/vm 。

Ruby项目用几行代码就能接入告警。前往注册免费试用获取APIID与APIKEY。

立即开始,免费体验

新用户注册即送免费测试额度,3分钟快速接入,专属客服全程指导

免费试用 →