@@ -9,6 +9,7 @@ gem 'bootstrap-kaminari-views' |
||
| 9 | 9 |
gem "rufus-scheduler", :require => false |
| 10 | 10 |
gem 'json', '>= 1.7.7' |
| 11 | 11 |
gem 'jsonpath' |
| 12 |
+gem 'twilio-ruby' |
|
| 12 | 13 |
|
| 13 | 14 |
gem 'delayed_job', :git => 'https://github.com/wok/delayed_job' # Until the YAML issues are fixed in master. |
| 14 | 15 |
gem 'delayed_job_active_record', "~> 0.3.3" # newer was giving a strange MySQL error |
@@ -0,0 +1,49 @@ |
||
| 1 |
+require 'rubygems' |
|
| 2 |
+require 'twilio-ruby' |
|
| 3 |
+ |
|
| 4 |
+module Agents |
|
| 5 |
+ class TwilioAgent < Agent |
|
| 6 |
+ |
|
| 7 |
+ default_schedule "every_10m" |
|
| 8 |
+ |
|
| 9 |
+ description <<-MD |
|
| 10 |
+ The TwilioAgent collects any events sent to it and send them via text message. |
|
| 11 |
+ Add more info |
|
| 12 |
+ MD |
|
| 13 |
+ |
|
| 14 |
+ def default_options |
|
| 15 |
+ {
|
|
| 16 |
+ :account_sid => "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", |
|
| 17 |
+ :auth_token => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", |
|
| 18 |
+ :senderscell => "xxxxxxxxxx", |
|
| 19 |
+ :receiverscell => "xxxxxxxxxx", |
|
| 20 |
+ :expected_receive_period_in_days => "x" |
|
| 21 |
+ } |
|
| 22 |
+ end |
|
| 23 |
+ |
|
| 24 |
+ def validate_options |
|
| 25 |
+ errors.add(:base, "account_sid,auth_token,senderscell,receiverscell are all required") unless options[:account_sid].present? && options[:auth_token].present? && options[:senderscell].present? && options[:receiverscell].present? && options[:expected_receive_period_in_days].present? |
|
| 26 |
+ end |
|
| 27 |
+ |
|
| 28 |
+ def receive(incoming_events) |
|
| 29 |
+ incoming_events.each do |event| |
|
| 30 |
+ self.memory[:queue] ||= [] # If memory[:queue] is not true, assign [] to it, a || a = b |
|
| 31 |
+ self.memory[:queue] << event.payload # Append |
|
| 32 |
+ end |
|
| 33 |
+ end |
|
| 34 |
+ |
|
| 35 |
+ def working? |
|
| 36 |
+ last_receive_at && last_receive_at > options[:expected_receive_period_in_days].to_i.days.ago |
|
| 37 |
+ end |
|
| 38 |
+ |
|
| 39 |
+ def check |
|
| 40 |
+ if self.memory[:queue] && self.memory[:queue].length > 0 |
|
| 41 |
+ @client = Twilio::REST::Client.new options[:account_sid],options[:auth_token] |
|
| 42 |
+ self.memory[:queue].each do |text| |
|
| 43 |
+ @client.account.sms.messages.create(:from=>options[:senderscell],:to=>options[:receiverscell],:body=>"#{text[:message]}")
|
|
| 44 |
+ end |
|
| 45 |
+ self.memory[:queue] = [] |
|
| 46 |
+ end |
|
| 47 |
+ end |
|
| 48 |
+ end |
|
| 49 |
+end |