scripts/sip/send_sms.py
Daniel STAN 3906f8277e [sip] send_sms.py précision de la destination.
Rajouter @crans.org à l'expéditeur semble en revanche faire échouer le script.
2013-08-21 17:17:57 +02:00

58 lines
1.8 KiB
Python
Executable file

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Petit script d'envoi de message via sip.
Pour l'instant uniquement pour les personnes connectées
(le message est jeté sinon)
Prend le message sur stdin.
Alternatives intéressantes à étudier :
https://github.com/grengojbo/python-sipsimple
https://github.com/grengojbo/sipclients
"""
import sys
sys.path.append('/usr/scripts/gestion/secrets')
from secrets import asterisk_sms_passwd
sys.path.pop()
import os
import sys
import argparse
parser = argparse.ArgumentParser(description="Envoi d'un message sip")
parser.add_argument('-d', '--dst', default=None,
help="Destinataire, peut être de la forme sip:13570. (Défaut: soi-même)")
# Attention: on a besoin d'importer le module sip de /usr/scripts
# il existe déjà un module sip dans les libs python.
# il faut donc mettre notre path, avant
sys.path.insert(0, '/usr/scripts/')
import lc_ldap.shortcuts
from sip.asterisk import Manager
if __name__ == '__main__':
args = parser.parse_args(sys.argv[1:])
login = os.getenv("SUDO_USER") or os.getenv("USER")
ldap = lc_ldap.shortcuts.lc_ldap_readonly()
adh = ldap.search(u'uid=%s' % login)[0]
# rajouter @crans.org ne semble pas marcher, pourquoi ?
#own = "sip:1" + adh.dn.split(',')[0].split('aid=')[1] + "@crans.org"
own = "sip:1" + adh.dn.split(',')[0].split('aid=')[1]
# TODO utiliser le vrai caller id
# profile_manager = Profile("dbname='django' user='crans' host='pgsql.adm.crans.org'", "voip_profile")
# callerid = profile_manager.num_to_callerid(own)
callerid = os.path.basename(__file__)
caller = '"%s" <%s>' % (callerid, own)
dst = args.dst
if not dst:
dst = own + "@crans.org"
ast_manager = Manager('sms', asterisk_sms_passwd)
# TODO mode hors ligne
ast_manager.messageSend(caller, dst, sys.stdin.read())