| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #!/usr/bin/env python3
- import asyncio
- import aiohttp
- import logging
- import os
- import re
- import json
- import sys
- from datetime import datetime as dt
- from datetime import timedelta as td
- from typing import Any, Optional
- from functools import wraps
- from secrets import compare_digest
- from databases import Database
- from cel import *
- from logging.config import dictConfig
- from pprint import pformat
- from inspect import getmembers
- _db = Database('mysql://{}:{}@{}:{}/{}'.format(os.getenv('MYSQL_USER', 'asterisk'),
- os.getenv('MYSQL_PASSWORD', 'secret'),
- os.getenv('MYSQL_SERVER', 'db'),
- os.getenv('APP_PORT_MYSQL', '3306'),
- os.getenv('FREEPBX_CDRDBNAME', None)))
- linkedid = sys.argv[1]
- async def main():
- await _db.connect()
- _q = '''SELECT *
- FROM cel
- WHERE linkedid=:linkedid and eventtype = :eventtype'''
- _v = {'linkedid': linkedid, 'eventtype': 'ATTENDEDTRANSFER'}
- _f = True
- uniqueids = set(linkedid) #get ids of transferred calls
- async for row in _db.iterate(query=_q, values=_v):
- #print('\t'.join([str(k) for k in row]))
- extra = json.loads(row['extra'])
- uniqueids.add(extra['channel2_uniqueid'])
-
- _q = '''SELECT *
- FROM cdr
- WHERE linkedid=:linkedid or linkedid in (select distinct linkedid from cdr where uniqueid in :uniqueids)
- ORDER BY sequence;'''
- _v = {'linkedid': linkedid, 'uniqueids': uniqueids}
- _f = True
- unique_ids = set()
- events = CdrEvents()
- async for row in _db.iterate(query=_q, values=_v):
- events.add(row)
- print(events.simple())
- await _db.disconnect()
- if __name__ == '__main__':
- loop = asyncio.get_event_loop()
- loop.run_until_complete(main())
|