Accept Messages
This commit is contained in:
@ -12,16 +12,17 @@ import os
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi import FastAPI, Request, BackgroundTasks, HTTPException
|
||||
from fastapi.responses import HTMLResponse
|
||||
from fastapi.templating import Jinja2Templates
|
||||
|
||||
from jinja2.runtime import Undefined as JinjaUndefined
|
||||
|
||||
from ums.management.interface import Interface
|
||||
from ums.management.db import DB
|
||||
from ums.management.db import DB, MessageDbRow
|
||||
from ums.management.process import MessageProcessor
|
||||
|
||||
from ums.utils import AgentMessage, RiddleData, RiddleDataType, RiddleSolution, TEMPLATE_PATH
|
||||
from ums.utils import AgentMessage, AgentResponse, TEMPLATE_PATH
|
||||
|
||||
class WebMain():
|
||||
|
||||
@ -32,6 +33,7 @@ class WebMain():
|
||||
self._init_templates()
|
||||
|
||||
self.db = DB()
|
||||
self.msg_process = MessageProcessor(self.db)
|
||||
|
||||
self._add_routes()
|
||||
self._add_routers()
|
||||
@ -75,33 +77,25 @@ class WebMain():
|
||||
'index.html',
|
||||
{"request" : request}
|
||||
)
|
||||
|
||||
@self.app.post("/message", summary="Send a message to the management")
|
||||
def message(request: Request, message:AgentMessage, background_tasks: BackgroundTasks) -> AgentResponse:
|
||||
|
||||
receiver = request.headers['host']
|
||||
if ':' in receiver:
|
||||
receiver = receiver[:receiver.rindex(':')]
|
||||
|
||||
sender = request.headers['x-forwarded-for']
|
||||
|
||||
return self.msg_process.new_message(sender, receiver, message, background_tasks)
|
||||
|
||||
@self.app.get("/test", summary="Test")
|
||||
def huhu(request: Request) -> AgentMessage:
|
||||
ex = AgentMessage(
|
||||
id="ex1",
|
||||
riddle={
|
||||
"context":"Example 1",
|
||||
"question":"Get the name of the person."
|
||||
},
|
||||
data=[
|
||||
RiddleData(
|
||||
type=RiddleDataType.TEXT,
|
||||
file_plain="./cv.txt"
|
||||
)
|
||||
]
|
||||
)
|
||||
ex.status.extract.required = False
|
||||
|
||||
ex.solution = RiddleSolution(
|
||||
solution="Otto",
|
||||
explanation="Written in line 6 after 'Name:'"
|
||||
)
|
||||
|
||||
ins_count = self.db.add_message('from', 'to', ex)
|
||||
self.db.set_processed(ins_count)
|
||||
|
||||
return ex
|
||||
@self.app.get("/status", summary="Get status of a message")
|
||||
def status(count:int) -> MessageDbRow:
|
||||
msg = self.db.by_count(count)
|
||||
if msg is None:
|
||||
raise HTTPException(status_code=404, detail="Message not found")
|
||||
|
||||
return msg
|
||||
|
||||
if __name__ == "ums.management.main" and os.environ.get('SERVE', 'false') == 'true':
|
||||
main = WebMain()
|
||||
|
Reference in New Issue
Block a user