138 lines
3.5 KiB
Python
138 lines
3.5 KiB
Python
import sys
|
|
import json
|
|
import time
|
|
|
|
from twilio.rest import Client
|
|
import pyexcel
|
|
import pyexcel_xlsx
|
|
|
|
|
|
|
|
class MYTwilioConfig(object):
|
|
|
|
def __init__(self, account_sid=None, service_sid=None, token=None, number=None):
|
|
self.account_sid = account_sid
|
|
self.service_sid = service_sid
|
|
self.auth_token = token
|
|
self.phone_number = number
|
|
|
|
account_sid = ""
|
|
service_sid = ""
|
|
auth_token = ""
|
|
phone_number = ""
|
|
|
|
|
|
|
|
def test_twilio_config(account_sid="ACefa1ef516314c9d1a68cbd657de49277", service_sid="MG803f3676706b92eb02e18dd820c447f2", token="f4a1f2b0b79ea3735078c2d8ee9684e1", number="12243026041"):
|
|
config = MYTwilioConfig(account_sid, service_sid, token, number)
|
|
|
|
return config
|
|
|
|
|
|
def json_file_to_object(filepath):
|
|
json_data = json.load(open(filepath))
|
|
|
|
return json.dumps(json_data)
|
|
|
|
|
|
def test_phone_number_lists(file_path, file_type):
|
|
phone_lists = []
|
|
|
|
if file_type == "excel":
|
|
print("Chose excel: %s" % file_path)
|
|
records = pyexcel.get_records(file_name=file_path)
|
|
# records = pyexcel_xlsx.get_data(file_path)
|
|
|
|
for record in records:
|
|
number = record['To']
|
|
|
|
phone_lists.append(number)
|
|
elif file_type == "json":
|
|
json_data = json.load(open(file_path))
|
|
|
|
for data in json_data:
|
|
print(data)
|
|
phone_lists.append(data)
|
|
|
|
return phone_lists
|
|
|
|
def load_message(filepath):
|
|
json_data = json.load(open(filepath))
|
|
|
|
message = json_data[0]
|
|
|
|
return message
|
|
|
|
|
|
def send_message(config, number_list, body, send, sleep_sec_amount = 5):
|
|
client = Client(config.account_sid, config.auth_token)
|
|
|
|
|
|
print("Message to send: %s\n\n" % (body))
|
|
amount = 0
|
|
|
|
for number in number_list:
|
|
if send:
|
|
|
|
print("Sending message to %s" % (number))
|
|
message = client.messages.create(
|
|
messaging_service_sid=config.service_sid,
|
|
body=body,
|
|
to=number
|
|
)
|
|
|
|
amount += 1
|
|
|
|
if amount % 10 == 0:
|
|
time.sleep(sleep_sec_amount)
|
|
else:
|
|
time.sleep(2)
|
|
else:
|
|
print("Not sending message to %s" % number)
|
|
|
|
def test_message():
|
|
message = "WEAREOBSESSEDWITHHEALING.WEVOWTOFAIL. SUMOFTHEBROTHERSFORTHESISTAS. FLORIDAMAN EGGROLLS! DIRKTHEDEATHROWBANDIT. KAVAKAT 9 PM SATURDAY 7/31."
|
|
|
|
|
|
return message
|
|
|
|
|
|
def main():
|
|
print("twilio_demo")
|
|
|
|
config = test_twilio_config()
|
|
message = test_message()
|
|
should_send = False
|
|
json_phone_path = ""
|
|
json_message_path = ""
|
|
file_type = "json"
|
|
|
|
if len(sys.argv) <= 2:
|
|
sys.exit(-1)
|
|
|
|
if len(sys.argv) == 5:
|
|
json_phone_path = sys.argv[1]
|
|
file_type = sys.argv[2]
|
|
json_message_path = sys.argv[3]
|
|
should_send = True if sys.argv[4] == 'True' else False
|
|
|
|
print("source file path: %s" % json_phone_path)
|
|
print("file type: %s" % file_type)
|
|
print("message path: %s" % json_message_path)
|
|
print(should_send)
|
|
else:
|
|
print("Didn't provide enough arguments")
|
|
sys.exit(-1)
|
|
|
|
|
|
print("Getting list of numbers")
|
|
numbers = test_phone_number_lists(json_phone_path, file_type)
|
|
print("Loading message")
|
|
message = load_message(json_message_path)
|
|
|
|
send_message(config, numbers, message, should_send, 5)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|