Skip to content

Commit d5d49b2

Browse files
committed
files restructured and added
1 parent fdad6f7 commit d5d49b2

18 files changed

+387
-2
lines changed

FRRO TRIAL.xls

17.5 KB
Binary file not shown.

FRRO-Reminder-API.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"type": "service_account",
3+
"project_id": "frro-reminder",
4+
"private_key_id": "2e6ed7553a99941b6f57134b038447e3eba55791",
5+
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDqFW8fXWwTTi7b\naZP3NLWb528+fxNB4TQO89V4M9mNCgjTavNkiTiUN9ERmoWrUJu3KiouVYZTpfCi\nSYltPTy0pmP+pn9PclxvmW437KngQt1QZebrrF5XWPvyK7l7ebXx0VCAlf6cuDbt\nNU3GQX/0en+R6g+evPLRWbzyxOtrX6D3S3Fc50Kdr1YWa35LM/f3ERBvBIegfh7O\nBxU1HTODGIgpsWhZs3bw+6Rg2P8h6BHMvEMqWVSFjLVvJY0z9eCfBaDjJ14/WRDy\nMM58X6ZMbxQc736uIF2eKFCS/6ce5T6UJJBNwIGr+FjVb1pAV1lwVRMLuJsae3/a\n0PAazOJDAgMBAAECggEADmWyF3pDVEP57XnRZXd4TLX6fsa0aa1kanUEe1JTvkZ7\nONGlAFkmQeDVpYuyTqafD9rH4bYAlIgqGY6EpX404SGIw0KnUDzG7arrVK+O2oxn\nmJ3Oivk84N9yuOLdPiMZazLwt2/s9eOopoShm3Yvh1sPb0CM+bpCWa5MyPEOpQ8M\nW/myGOWChQJP3ybtxqh8dHmpY8gzXMijxeUweylq1LmmJSx+J/kyDhVMZegsfUSy\nRfce9KQYAA8FP61TTFkZAY1hai8g+PPaLTgNIe7EHTs3E/NhopV9kxEVbcSdoTMQ\nNn29vhRqb5cYOQki2rpJ5ozGTSQMJuyE9HF5ZkpNmQKBgQD923B464gt1aKa7ayQ\nduBNfydcnJSOm8RoFpd8HhCqtzszrFxILSzt2qXQopSX7Q5qeV/puai1WIfEx3AZ\nENSSXUmmcKtHhVsy4MdXxG5gxMZD6dd30EEEylkpsGd8XMfqdS16DDwZllXMcKFk\n+Tcnzvdt1CykH4Woe7+EKzvIaQKBgQDsD0QmVXkSpxPMhV4G+VjrY50o5YGGMUyO\njfdLwR19+t0S2ipaA05b1DWDF9ViBf/c8y5PMBNURtssShmsuX9n2kBQoymnIi5c\nLI8M2P7ZagV/ahNHfaK0o3/cAVHuVEg8R6g5UIGXB2gcCRgErVue8+A7d4WdxWj+\nUPO62hZfywKBgAGGsjRn5hewcxvPVfxAWrTckNYDsvjwgsvFZv++BoegNmDnJl7g\ntqZvbBPHBnGrYSzOsf7ruNHuSFKsiEX+TejbWrf/cWgqqxOxOkGS0r8OL8r0uvDj\ndaCbvtF7WAPtYt5L+gwDytC0kKt7+dxriyNYITCt197cuab7p3kZ8XARAoGAR/WX\nZsAjekYoSO5W7XVRX+Ar5m2gAFJC7inkutkRrnessLSEuI/NcTzNWzsGtyzxBF+1\nPDqBie1XnrawAPFDH1tuw6YZanOHAl4q9VWoyooBRwgE/IQV907oCR715NsYche9\n9krOVkXRvMog4jwec+QP9NDIkIG/MddnlQwqSeUCgYBq34kBqtmKSfLEDx0WYINy\nfhQnZl8F7IFXCFjAXu26KzOrVe7uocUBq5275ojD1+MQkC9FdMuRIcPcHl1VxyZQ\n9/uukqZDzSUklHkZ6pwQNEzHnRZ+HgY6QPpKEBOfeZiPHaeXwoBcgiXE9mvraOgc\ncQaUgIicOasW2mpr5vS/0A==\n-----END PRIVATE KEY-----\n",
6+
"client_email": "frro-pu@frro-reminder.iam.gserviceaccount.com",
7+
"client_id": "112507393993105080075",
8+
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
9+
"token_uri": "https://accounts.google.com/o/oauth2/token",
10+
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
11+
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/frro-pu%40frro-reminder.iam.gserviceaccount.com"
12+
}

FRRO_flow diagram.JPG

83.4 KB
Loading

README.md

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,45 @@
1-
# Automatic-Remider-System
2-
A system where students in the institution gets reminders as messages or E-mail, where the students data is to be kept updated in an excel file.
1+
<h2>Overview</h2>
2+
<p>
3+
This repository is an automatic reminder application for various documents needed for the international students for our university. A system where students in the institution gets reminders as messages or E-mail, where the students data is to be kept updated in an excel file. Application automatically fetches the data and sends reminders everyday to the selected students.
4+
</p>
5+
<h2>Instructions</h2>
6+
<p> 1.The excel sheet must contain following rows with exact names:<br>
7+
&ensp;&ensp;&ensp;&ensp;a."name of student" #shows the name of the student<br>
8+
&ensp;&ensp;&ensp;&ensp;b."frro 1(rc/rp) start" #gives start date of the rc/rp process<br>
9+
&ensp;&ensp;&ensp;&ensp;c."frro 2(rc/rp) start"<br>
10+
&ensp;&ensp;&ensp;&ensp;d."frro 3(rc/rp) start"<br>
11+
&ensp;&ensp;&ensp;&ensp;e."frro 4(rc/rp) start"<br>
12+
&ensp;&ensp;&ensp;&ensp;f."contact number"<br>
13+
&ensp;&ensp;&ensp;&ensp;g."email"<br>
14+
2. Names of all the students whose process is going on will be saved in data.json file<br>
15+
3.If any frro row contain no entries ; for the moment make it as 0000-00-00 i.e as a dummy entry
16+
</p>
17+
<h2>Algorithm</h2>
18+
<p>
19+
1. Script triggers every day at a specific time<br>
20+
2. Check if database is updated. <br>
21+
3. Fetch the database from excel file from cloud. <br>
22+
4. Take the 'frro student date' from the the database.<br>
23+
5. Start the scheduling for 1,2,3,8,9,10 day for the all the students and will send messages to all those students on those specific days.<br>
24+
6. Make the scheduling for same students on 11th month as the same students will have to do the same process after 11 months.<br>
25+
</p>
26+
<br>
27+
<img src="/FRRO_flow diagram.JPG">
28+
<br>
29+
<h2>Libraries needed</h2>
30+
<i> <p>
31+
&ensp;&ensp;&ensp;&ensp;1. schedule<br>
32+
&ensp;&ensp;&ensp;&ensp;2. gspread<br>
33+
&ensp;&ensp;&ensp;&ensp;3. oauth2client<br>
34+
&ensp;&ensp;&ensp;&ensp;4. twilio<br>
35+
</i> </p>
36+
37+
<h4> Run the program using <b>main_program.py</b> </h4>
38+
39+
<h2>Developers</h2>
40+
<p>
41+
<i>
42+
&ensp;&ensp;&ensp;&ensp;Harsh Patel <br>
43+
&ensp;&ensp;&ensp;&ensp;Vatsal Mistry
44+
</i>
45+
</p>

client_secret_key2.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"type": "service_account",
3+
"project_id": "frro-pu-192415",
4+
"private_key_id": "0186348b0fc28cbeb16286b3f997da9c15981118",
5+
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC3MNePEANDtTgU\np5Y2UOigr5579VHSs9XrCr6kLMCUkIbpuKpN10+ZYnvcQacKd3jFNg3Bky+MSclm\nxdiKvAqjcgxAuGXx+WdDshIannNuMUMM2SiJVm70sDaKz0cbgNHkBJPCqdJRNcvY\nE1l/zrNVbHF+EYqSb2oMfoD9/CVGMRyc81teDvoVQGIRTuFPM9utGg0aZlXdtm3+\nntLjAeAEAApMVGyR4pvpS2o/Lss+qDq0Y9HfmVi5QRIihv3yw7JOEkXwJKzjvUp/\nF2bySeKCD2lNIKoQ9BrKqz7eMEt7wRSdzi22iM6TZJp+HSxQYEke31cfwuXThUjA\niAHYmRV5AgMBAAECggEAA6TBjNNlNToMAQEqUC9AyT1k+hMxiu7PwOqISyymse3D\n+S8WmBDBwQu/6ewWXfNtYALIuEJsri4jhttFiNDfp0uT6c+hG3R59NM8X/Ip2pW5\nPy6sizrAXzaIBy/DOs1Pn2jl5XfKOppG0SflXlDmqTrMcRT5PBtiMRhtCWAz/5be\n02TCwi5J1j0TvDY6UQe9SqN29Zpny6XbCtMTCPTeFoWSMK6ytsUKkDTExf8P+s3r\n+ovvOppyB5y4y6kZ2AOrxJQIquuDOwRRiCNhkWDTSKAT2+lpD499mTZHs6oFE2Ka\nIzi3kQ6FydG27U/P4vgbyNLuTP5DDB1isrl5F8602QKBgQDtusrx6KPRbIXF9Erg\n5oyqNERcxtQ6z5dpG00OAch7exwtTA5PqD51bs+A/9kp3W7Dclvq7oHmTejFM5Nx\nJaOAFR4oERsZ2aT9Ik7I9U1wm1rb1OIfJ4EsCCkCFfuPaErAnjelftLB1b6RDXy9\nJY41aqIkULtg15RDLCPOKIqUTQKBgQDFRQaBCZbBQI8D8v6YXgls579H1NMh0f6s\nxQ1BSh4u8NmCzmli1dp8c1lAZPnrQA2dRDVQM6KQ8oNUORxNDHXEyCn6h4IhhImD\nk2X8mW9m6a2ukHIzIR3c2R4xAmS0utp8GPORAGiaRiReRvGz2ZzN5i3a7+nB/SIP\nFUppcdbL3QKBgQCu5jZZM6cSdJ0Wvlw4imYC8uE4wK9zdTcYBRXzsCwnbLOWP9Zn\nlIgfLZ9McO78dgT/lis59K9tGPSf4QogvGhF20OMhslBg3Z3Jb6A6rhGmIWIJl8W\nPKI0GuzQtAuXvksA22ZlQ6EbKn5BiYK0ReUSN5mCzkKNRQ23Pco56mnKIQKBgQC/\nHTRD5wpKh0UGym+lJdVz0MEb0jAJ3+wfbXh9/FRpnaTceSTYP97AGvAo1qrZIuEN\nr3sHDD8+tfRNsFaevqeJ0XH56TZFSqX+9tojcnLe/Rzqtb4tkrPftejuCieOgEgT\nWgj+PasZa0Loo0qetwCW6Z0bMrsA2UAZ5MKGjWdPcQKBgDUvRChiIK+pTB4HA2RD\ngVYTq3cxJEQpcBCzhWeQy3PdEbELyWGsXHLEkZnu5Zmamw9B1OCvr+0WBNCU53Y5\nar7YM8h4iyuyPnICNjlhDaH2+3A1U2nRoeuLJRidsFDAeJ+d609z/T+7mGBtfGR+\nLVrTX+TTuqjsgsIjQ5xz2ktU\n-----END PRIVATE KEY-----\n",
6+
"client_email": "frro-pu@frro-pu-192415.iam.gserviceaccount.com",
7+
"client_id": "114755428467980363441",
8+
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
9+
"token_uri": "https://accounts.google.com/o/oauth2/token",
10+
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
11+
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/frro-pu%40frro-pu-192415.iam.gserviceaccount.com"
12+
}

client_secret_key_gmail.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"installed":{"client_id":"885043768005-sdnlqceg8jqr8m763rm5ufonkh2essbf.apps.googleusercontent.com","project_id":"frro-pu-192415","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://accounts.google.com/o/oauth2/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"buHi6ufwC4NT5p6JN-P-g20o","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}}

data.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"Noon":0
3+
}

gmail key.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
Client id
3+
860929562320-nr6buav9jetlrapsl23t5olb9400a9ph.apps.googleusercontent.com
4+
5+
Client secret
6+
2itp0D6GE3rcwYx9T80vzqcd
7+
8+
9+
10+
11+
--> scheduling every one day
12+
13+
--> check if database is updated
14+
15+
--> fetch the database from excel file
16+
17+
--> take the frro student date from the database
18+
19+
--> start the scheduling for 1,2,3,8,9,10 day f0r the all the students
20+
21+
--> make the scheduling for same students on 11th month
22+
23+
24+
25+

gmail.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import httplib2
2+
import os
3+
import oauth2client
4+
from oauth2client import client, tools
5+
import base64
6+
from email.mime.multipart import MIMEMultipart
7+
from email.mime.text import MIMEText
8+
from apiclient import errors, discovery
9+
10+
SCOPES = 'https://www.googleapis.com/auth/gmail.send'
11+
CLIENT_SECRET_FILE = 'client_secret_key_gmail.json'
12+
APPLICATION_NAME = 'FRRO-PU-EMAIL-APP'
13+
14+
15+
def get_credentials():
16+
home_dir = os.path.expanduser('~')
17+
credential_dir = os.path.join(home_dir, '.credentials')
18+
if not os.path.exists(credential_dir):
19+
os.makedirs(credential_dir)
20+
credential_path = os.path.join(credential_dir,'gmail-python-email-send.json')
21+
store = oauth2client.file.Storage(credential_path)
22+
credentials = store.get()
23+
if not credentials or credentials.invalid:
24+
flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
25+
flow.user_agent = APPLICATION_NAME
26+
credentials = tools.run_flow(flow, store)
27+
print('Storing credentials to ' + credential_path)
28+
return credentials
29+
30+
31+
def create_message(to, subject, msgPlain):
32+
msg = MIMEMultipart('alternative')
33+
msg['Subject'] = subject
34+
msg['From'] = 'isacfrropu@gmail.com'
35+
msg['To'] = to
36+
msg.attach(MIMEText(msgPlain, 'plain'))
37+
raw = base64.urlsafe_b64encode(msg.as_bytes())
38+
raw = raw.decode()
39+
body = {'raw': raw}
40+
return body
41+
42+
43+
def send_message_internal(service, user_id, message):
44+
try:
45+
message = (service.users().messages().send(userId=user_id, body=message).execute())
46+
print('Message Id: %s' % message['id'])
47+
return message
48+
except errors.HttpError as error:
49+
print('An error occurred: %s' % error)
50+
51+
52+
def send_message(to, subject, msgPlain):
53+
credentials = get_credentials()
54+
http = credentials.authorize(httplib2.Http())
55+
service = discovery.build('gmail', 'v1', http=http)
56+
message_final = create_message(to, subject, msgPlain)
57+
send_message_internal(service, "me", message_final)

main_program.py

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
#Flow of the program
2+
#while loop --> scheduling for 7 am --> function 'update_database; --> function 'thread_row'
3+
# --> scheduling for 8 am --> function 'check_date_match' --> if condition match --> .py file 'message_send' to send message and mail
4+
5+
import _thread #threading
6+
from datetime import datetime,timedelta #checking date time of the system
7+
import json
8+
import schedule #scheduling
9+
import gspread #google spreadsheet api
10+
from oauth2client.service_account import ServiceAccountCredentials #authentiction
11+
import message_send #python file for further mailing and messaging
12+
import messages
13+
14+
15+
def thread_row(sheet,db_row,json_data,file): #this thread is going to work continously for each student unless the task gets over
16+
print("into thread_row")
17+
18+
def check_date_match(db_row):
19+
scope = ['https://spreadsheets.google.com/feeds']
20+
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret_key2.json', scope) #opening frro logs sheet
21+
client = gspread.authorize(creds)
22+
sheet = client.open('FRRO_LOGS').sheet1
23+
for i in range(1,5): # for frro 1 to frro 4 ; checking if the todays date matches with any
24+
25+
day_1=datetime.strptime(db_row['frro %d'%(i)+'(rc/rp)_start'],'%Y-%m-%d')+timedelta(days=1) #timedelta adds days to the given date ... Hence we save all the notifications date in variable
26+
day_2=datetime.strptime(db_row['frro %d'%(i)+'(rc/rp)_start'],'%Y-%m-%d')+timedelta(days=2)
27+
day_3=datetime.strptime(db_row['frro %d'%(i)+'(rc/rp)_start'],'%Y-%m-%d')+timedelta(days=3)
28+
day_10=datetime.strptime(db_row['frro %d'%(i)+'(rc/rp)_start'],'%Y-%m-%d')+timedelta(days=10)
29+
day_11=datetime.strptime(db_row['frro %d'%(i)+'(rc/rp)_start'],'%Y-%m-%d')+timedelta(days=11)
30+
day_12=datetime.strptime(db_row['frro %d'%(i)+'(rc/rp)_start'],'%Y-%m-%d')+timedelta(days=12)
31+
#print("into loop2")
32+
if(i==1):
33+
if(str(datetime.now().date())==str(day_1.date()) or str(datetime.now().date())==str(day_2) or str(datetime.now().date())==str(day_3)): #column 12
34+
print("condition satisfied for day 1,2,3 frro 1")
35+
36+
_thread.start_new_thread(message_send.send_message,(db_row['contact number'],db_row['email'],db_row['name of student'],db_row['passport no'],db_row['parent email'],db_row['rector contact'],db_row['parent email'],messages.student_sms_1frro123,sheet))
37+
38+
if(str(datetime.now().date())==str(day_12) or str(datetime.now().date())==str(day_10) or str(datetime.now().date())==str(day_11)):
39+
print("condition satisfied for day 10,11,12 frro 1")
40+
_thread.start_new_thread(message_send.send_message,(db_row['contact number'],db_row['email'],db_row['name of student'],db_row['passport no'],db_row['parent email'],db_row['rector contact'],messages.student_sms_1frro101112,sheet))
41+
if(i==2 or i==3 or i==4):
42+
if(str(datetime.now().date())==str(day_1.date()) or str(datetime.now().date())==str(day_2) or str(datetime.now().date())==str(day_3 or str(datetime.now().date())==str(day_12) or str(datetime.now().date())==str(day_10) or str(datetime.now().date())==str(day_11))):
43+
print("condition satisfied for frro2 or frro3 or frro4")
44+
if(db_row["frro%d incampus"%(i)]=='yes'):
45+
_thread.start_new_thread(message_send.send_message,(db_row['contact number'],db_row['email'],db_row['name of student'],db_row['passport no'],db_row['parent email'],db_row['rector contact'],messages.student_sms_otherfrro_incampus,sheet))
46+
if(db_row["frro%d incampus"%(i)]=='no'):
47+
_thread.start_new_thread(message_send.send_message,(db_row['contact number'],db_row['email'],db_row['name of student'],db_row['passport no'],db_row['parent email'],db_row['rector contact'],messages.student_sms_otherfrro_outcampus,sheet))
48+
49+
50+
# if(db_row['single_visa']==0): # if the visa is not for the whole course and needs renewel in between
51+
#
52+
# day_1=datetime.strptime(db_row['visa issue date'],'%Y-%m-%d')+timedelta(days=1)
53+
#print(datetime.now().date())
54+
#print(datetime.strptime(db_row['frro 4(rc/rp)_start'],'%Y-%m-%d')+timedelta(days=14))
55+
56+
def check_condition(db_row,json_data):
57+
if( datetime.now() < (datetime.strptime(db_row['frro 4(rc/rp)_start'],'%Y-%m-%d'))+timedelta(days=14) ):
58+
check_date_match(db_row)
59+
60+
else:
61+
del json_data[ db_row['name of student'] ] #the task of the student is completed hence to remove the name from the json file
62+
f=open('data.json','w')
63+
f.write(json.dumps(json_data))
64+
schedule.clear('daily_routine')
65+
return schedule.CancelJob
66+
67+
schedule.every().day.at("11:33").do(lambda:check_condition(db_row,json_data)).tag('daily_routine','friend') #checking the date every date at 9:00
68+
69+
def update_database(): #taking data from the sheets at regular intervals 7:00 am
70+
print("update_database")
71+
try:
72+
print("into try function")
73+
scope = ['https://spreadsheets.google.com/feeds']
74+
creds = ServiceAccountCredentials.from_json_keyfile_name('FRRO-Reminder-API.json', scope)
75+
client = gspread.authorize(creds)
76+
sheet = client.open('FRRO_PU').sheet1
77+
db=sheet.get_all_records() #taking all the records
78+
print(db)
79+
file=open('data.json','r')
80+
json_data=json.load(file)
81+
file.close()
82+
83+
for i in range(0,len(db)): #for all the records .. making a thread of each row i.e. for each person.
84+
print("into loop1")
85+
if(db[i]['name of student'] not in json_data.keys()): #checking if the name present in data.json
86+
json_data[ db[i]['name of student'] ]="started" #if name not present ; then add the name and start the thread of it
87+
f=open('data.json','w')
88+
f.write(json.dumps(json_data))
89+
f.close()
90+
print("database updated")
91+
_thread.start_new_thread(thread_row,(sheet,db[i],json_data,file)) #thread created for each student
92+
93+
except:
94+
schedule.every(1).minute.do(update_database)
95+
schedule.every().day.at("16:46").do(update_database) #checks every day and updates the datebase
96+
97+
while True:
98+
99+
schedule.run_pending()
100+
101+
102+
103+
104+
105+
106+
107+
108+
109+
110+

message_send.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from twilio.rest import Client
2+
import messages
3+
import requests
4+
import json
5+
import datetime
6+
import gspread #google spreadsheet api
7+
from oauth2client.service_account import ServiceAccountCredentials
8+
9+
10+
11+
12+
13+
14+
def send_message(number,mail,name,pass_no,parent_email,rector_contact,message,sheet):
15+
16+
17+
#using twillio
18+
# #print("came here")
19+
# number2="+"+str(number)
20+
#
21+
# client = Client(messages.account_sid, messages.auth_token)
22+
# message = client.messages.create(
23+
# to=number2, # "+919876543210"
24+
# from_="+14157920130",
25+
# body=messages.message)
26+
# print("message successfully sent to,:",name)
27+
#
28+
29+
student=requests.get("http://api.msg91.com/api/sendhttp.php?sender=MSGIND&route=4&mobiles=+91"+str(number)+"&authkey=192990AkDQ3bDBv5a59de99&country=91&message="+message)
30+
rector=requests.get("http://api.msg91.com/api/sendhttp.php?sender=MSGIND&route=4&mobiles=+91"+str(rector_contact)+"&authkey=192990AkDQ3bDBv5a59de99&country=91&message="+(messages.rector_sms%(name,pass_no)))
31+
print(messages.rector_sms%(name,pass_no))
32+
33+
row=[name,number,message,datetime.datetime.now().time()]
34+
sheet.append_row(row)
35+
36+
#print(r.content)
37+
38+
39+

message_send.pyc

1.04 KB
Binary file not shown.

0 commit comments

Comments
 (0)