Skip to content

Instantly share code, notes, and snippets.

@almokhtarbr
Forked from ryanb/call_jury_duty.rb
Created January 4, 2023 11:36
Show Gist options
  • Save almokhtarbr/94caded1b54b6c346c1d62bd56c50f57 to your computer and use it in GitHub Desktop.
Save almokhtarbr/94caded1b54b6c346c1d62bd56c50f57 to your computer and use it in GitHub Desktop.
# This should be triggered through a cron job at 6:15 PM on week days.
# Example cron: 15 18 * * 1,2,3,4,5 cd ~/code/jury_duty && ~/.rbenv/shims/ruby call.rb >> ~/code/jury_duty/call-log.txt 2>&1
# It uses Twilio to make a call based on TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, and TWILIO_PHONE.
# It calls the JURY_PHONE, transcribes it, looks for JURER_NUMBER and texts the result to PERSONAL_PHONE.
require "rubygems"
require "bundler/setup"
Bundler.require(:default)
Dotenv.load
twilio = Twilio::REST::Client.new(ENV["TWILIO_ACCOUNT_SID"], ENV["TWILIO_AUTH_TOKEN"])
call = twilio.calls.create(
twiml: '<Response><Record timeout="10" transcribe="true"/></Response>',
to: ENV["JURY_PHONE"],
from: ENV["TWILIO_PHONE"],
)
puts "Calling..."
puts "Call ID: #{call.sid}"
sleep 30
puts "Hanging up"
call.update(status: "completed")
puts "Waiting for transcript..."
sleep 30
transcription = nil
hour_ago = Time.now - (60 * 5)
8.times do
transcriptions = twilio.transcriptions.list(limit: 5)
transcription = transcriptions.first
if transcription.date_created < hour_ago
puts "Still waiting on transcript..."
sleep 30
else
break
end
end
puts transcription.date_created
puts transcription.transcription_text
if transcription.transcription_text.include? ENV["JURER_NUMBER"]
puts "Found #{ENV["JURER_NUMBER"]} in transcript!"
twilio.messages.create(
from: ENV["TWILIO_PHONE"],
to: ENV["PERSONAL_PHONE"],
body: "Your number #{ENV["JURER_NUMBER"]} has been called! #{transcription.transcription_text}"
)
else
puts "Could not find #{ENV["JURER_NUMBER"]} in transcript."
twilio.messages.create(
from: ENV["TWILIO_PHONE"],
to: ENV["PERSONAL_PHONE"],
body: "No jury duty yet. #{transcription.date_created.strftime('%b %d')} #{transcription.transcription_text}"
)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment