Initial commit
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
# Install twilio
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
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()
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
twilio==7.5.1
|
||||||
|
pyexcel==0.6.2
|
||||||
|
pyexcel_xlsx==0.6.0
|
||||||
Executable
+21
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
root_dir="/home/phoenix/programming/python/experiments/twilo_demo"
|
||||||
|
|
||||||
|
numbers_part="60"
|
||||||
|
numbers_path="numbers/numbers-$numbers_part.json"
|
||||||
|
# numbers_path="numbers/test_number.json"
|
||||||
|
type_message="json"
|
||||||
|
messages_path="messages/message-$numbers_part.json"
|
||||||
|
send_message="True"
|
||||||
|
|
||||||
|
echo "Changing directory to $root_dir"
|
||||||
|
cd $root_dir
|
||||||
|
|
||||||
|
source env/bin/activate
|
||||||
|
echo "Activated virtual environment"
|
||||||
|
|
||||||
|
python main.py "$numbers_path" "$type_message" "$messages_path" "$send_message"
|
||||||
|
|
||||||
|
echo "Done"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"account_sid": "account_sid",
|
||||||
|
"service_sid": "service_sid",
|
||||||
|
"auth_token": "auth_token",
|
||||||
|
"number": "0123456789"
|
||||||
|
}
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user