#!/usr/bin/env python """ celcombiller AGI: * Consult the user balance and authorize a call * Save the call CDRs * Update the user balance """ # pylint: disable=C0103 import asterisk.agi from asterisk.agi import AGIAppError from models import User agi = asterisk.agi.AGI() from_user = User.query.filter_by( clid=agi.env['agi_callerid']).first() to_user = User.query.filter_by( clid=agi.env['agi_extension']).first() try: agi.appexec('DIAL', 'SIP/IMSI%[email protected]:5062,40,S(%d)' %\ (to_user.imsi, from_user.BallanceUser)) except AGIAppError: pass
#!/usr/bin/env python """ celcombiller AGI: * Consult the user balance and authorize a call * Save the call CDRs * Update the user balance """ # pylint: disable=C0103 import asterisk.agi from asterisk.agi import AGIAppError from models import User agi = asterisk.agi.AGI() from_user = User.query.filter_by(clid=agi.env['agi_callerid']).first() to_user = User.query.filter_by(clid=agi.env['agi_extension']).first() try: agi.appexec('DIAL', 'SIP/IMSI%[email protected]:5062,40,S(%d)' %\ (to_user.imsi, from_user.BallanceUser)) except AGIAppError: pass
""" # pylint: disable=C0103 from datetime import datetime import asterisk.agi from asterisk.agi import AGIAppError from models import session, User, CDR agi = asterisk.agi.AGI() from_user = session.query(User).filter_by( clid=agi.env['agi_callerid']).one() to_user = session.query(User).filter_by( clid=agi.env['agi_extension']).one() try: agi.appexec('DIAL', 'SIP/%s,40,S(%d)' % (to_user.clid, from_user.balance)) except AGIAppError: pass if agi.get_variable('DIALSTATUS') == 'ANSWER': # Time from answer to hangup billsec = int(agi.get_variable('CDR(billsec)')) # Time the user answered answer = datetime.fromtimestamp(float(agi.get_variable('CDR(answer,u)'))) # Create a new CDR record cdr = CDR(from_user=from_user, to_user=to_user, billsec=billsec, answer=answer) # Update user balance from_user.balance -= billsec session.commit()
import asterisk.agi from asterisk.agi import AGIAppError from config import ADM_USER, ADM_PSSW, URL, HEADERS, IAX_SERVER, RING_TIME import requests import json agi = asterisk.agi.AGI() http = requests.Session() http.post( URL + '/login', data={'username': ADM_USER, 'password': ADM_PSSW} ) url = URL + '/api/users' filters = [dict(name='clid', op='eq', val=agi.env['agi_callerid'])] params = dict(q=json.dumps(dict(filters=filters))) response = http.get(url, params=params, headers=HEADERS) time = response.json()['objects'][0]['voice_balance'] receptor = agi.env['agi_extension'] try: agi.appexec('DIAL', 'IAX2/%s/%s@from-pstn,%d,S(%d)' % (IAX_SERVER, receptor, RING_TIME, time)) except AGIAppError: pass http.close()
#!/usr/bin/env python """ celcombiller AGI: * Consult the user balance and authorize a call * Save the call CDRs * Update the user balance """ # pylint: disable=C0103 import asterisk.agi from asterisk.agi import AGIAppError from models import User agi = asterisk.agi.AGI() from_user = User.query.filter_by( clid=agi.env['agi_callerid']).first() to_user = User.query.filter_by( clid=agi.env['agi_extension']).first() try: agi.appexec('DIAL', 'SIP/IMSI%[email protected]:5062,40,S(%d)' % (to_user.imsi, from_user.VoiceBalance)) except AGIAppError: pass
import requests import json agi = asterisk.agi.AGI() http = requests.Session() http.post( URL + '/login', data={'username': ADM_USER, 'password': ADM_PSSW} ) url = URL + '/api/users' filters = [dict(name='clid', op='eq', val=agi.env['agi_callerid'])] params = dict(q=json.dumps(dict(filters=filters))) response = http.get(url, params=params, headers=HEADERS) time = response.json()['objects'][0]['voice_balance'] filters = [dict(name='clid', op='eq', val=agi.env['agi_extension'])] params = dict(q=json.dumps(dict(filters=filters))) response = http.get(url, params=params, headers=HEADERS) receptor = response.json()['objects'][0]['imsi'] try: agi.appexec('DIAL', 'SIP/IMSI%[email protected]:5062,%d,S(%d)' % (receptor, RING_TIME, time)) except AGIAppError: pass http.close()