import requests import xmpp from xmpp import cli import config from BotClass import JabberBot import json #раскомментировать, когда перейдем на разные пароли import hashlib from datetime import datetime import time import threading #test import jsonAndRequest as jsreq global tasklist botname="st_request_new" JID=botname+"@"+config.JSERVER PORT=config.PORT PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest() #таким образом хранится список jid, от которых можно получать сообщения этому боту listen_to=["st_request_new@ej.sharix-app.org"] #тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки proceed_to=["numbers"] #максимальное значение попыток обработать заказ idle_value=10 # обработчик входящих сообщений # def message_handler(conn, mess): # text = mess.getBody()#текст сообщения боту # user = mess.getFrom()#отправитель сообщения # if (str(user).split("/")[0]) in listen_to: # # print (str(user).split("/")[0]) # if text is not None: # orderObj = jsreq.jsonToOrder(text) # tasklist.append(orderObj) # bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n") def status_new_process(ticket): tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}") for ticket_new in tickets_new: send_to_user(ticket_new) def send_to_user(ticket_new): user = jsreq.requestGetListUser(token) print(user.json()[0]['id']) headers = {'Authorization': f'Token {token}'} url = config.API_URL+f"tickets/api/ticket_list/{ticket_new.id}" if ticket_new.assigned_to == None: ticket_new.assigned_to = user.json()[0]['id'] user = 'test@ej.sharix-app.org' print({'id':ticket_new.id, 'assigned_to' :ticket_new.assigned_to }) response = requests.put(url, json={'id':ticket_new.id, 'assigned_to' :ticket_new.assigned_to }, headers=headers) print(response) if response: bot.send_notification(user,ticket_new) def status_new(): while True: ticketlist=jsreq.requestGetList(token, config.API_URL+"tickets/api/ticket_list/") for ticket in ticketlist: bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет отправлен в очередь на обработку\n") t1 = threading.Thread(target=status_new_process, args=(ticket,)) t1.start() t1.join() # Ожидаем завершения обработки тикета time.sleep(300) # Обновляем ticketlist каждые 5 минут #Авторизация и запуск бота #пустой список ticketlist = [] token = jsreq.requestGetToken(config.API_URL+"api/v1/auth/token/login/") # ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя # # print (len(tasklist)) bot = JabberBot(JID, PASSWORD, PORT) bot.start(status_new)