cdr_test.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/usr/bin/env python3
  2. import asyncio
  3. import aiohttp
  4. import logging
  5. import os
  6. import re
  7. import json
  8. import sys
  9. from datetime import datetime as dt
  10. from datetime import timedelta as td
  11. from typing import Any, Optional
  12. from functools import wraps
  13. from secrets import compare_digest
  14. from databases import Database
  15. from cel import *
  16. from logging.config import dictConfig
  17. from pprint import pformat
  18. from inspect import getmembers
  19. _db = Database('mysql://{}:{}@{}:{}/{}'.format(os.getenv('MYSQL_USER', 'asterisk'),
  20. os.getenv('MYSQL_PASSWORD', 'secret'),
  21. os.getenv('MYSQL_SERVER', 'db'),
  22. os.getenv('APP_PORT_MYSQL', '3306'),
  23. os.getenv('FREEPBX_CDRDBNAME', None)))
  24. linkedid = sys.argv[1]
  25. async def main():
  26. await _db.connect()
  27. _q = '''SELECT *
  28. FROM cel
  29. WHERE linkedid=:linkedid and eventtype = :eventtype
  30. ORDER BY sequence;'''
  31. _v = {'linkedid': linkedid, 'eventtype': 'ATTENDEDTRANSFER'}
  32. _f = True
  33. unique_ids = set()
  34. async for row in _db.iterate(query=_q, values=_v):
  35. print('\t'.join([str(k) for k in row]))
  36. extra = json.loads(row['extra'])
  37. unique_ids.add(extra['channel2_uniqueid'])
  38. _q = '''SELECT *
  39. FROM cdr
  40. WHERE linkedid=:linkedid or linkedid in (select distinct linkedid from cdr where uniqueid in :uniqueids)
  41. ORDER BY sequence;'''
  42. _v = {'linkedid': linkedid, 'uniqueids': uniqueids}
  43. _f = True
  44. unique_ids = set()
  45. events = CdrEvents()
  46. async for row in _db.iterate(query=_q, values=_v):
  47. events.addEvent(row)
  48. print(events.simple())
  49. await _db.disconnect()
  50. if __name__ == '__main__':
  51. loop = asyncio.get_event_loop()
  52. loop.run_until_complete(main())