使用Ruby的Twilio SMS

时间:2018-02-19 02:02:49

标签: ruby csv twilio

我一直致力于一个能够读取CSV excel文件并过滤通过短信发送的信息的程序。目前,该程序只能通过短信发送一行过滤信息。应该修改什么能够一行一行地发送?

目前,代码在第1列和第2列搜索“medium”和“2”。它将发送第0列和第4列。因此结果将是“DT3 / SIG”,“修复Windows” 但它不会发出第5行 - “90430 / RSO”,“修复灯”

enter image description here

require 'rubygems'
require 'twilio-ruby'
require "csv"

def load_alarms
  CSV.read 'alarms.csv', {col_sep: ';'}
end

def filter_by_event_type_and_severity(alarms, event_type, severity)
  alarms.select do |alarm|
    alarm[1] == event_type && alarm[2].to_i == severity.to_i
  end
end

target_alarms = filter_by_event_type_and_severity(
    load_alarms, 'medium', 2)
equipments  = target_alarms.map { |alarm| [alarm[0], alarm[3]] }

p equipments

account_sid = 'ACCOUNT_ID'
auth_token = 'AUTH_TOKEN'
client = Twilio::REST::Client.new account_sid, auth_token

client.api.account.messages.create(
    from: 'SENDER_PHONE',
    to: 'TARGET_PHONE',
    body: equipments
  )

1 个答案:

答案 0 :(得分:3)

正如我在评论中所写,您需要做的就是迭代equipments方法获得的filter_by_event_type_and_severity,并使用twillo api逐个发送它们:

require 'rubygems'
require 'twilio-ruby'
require "csv"

def load_alarms
  CSV.read 'alarms.csv', {col_sep: ';'}
end

def filter_by_event_type_and_severity(alarms, event_type, severity)
  alarms.select do |alarm|
    alarm[1] == event_type && alarm[2].to_i == severity.to_i
  end
end

target_alarms = filter_by_event_type_and_severity(load_alarms, 'medium', 2)
equipments  = target_alarms.map { |alarm| [alarm[0], alarm[3]] }

account_sid = 'ACCOUNT_ID'
auth_token = 'AUTH_TOKEN'
client = Twilio::REST::Client.new account_sid, auth_token

# Here is the iteration
equipments.each do |equipment|
  client.api.account.messages.create(
    from: 'SENDER_PHONE',
    to: 'TARGET_PHONE',
    body: equipment
  )
end

我删除了您的account_id,auth_token和电话号码,因此您需要将其添加回来