Spaces:
Running
Running
OnlyBiggg
commited on
Commit
·
1c87f53
1
Parent(s):
8e4fa41
feat: /info/cofirm
Browse files- app/dialogflow/api/v1/dialogflow.py +73 -18
- utils/format_data_dialog.py +24 -2
app/dialogflow/api/v1/dialogflow.py
CHANGED
@@ -4,7 +4,7 @@ from fastapi.responses import JSONResponse, RedirectResponse, HTMLResponse # typ
|
|
4 |
from datetime import datetime, timedelta
|
5 |
from fastapi.templating import Jinja2Templates
|
6 |
from app.dialogflow.services.dialog_service import dialog_service
|
7 |
-
from utils.format_data_dialog import format_time
|
8 |
|
9 |
from common.external.external_api import api
|
10 |
from app.dialogflow.services.origin_codes import origin_codes
|
@@ -13,6 +13,62 @@ router = APIRouter()
|
|
13 |
|
14 |
templates = Jinja2Templates(directory="templates")
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
@router.post('/routes')
|
17 |
async def route(request: Request):
|
18 |
body = await request.json()
|
@@ -576,23 +632,22 @@ async def response_ticket_info(request: Request) -> Response:
|
|
576 |
price = int(price) if price else None
|
577 |
|
578 |
text = [
|
579 |
-
f"
|
580 |
-
**Thông tin hành khách
|
581 |
-
|
582 |
-
Họ và tên {user_name}
|
583 |
-
Số điện thoại {phone_number}
|
584 |
-
Email {email}
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
Điểm
|
593 |
-
|
594 |
-
|
595 |
-
"""
|
596 |
]
|
597 |
|
598 |
payload={
|
|
|
4 |
from datetime import datetime, timedelta
|
5 |
from fastapi.templating import Jinja2Templates
|
6 |
from app.dialogflow.services.dialog_service import dialog_service
|
7 |
+
from utils.format_data_dialog import format_time, get_weekday_name
|
8 |
|
9 |
from common.external.external_api import api
|
10 |
from app.dialogflow.services.origin_codes import origin_codes
|
|
|
13 |
|
14 |
templates = Jinja2Templates(directory="templates")
|
15 |
|
16 |
+
|
17 |
+
@router.get('/info/confirm')
|
18 |
+
async def confirm(request: Request):
|
19 |
+
body = await request.json()
|
20 |
+
session_info = body.get("sessionInfo", {})
|
21 |
+
parameters = session_info.get("parameters", {}) if isinstance(session_info.get("parameters"), dict) else {}
|
22 |
+
raw_date = parameters.get("date")
|
23 |
+
departure_city = parameters.get("departure_city")
|
24 |
+
destination_city = parameters.get("destination_city")
|
25 |
+
origin_office = parameters.get("origin_office")
|
26 |
+
dest_office = parameters.get("dest_office")
|
27 |
+
raw_ticket_number = parameters.get("ticket_number")
|
28 |
+
ticket_number = int(raw_ticket_number) if raw_ticket_number else 1
|
29 |
+
|
30 |
+
date, week_day = get_weekday_name(raw_date.strftime("%Y-%m-%d"))
|
31 |
+
text = [f"""
|
32 |
+
Ngày: {date} {week_day}
|
33 |
+
Số vé: {ticket_number}
|
34 |
+
"""]
|
35 |
+
temp = ""
|
36 |
+
if origin_office and dest_office:
|
37 |
+
temp = f"""
|
38 |
+
Điểm đi: {origin_office}
|
39 |
+
Điểm đến: {dest_office}
|
40 |
+
"""
|
41 |
+
elif origin_office and departure_city:
|
42 |
+
temp = f"""
|
43 |
+
Điểm đi: {origin_office}
|
44 |
+
Điểm đến: {departure_city
|
45 |
+
}
|
46 |
+
"""
|
47 |
+
elif dest_office and departure_city:
|
48 |
+
temp = f"""
|
49 |
+
Điểm đi: {departure_city}
|
50 |
+
Điểm đến: {dest_office}
|
51 |
+
"""
|
52 |
+
elif departure_city and destination_city:
|
53 |
+
temp = f"""
|
54 |
+
Điểm đi: {departure_city}
|
55 |
+
Điểm đến: {destination_city}
|
56 |
+
"""
|
57 |
+
text[0] = temp + text[0]
|
58 |
+
payload = {
|
59 |
+
"richContent": [
|
60 |
+
[
|
61 |
+
{
|
62 |
+
"type": "chips",
|
63 |
+
"options": [
|
64 |
+
{"text": "Tìm chuyến xe"},
|
65 |
+
{"text": "Không, cảm ơn"}
|
66 |
+
]
|
67 |
+
}
|
68 |
+
]
|
69 |
+
]
|
70 |
+
}
|
71 |
+
return DialogFlowResponseAPI(text=text, payload=payload)
|
72 |
@router.post('/routes')
|
73 |
async def route(request: Request):
|
74 |
body = await request.json()
|
|
|
632 |
price = int(price) if price else None
|
633 |
|
634 |
text = [
|
635 |
+
f" \
|
636 |
+
**Thông tin hành khách**\
|
637 |
+
\n\
|
638 |
+
Họ và tên {user_name} \
|
639 |
+
Số điện thoại {phone_number} \
|
640 |
+
Email {email} \
|
641 |
+
\n\
|
642 |
+
**Thông tin lượt đi** \
|
643 |
+
\n\
|
644 |
+
Tuyến xe {route_name} \
|
645 |
+
Thời gian xuất bến {time} {date} \
|
646 |
+
Số ghế {seat} \
|
647 |
+
Điểm lên xe {pickup} \
|
648 |
+
Điểm trả khách {dropoff} \
|
649 |
+
Tổng tiền lượt đi {price} VND \
|
650 |
+
"
|
|
|
651 |
]
|
652 |
|
653 |
payload={
|
utils/format_data_dialog.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
|
2 |
|
3 |
|
4 |
def format_time(time: dict) -> str:
|
@@ -15,4 +15,26 @@ def format_time(time: dict) -> str:
|
|
15 |
else:
|
16 |
hours = int(time["hours"])
|
17 |
minutes = int(time["minutes"])
|
18 |
-
return f"{hours:02d}:{minutes:02d}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from datetime import datetime
|
2 |
|
3 |
|
4 |
def format_time(time: dict) -> str:
|
|
|
15 |
else:
|
16 |
hours = int(time["hours"])
|
17 |
minutes = int(time["minutes"])
|
18 |
+
return f"{hours:02d}:{minutes:02d}"
|
19 |
+
|
20 |
+
def get_weekday_name(date: str) -> tuple:
|
21 |
+
"""
|
22 |
+
Get the name of the weekday from its number.
|
23 |
+
:param weekday: Weekday number (0-6).
|
24 |
+
:return: Name of the weekday.
|
25 |
+
"""
|
26 |
+
vietnam_weekdays = {
|
27 |
+
0: "Thứ hai",
|
28 |
+
1: "Thứ ba",
|
29 |
+
2: "Thứ tư",
|
30 |
+
3: "Thứ năm",
|
31 |
+
4: "Thứ sáu",
|
32 |
+
5: "Thứ bảy",
|
33 |
+
6: "Chủ nhật"
|
34 |
+
}
|
35 |
+
date = datetime.strptime(date, "%Y-%m-%d")
|
36 |
+
|
37 |
+
weekday_ids = date.weekday()
|
38 |
+
weekday = vietnam_weekdays.get(weekday_ids) if vietnam_weekdays.get(weekday_ids) else ""
|
39 |
+
|
40 |
+
return weekday, date.strftime("%d-%m-%Y")
|