Ajout des script pour asterisk
This commit is contained in:
parent
e9bae60ef9
commit
124d4a83e1
12 changed files with 286 additions and 0 deletions
74
sip/sms_queuing.py
Executable file
74
sip/sms_queuing.py
Executable file
|
@ -0,0 +1,74 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
import socket,time, os, shutil,sys
|
||||
|
||||
class Sms(object):
|
||||
def __init__(self, server,port,user,password,sms_dir,timeout=360):
|
||||
self.sms_dir=sms_dir
|
||||
self.lastsend=None
|
||||
while True:
|
||||
try:
|
||||
print("Connect to Asterisk")
|
||||
self.irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
|
||||
self.irc.settimeout(timeout)
|
||||
self.irc.connect ( ( server, port ) )
|
||||
self.send ( 'ACTION: LOGIN')
|
||||
self.send ( 'USERNAME: %s' % user)
|
||||
self.send ( 'SECRET: %s' % password)
|
||||
self.send ( '')
|
||||
print(self.irc.recv ( 4096 ))
|
||||
data=[]
|
||||
while True:
|
||||
recv=self.irc.recv ( 4096 )
|
||||
if len(recv)==0:
|
||||
break
|
||||
data.extend(recv.split('\r\n'))
|
||||
while len(data)!=0:
|
||||
line_id_init=0
|
||||
line_id_read=0
|
||||
if data[0] == 'Event: PeerStatus':
|
||||
if len(data)<8:
|
||||
break;
|
||||
status=data[4].split()[1]
|
||||
if status in ['Reachable','Registered']:
|
||||
num=data[3].split('/')[1]
|
||||
if os.path.isdir(sms_dir + '/' + num + '/'):
|
||||
dir=os.listdir(sms_dir + '/' + num + '/')
|
||||
dir.sort()
|
||||
for sms in dir:
|
||||
sms_path=sms_dir + '/' + num + '/' + sms + '/'
|
||||
if os.path.isfile(sms_path + 'from') and os.path.isfile(sms_path + 'to') and os.path.isfile(sms_path + 'body'):
|
||||
sms_from=open(sms_path + 'from').read()
|
||||
sms_to=open(sms_path + 'to').read()
|
||||
sms_body=open(sms_path + 'body').read()
|
||||
self.send ('action:MessageSend')
|
||||
self.send ('to:%s' % sms_to)
|
||||
self.send ('from:%s' % sms_from)
|
||||
self.send ('Base64Body:%s' % sms_body)
|
||||
self.send ( '')
|
||||
self.lastsend=(sms_dir + '/' + num + '/',sms_path)
|
||||
if data[0] == "Response: Success":
|
||||
if self.lastsend:
|
||||
shutil.rmtree(self.lastsend[1])
|
||||
try:os.rmdir(self.lastsend[0])
|
||||
except OSError as e: print(e)
|
||||
self.lastsend=None
|
||||
if data[0] == "Response: Error":
|
||||
self.lastsend=None
|
||||
del(data[0])
|
||||
except socket.error as e: print(e)
|
||||
finally:
|
||||
if self.irc:
|
||||
try: self.irc.close()
|
||||
except: pass
|
||||
time.sleep(0.1)
|
||||
|
||||
def send(self,str):
|
||||
print(str)
|
||||
msg='%s\r\n' % (str)
|
||||
self.irc.send (msg)
|
||||
|
||||
|
||||
|
||||
Sms('localhost',5038,'sms','6m6lTaEOTMsyM','/var/spool/asterisk/sms/')
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue