|
@@ -0,0 +1,65 @@
|
|
|
|
+import xmpp
|
|
|
|
+from xmpp import cli
|
|
|
|
+import config
|
|
|
|
+from BotClass import JabberBot
|
|
|
|
+import json
|
|
|
|
+import botrun
|
|
|
|
+
|
|
|
|
+# загрузка json файла
|
|
|
|
+def read_inf(file_name):
|
|
|
|
+ with open(file_name, 'r', encoding="utf-8") as file:
|
|
|
|
+ return json.load(file)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+# обработчик входящих сообщений
|
|
|
|
+def message_handler(conn, mess):
|
|
|
|
+ text = mess.getBody()#текст сообщения боту
|
|
|
|
+ user = mess.getFrom()#отправитель сообщения
|
|
|
|
+#работа с файлом в таком виде для входящей информации не нужна, так как бот должен обрабатывать входящие сообщения, а не файлы на сервере, и не сохраняет входящие сообщения в файлы. Он должен входящее сообщение поместить в очередь (список) на обработку.
|
|
|
|
+# При запуске бота он инициализирует пустой список, далее делает запрос к API для выгрузки в него всех заявок с его статусом для обработки и все элементы (если они есть) добавляет с помощью append в список.
|
|
|
|
+#При получении сообщения от кого-нибудь он также делает в список append
|
|
|
|
+#Каждлый пустой (не существующий) вызов API описывается как fake_api_call
|
|
|
|
+#Элемент списка удаляется, если с момента timestamp внутри json прошло больше 1 часа (соответственно json должен быть такого вида, что эта информация там есть)
|
|
|
|
+ applications = read_inf("applications.json")
|
|
|
|
+ print(text)
|
|
|
|
+ print(mess)
|
|
|
|
+
|
|
|
|
+ if text is not None:
|
|
|
|
+ message = xmpp.Message()
|
|
|
|
+ applications = read_inf("applications.json")
|
|
|
|
+
|
|
|
|
+ #если бот получает сообщение, соответсвующее значению id("1","2","3")
|
|
|
|
+ #он отправит описание desc этого определенного объекта
|
|
|
|
+ for app in applications["applications"]:
|
|
|
|
+ if app.get("id") == text:
|
|
|
|
+ message.setBody(app.get("desc"))
|
|
|
|
+
|
|
|
|
+ # если бот получает сообщение, он отправляет такое же сообщение отправителю
|
|
|
|
+ # message.setBody(text)
|
|
|
|
+ message.setFrom(config.JID)
|
|
|
|
+ message.setTo(user)
|
|
|
|
+ message.setType('chat')
|
|
|
|
+
|
|
|
|
+ conn.send(message)
|
|
|
|
+
|
|
|
|
+# пример функции, которую можно вызвать из любой части кода для отправки сообщения от бота пользователю
|
|
|
|
+def simple_send_message():
|
|
|
|
+ cli.send_message(config.JID, config.PASSWORD, "test@msg.sharix-app.org", "request.data")
|
|
|
|
+
|
|
|
|
+# recipient - это конкретный jid следующего обработчика заявки, ticket - json с заявкой
|
|
|
|
+def proceed_status(recipient, ticket):
|
|
|
|
+ cli.send_message(config.JID, config.PASSWORD, recipient, ticket)
|
|
|
|
+
|
|
|
|
+# в message помещается смысл и сам вызов API, который должен быть, но которого нет, а также хорошо туда добавить номер заказа (взять из json) и название бота
|
|
|
|
+# скорее всего эту функцию и подобные надо будет перенести в отдельный класс или библиотеку
|
|
|
|
+def fake_api_call(message):
|
|
|
|
+ cli.send_message(config.JID, config.PASSWORD, "test@msg.sharix-app.org", message)
|
|
|
|
+
|
|
|
|
+def open-st_request-assigned():
|
|
|
|
+ print("Тут описывается работа со списком задач в данном статусе")
|
|
|
|
+
|
|
|
|
+#Авторизация и запуск бота
|
|
|
|
+bot = JabberBot(config.JID, config.PASSWORD)
|
|
|
|
+bot.register_handler('message', message_handler)
|
|
|
|
+bot.start(open-st_request-assigned)
|
|
|
|
+
|