Exemplo n.º 1
0
#!/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

Exemplo n.º 2
0
#!/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
Exemplo n.º 3
0
"""
# 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()
Exemplo n.º 4
0
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()
Exemplo n.º 5
0
#!/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
Exemplo n.º 6
0
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()