From 64b0ee0478965c49b1ccd5717862eca0ac0ac8b5 Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Wed, 13 Nov 2013 13:34:56 +0100 Subject: [PATCH] [sip/sms] Methode pour envoyer des IM via la classe Sms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On adapte send_sms en conséquence --- sip/asterisk.py | 29 +++++++++++++++++++++++++++++ sip/send_sms.py | 27 ++++++--------------------- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/sip/asterisk.py b/sip/asterisk.py index 2dc539a2..1a94c789 100644 --- a/sip/asterisk.py +++ b/sip/asterisk.py @@ -16,6 +16,9 @@ from datetime import datetime sys.path.append('/usr/scripts/') import lc_ldap.shortcuts +import lc_ldap.objets + +import gestion.secrets_new as secrets class NullRecv(EnvironmentError): pass @@ -120,6 +123,32 @@ class Sms(object): cur.close() conn.close() + def send(self, dst, msg, src=None): + + if isinstance(src, lc_ldap.objets.proprio): + # rajouter @crans.org ne semble pas marcher, pourquoi ? + num="1%04d" % src['aid'][0].value + profile_manager = Profile(self.sql_params, "voip_profile") + callerid = profile_manager.num_to_callerid(num) + caller = '"%s" ' % (callerid, num) + elif src: + caller = src + else: + caller = "ServiceCenter" + + to = "sip:1%04d" % dst['aid'][0].value + + ast_manager = Manager('sms', secrets.get('asterisk_sms_passwd')) + + try: + ast_manager.messageSend(caller, to, msg) + except AsteriskError as error: + if error.message == "Message failed to send.": + self.sms_delay(error.params['from'], error.params['to'], error.params['base64body'], error.params['to'].split(':',1)[1], body_type='base64') + else: + raise + + class History(object): def __init__(self, sql_params, database, quota_limit): self.sql_params = sql_params diff --git a/sip/send_sms.py b/sip/send_sms.py index a0cea18f..c07a5f94 100755 --- a/sip/send_sms.py +++ b/sip/send_sms.py @@ -35,28 +35,13 @@ if __name__ == '__main__': if login == 'respbats': login = os.getenv('SUDO_USER') ldap = lc_ldap.shortcuts.lc_ldap_readonly() - adh = ldap.search(u'uid=%s' % login)[0] - - # rajouter @crans.org ne semble pas marcher, pourquoi ? - num="1%04d" % adh['aid'][0].value - own = "sip:" + num + "@crans.org" - profile_manager = Profile("dbname='django' user='crans' " + - "host='pgsql.adm.crans.org'", "voip_profile") - callerid = profile_manager.num_to_callerid(num) - caller = '"%s" <%s>' % (callerid, own) + src = ldap.search(u'uid=%s' % login)[0] dst = args.dst if not dst: - dst = "sip:1%04d" % adh['aid'][0].value + dst = src + else: + dst = ldap.search(u"(|(uid=%(dst)s)(mailAlias=%(dst)s@crans.org)(canonicalAlias=%(dst)s@crans.org)(aid=%(dst)s)(aid=%(dst_alt)s))" % {'dst' : dst, 'dst_alt' : dst.replace('sip:','')[1:]})[0] - ast_manager = Manager('sms', secrets.get('asterisk_sms_passwd')) - - # TODO mode hors ligne - try: - ast_manager.messageSend(caller, dst, sys.stdin.read()) - except AsteriskError as error: - if error.message == "Message failed to send.": - sms=Sms("dbname='django' user='crans' host='pgsql.adm.crans.org'", "voip_sms") - sms.sms_delay(error.params['from'], error.params['to'], error.params['base64body'], error.params['to'].split(':',1)[1], body_type='base64') - else: - raise + sms=Sms("dbname='django' user='crans' host='pgsql.adm.crans.org'", "voip_sms") + sms.send(dst, sys.stdin.read(), src)