ShariX Developer 1 сар өмнө
parent
commit
76f94633eb

+ 111 - 0
handlers/open_student_handler.py

@@ -0,0 +1,111 @@
+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="open_student_handler"
+
+operating_status=000
+JID=botname+"@"+config.JSERVER
+PORT=config.PORT
+
+PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+
+print(JID, PASSWORD)
+
+#таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to=["open_student_handler@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+
+#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to=[botname, "open_st_request_assigned@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+
+#максимальное значение попыток обработать Тикет
+idle_value=10
+
+# обработчик входящих сообщений
+def message_handler(conn, mess):
+    text = mess.getBody()#текст сообщения боту
+    user = mess.getFrom()#отправитель сообщения
+   
+    print (str(user).split("/")[0])
+    if (str(user).split("/")[0]) in listen_to:
+        print(text)
+        print(mess)
+
+        if text is not None:
+            ticketObj = jsreq.jsonToTicket(text)
+            print (ticketObj)
+            tasklist.append(ticketObj)
+            bot.bot_log(str(datetime.now())+" Поступивший Тикет успешно добавлен в очередь обработки\n")
+
+def open_student_handler_wait(period,localtask):
+    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет ожидает\n")
+    time.sleep(period)
+    
+    #ВАЖНО! Надо скорее всего через API редактировать Тикет, иначе возможна потеря данных
+    localtask.title=localtask.title+"1"
+
+    #обязательно данный обработчик должен заканчиваться передачей Тикета куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0],localtask)
+    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет подождал и возвращен в очередь\n")
+
+def oopen_student_handler_process(localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет в обработчике\n")
+
+    ticket = jsreq.jsonToTicket(localtask)
+    print(ticket)
+
+
+def open_student_handler_assigned(localtask):
+    bot.proceed_status(proceed_to[1],localtask)
+
+
+def open_student_handler_booked():
+    while (len(tasklist)):
+        localtask=tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет в очереди на обработке\n")
+        print("EACH TASKLIST", tasklist)
+
+        if (localtask.status!=operating_status):
+            bot.proceed_status(proceed_to[-1],localtask)
+            bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет не по адресу, перенаправляем на форсмажор\n")
+            continue
+
+        t1=threading.Thread(target=oopen_student_handler_process, args=(localtask))
+        t1.start()
+
+        bot.proceed_status(proceed_to[0],localtask)
+        print("Тикет возвращен в очередь\n")
+        print(tasklist)
+
+#Авторизация и запуск бота
+
+#пустой список Тикетов
+tasklist = []
+
+#надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+
+#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/ticket_list/1303")
+
+bot = JabberBot(JID, PASSWORD, PORT)
+
+bot.register_handler('message', message_handler)
+bot.start(open_student_handler_booked)
+
+
+