|
@@ -1,6 +1,11 @@
|
|
|
+import config
|
|
|
import xmpp
|
|
|
+import logging
|
|
|
+import loggingConfig
|
|
|
+import pprint
|
|
|
+
|
|
|
+
|
|
|
from xmpp import cli
|
|
|
-import config
|
|
|
from BotClass import JabberBot
|
|
|
import json
|
|
|
#раскомментировать, когда перейдем на разные пароли
|
|
@@ -26,13 +31,21 @@ PORT=config.PORT
|
|
|
#раскомментировать, когда перейдем на разные пароли
|
|
|
PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
|
|
|
|
|
|
-print(JID, PASSWORD)
|
|
|
+logging.debug(f"\n JID: {JID}\n PASSWORD: {PASSWORD}")
|
|
|
|
|
|
#таким образом хранится список jid, от которых можно получать сообщения этому боту
|
|
|
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
|
|
|
+listen_to=[
|
|
|
+ "test@ej.sharix-app.org",
|
|
|
+ "open_template_bot@ej.sharix-app.org"
|
|
|
+ ]
|
|
|
|
|
|
#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
|
|
|
-proceed_to=["open_template_bot@ej.sharix-app.org", "test@ej.sharix-app.org", "test1@ej.sharix-app.org", "open_servicerequest_forcemajeure@ej.sharix-app.org"]
|
|
|
+proceed_to=[
|
|
|
+ "open_template_bot@ej.sharix-app.org",
|
|
|
+ "test@ej.sharix-app.org",
|
|
|
+ "test1@ej.sharix-app.org",
|
|
|
+ "open_servicerequest_forcemajeure@ej.sharix-app.org"
|
|
|
+ ]
|
|
|
|
|
|
#максимальное значение попыток обработать заказ
|
|
|
idle_value=10
|
|
@@ -44,16 +57,26 @@ def message_handler(conn, mess):
|
|
|
#user = mess.getNode()#только jid
|
|
|
|
|
|
#нужна проверка, данный обработчик вообще должен от данного отправителя получать сообщения или нет. Подсказка ниже
|
|
|
- print (str(user).split("/")[0])
|
|
|
+ #print (str(user).split("/")[0])
|
|
|
+ logging.debug(str(user).split("/")[0])
|
|
|
+ # input()
|
|
|
if (str(user).split("/")[0]) in listen_to:
|
|
|
- print(text)
|
|
|
- print(mess)
|
|
|
+ # print(text)
|
|
|
+ # print(mess)
|
|
|
+ logging.debug(pprint.pformat(text))
|
|
|
+ logging.debug(pprint.pformat(mess))
|
|
|
+ # input()
|
|
|
|
|
|
if text is not None:
|
|
|
+ logging.debug(f"text before jsonToOrderTicket: {pprint.pformat(text)}")
|
|
|
orderObj = jsreq.jsonToOrderTicket(text)
|
|
|
- print (orderObj)
|
|
|
+ logging.debug(f"text after jsonToOrderTicket: {pprint.pformat(orderObj)}")
|
|
|
+ # print (orderObj)
|
|
|
tasklist.append(orderObj)
|
|
|
+ logging.info("Поступивший заказ успешно добавлен в очередь обработки")
|
|
|
+ logging.debug(pprint.pformat(tasklist))
|
|
|
bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
|
|
|
+ # input()
|
|
|
|
|
|
def open_bot_template_wait(period,localtask):
|
|
|
bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
|
|
@@ -79,11 +102,15 @@ def open_bot_template_process(localtask):
|
|
|
def open_bot_template():
|
|
|
#print("Тут описывается работа со списком задач в данном статусе")
|
|
|
while (len(tasklist)):
|
|
|
+ logging.info(f"Всего задач: {len(tasklist)}")
|
|
|
+ logging.debug(f"Tasklist: {pprint.pformat(tasklist)}")
|
|
|
#for i in range(len(tasklist)):
|
|
|
#проверяем элемент tasklist[i]
|
|
|
#print (i, len(tasklist))
|
|
|
localtask=tasklist.pop(0)
|
|
|
bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
|
|
|
+ logging.debug(f"Заказ в очереди на обработке: {localtask} ")
|
|
|
+ # input("(open_template_bot) INPUT TO CONTINUE...")
|
|
|
#bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + str(i) + " " + "Заказ в очереди на обработке\n")
|
|
|
#print ("EACH TASKLIST", tasklist[i])
|
|
|
#localtask=tasklist.pop(i)
|
|
@@ -92,20 +119,23 @@ def open_bot_template():
|
|
|
if (localtask.status!=operating_status):
|
|
|
bot.proceed_status(proceed_to[-1],localtask)
|
|
|
bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
|
|
|
+ logging.info("Заказ не по адресу, перенаправляем на форсмажор.")
|
|
|
continue
|
|
|
|
|
|
- if (localtask.title!="10"):
|
|
|
+ if (localtask.title != "10"):
|
|
|
t1=threading.Thread(target=open_bot_template_wait, args=(5,localtask))
|
|
|
t1.start()
|
|
|
|
|
|
- if (localtask.title=="101"):
|
|
|
+ if (localtask.title == "101"):
|
|
|
t1=threading.Thread(target=open_bot_template_process, args=(10,localtask))
|
|
|
t1.start()
|
|
|
|
|
|
#если никакие обработчики не подошли - отправляем обратно в очередь
|
|
|
bot.proceed_status(proceed_to[0],localtask)
|
|
|
- print("Заказ возвращен в очередь\n")
|
|
|
- print (tasklist)
|
|
|
+ # print("Заказ возвращен в очередь\n")
|
|
|
+ # print (tasklist)
|
|
|
+ logging.info("Заказ возвращен в очередь")
|
|
|
+ logging.debug(tasklist)
|
|
|
|
|
|
#Авторизация и запуск бота
|
|
|
|
|
@@ -113,13 +143,18 @@ def open_bot_template():
|
|
|
tasklist = []
|
|
|
|
|
|
#надо инициализировать tasklist при запуске из API
|
|
|
+logging.info("Инициализация токена...")
|
|
|
token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
|
|
|
+logging.info("Токен инициализирован")
|
|
|
+logging.debug(f"token: {token}")
|
|
|
|
|
|
#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
|
|
|
+logging.info("Получение tasklist...")
|
|
|
tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
|
|
|
#tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets")
|
|
|
-print (len(tasklist))
|
|
|
-
|
|
|
+logging.info("tasklist получен")
|
|
|
+logging.debug(f"tasklist длина: {len(tasklist)}")
|
|
|
+#print (len(tasklist))
|
|
|
|
|
|
bot = JabberBot(JID, PASSWORD, PORT)
|
|
|
|