2024-02-20 16:43:56 +07:00

95 lines
2.9 KiB
Python

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)