|
@@ -0,0 +1,128 @@
|
|
|
+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_wontfix"
|
|
|
+
|
|
|
+JID=botname+"@"+config.JSERVER
|
|
|
+PORT=config.PORT
|
|
|
+
|
|
|
+PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
|
|
|
+
|
|
|
+
|
|
|
+#таким образом хранится список jid, от которых можно получать сообщения этому боту
|
|
|
+listen_to=["st_request_wontfix@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_changer_wait(period,localtask):
|
|
|
+ bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет ожидает\n")
|
|
|
+ time.sleep(period)
|
|
|
+
|
|
|
+ bot.proceed_status(proceed_to[0],localtask)
|
|
|
+ bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет подождал и возвращен в очередь\n")
|
|
|
+
|
|
|
+def status_changer_process(ticket):
|
|
|
+ bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет в обработчике\n")
|
|
|
+ tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}")
|
|
|
+ # if ticket.id == 2103:
|
|
|
+ # for ticket_new in tickets_new:
|
|
|
+ # metaservice_admin(ticket_new,ticket.group)
|
|
|
+ if ticket.id == 2101:
|
|
|
+ for ticket_new in tickets_new:
|
|
|
+ company_status(ticket_new)
|
|
|
+ elif ticket.id == 2102:
|
|
|
+ for ticket_new in tickets_new:
|
|
|
+ company_status(ticket_new,ticket.group)
|
|
|
+ elif ticket.id =='':
|
|
|
+ print('should be soon')#дополнить по всем айди тикетов
|
|
|
+ # if ticket_new != []:
|
|
|
+ # print(ticket_new)
|
|
|
+ #api/v1/platform/sharix-users/1/
|
|
|
+
|
|
|
+ # bot.proceed_status(proceed_to[1], localtask)
|
|
|
+ # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет успешно обработан и отправлен на pending\n")
|
|
|
+
|
|
|
+
|
|
|
+def company_status(ticket_new):
|
|
|
+ if ticket_new.status == 141:#нужны доп проверки
|
|
|
+ answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/")
|
|
|
+ if answer!=200:
|
|
|
+ print(f'Ошибка{answer}')
|
|
|
+ else:
|
|
|
+ print('Статус не ACCESS')
|
|
|
+
|
|
|
+# def company_status(ticket_new):
|
|
|
+# if ticket_new.status == 141:#нужны доп проверки
|
|
|
+# answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/",ticket_new.created_by)
|
|
|
+# if answer!=200:
|
|
|
+# print(f'Ошибка{answer}')
|
|
|
+# else:
|
|
|
+# print('Статус не ACCESS')
|
|
|
+
|
|
|
+
|
|
|
+def metaservice_admin(ticket_new,group):
|
|
|
+ if ticket_new.status == 141:#нужны доп проверки
|
|
|
+ answer=jsreq.change_groups(token, config.API_URL+f"api/v1/platform/sharix-users/{ticket_new.created_by}/",group)
|
|
|
+ if answer!=200:
|
|
|
+ print(f'Ошибка{answer}')
|
|
|
+ else:
|
|
|
+ print('Статус не ACCESS')
|
|
|
+
|
|
|
+
|
|
|
+def status_changer():
|
|
|
+ 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_changer_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_changer)
|
|
|
+
|