-
Notifications
You must be signed in to change notification settings - Fork 6
/
deliver_sms_job.rb
32 lines (26 loc) · 965 Bytes
/
deliver_sms_job.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# frozen_string_literal: true
class DeliverSmsJob < ApplicationJob
def perform(user_con_profile, content, debug)
return unless twilio_client
destination = sms_destination(user_con_profile, debug)
return unless destination
actual_content = debug ? "DEBUG: Message to #{user_con_profile.name_without_nickname}\n\n#{content}" : content
twilio_client.messages.create(
from: ENV['TWILIO_SMS_NUMBER'],
to: Phonelib.parse(destination).e164,
body: actual_content
)
end
def sms_destination(user_con_profile, debug)
if debug
ENV['TWILIO_SMS_DEBUG_DESTINATION'].presence
else
return nil unless user_con_profile&.allow_sms?
user_con_profile.mobile_phone.presence
end
end
def twilio_client
return unless ENV['TWILIO_ACCOUNT_SID'].present? && ENV['TWILIO_AUTH_TOKEN'].present?
@twilio_client ||= Twilio::REST::Client.new ENV['TWILIO_ACCOUNT_SID'], ENV['TWILIO_AUTH_TOKEN']
end
end