Skip to content

Commit b00276a

Browse files
authored
fix: Add special values to Twilio live call routing recording email (#87)
1 parent ffb8b4b commit b00276a

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
pager_tree-integrations (1.1.4)
4+
pager_tree-integrations (1.1.5)
55
rails (>= 7.0.1)
66

77
GEM

app/models/pager_tree/integrations/live_call_routing/twilio/v3.rb

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def option_record_emails_list
8383
end
8484

8585
def validate_record_emails
86-
errors.add(:record_emails, "must be a valid email") if option_record_emails.any? { |x| !x.match(URI::MailTo::EMAIL_REGEXP) }
86+
errors.add(:record_emails, "must be a valid email") if option_record_emails.any? { |x| !(x.match(URI::MailTo::EMAIL_REGEXP) || ["team", "team-admin", "on-call"].include?(x)) }
8787
end
8888

8989
def adapter_supports_incoming?
@@ -229,8 +229,24 @@ def adapter_response_dropped
229229

230230
adapter_alert.logs.create!(message: "Caller left a <a href='#{recording_url}' target='_blank'>voicemail</a>.")
231231

232-
option_record_emails.each do |email|
233-
LiveCallRouting::Twilio::V3Mailer.with(email: email, alert: adapter_alert, from: adapter_incoming_request_params.dig("From"), recording_url: recording_url).call_recording.deliver_later
232+
if option_record_emails.any?
233+
emails = option_record_emails.map do |x|
234+
if x == "team"
235+
Array(adapter_alert.destination_teams.map(&:admin_users).flatten&.map(&:email)) + Array(adapter_alert.destination_teams.map(&:member_users).flatten&.map(&:email))
236+
elsif x == "team-admin"
237+
Array(adapter_alert.destination_teams.map(&:admin_users).flatten&.map(&:email))
238+
elsif x == "on-call"
239+
adapter_alert.destination_teams.map do |t|
240+
Array(t.schedule.current_oncall_event_occurrences.map(&:attendees).flatten.map(&:attendee).uniq.map(&:email))
241+
end
242+
else
243+
x
244+
end
245+
end.flatten.compact_blank.uniq
246+
247+
emails.each do |email|
248+
LiveCallRouting::Twilio::V3Mailer.with(email: email, alert: adapter_alert, from: adapter_incoming_request_params.dig("From"), recording_url: recording_url).call_recording.deliver_later
249+
end
234250
end
235251
elsif option_record
236252
_twiml.play(url: option_no_answer_media_url)

0 commit comments

Comments
 (0)