import pika import sys import os import json import datetime import re import config from pymongo import MongoClient from msg import msg import requests import time CONNECTION_STRING = "mongodb://mongodb:Cc03Wz5XX3iI3uY3@192.168.0.20" db_connection = MongoClient(CONNECTION_STRING) db_base = db_connection["phone"] coll_call = db_base["phone_dev"] from_api = db_base["from_api"] def main(): connection = pika.BlockingConnection(pika.ConnectionParameters( "192.168.0.20", 5672, "mkt", pika.PlainCredentials( "rabbit", "mrl2X0jwnYuCCiKFTshG7WKyOAhfDo") )) channel = connection.channel() def callback(ch, method, properties, body: bytearray): m = msg(body) # Разбираем входящие звонки if m.isIncoming(): # Если статус START if m.getState() == "START": insert_value = { "uuid": m.getUUID(), "status": -1, "canClose": 0 } coll_call.update_one( filter={"client": m.getClient(), "status": -1}, update={"$set": insert_value}, upsert=True ) #print("НАЧАТ:", m.dict) # Если Статус END if m.getState() == "END": coll_call.update_one( filter={"uuid": m.getUUID()}, update={"$set": {"canClose": 1}} ) #print("ЗАКОНЧЕН:", m.dict) time.sleep(5) resp = requests.get("https://callinfo.services.mobilon.ru/api/call/info/1e86a98e026578eb5f6bf8c092c0c4a2/" + m.getUUID()) j = json.loads(resp.content.decode('utf-8')) d = dict(j) from_api.insert_one(d) # Если статус HANGUP if m.getState() == "HANGUP": if m.isAnswered(): insert_value = { "status": 0, "duration": m.getDuration(), "recordUrl": m.getRecordUrl() } else: insert_value = { "status": 1 } coll_call.update_one( filter={"uuid": m.getUUID(), "canClose": 1}, update={"$set": insert_value} ) #print("Положена трубка:", m.dict) channel.basic_consume( queue='test', on_message_callback=callback, auto_ack=True) print(' [*] Waiting for messages. To exit press CTRL+C') channel.start_consuming() if __name__ == '__main__': try: main() except KeyboardInterrupt: print('Interrupted') try: sys.exit(0) except SystemExit: os._exit(0)