File size: 57,231 Bytes
a82806d
7eb99e8
a82806d
 
 
423d8c5
959e7c3
423d8c5
 
b5ff7cf
 
a82806d
 
 
 
 
 
 
 
 
 
a216a0d
a82806d
 
 
 
 
 
 
 
 
 
 
 
 
a216a0d
a82806d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a216a0d
a82806d
 
 
 
 
 
 
 
 
 
 
377f697
a82806d
377f697
 
 
 
 
a82806d
 
 
 
 
 
 
 
 
 
377f697
a82806d
 
 
 
 
 
 
 
 
 
 
 
 
aee383d
a82806d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8f0e6c5
a82806d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7eb99e8
a82806d
 
 
 
 
 
7eb99e8
a82806d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
377f697
 
a82806d
 
 
 
 
 
 
 
 
 
377f697
a82806d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8f0e6c5
a216a0d
7eb99e8
a82806d
 
 
 
 
7eb99e8
 
a82806d
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
import json
from typing import Any, Dict, List
from dotenv import load_dotenv
import os
import requests
from utils import get_device
if get_device() == "cpu":
    load_dotenv(override=True)

if get_device() == "mps":
    load_dotenv(override=True)
#{id:price}
CALL_ADMIN_URL = os.getenv("CALL_ADMIN_URL")
PURCHASE_URL = os.getenv("PURCHASE_URL")


TOOL_DEFINITIONS =[
{
    "type": "function",
    "function": {
        "name": "get_promotion_description",
        "description": "Use when user asks about product or promotion details.",
        "parameters": {
            "type": "object",
            "properties": {
                "permission": {"type": "string","description": "Must be set to 'yes' all the time",}
            },
            "required": ["permission"],
        },
    },
},
    {
        "type": "function",
        "function": {
            "name": "summary_order",
            "description": "Summarise promotions when user confirms they want to buy.",
            "parameters": {
                "type": "object",
                "properties": {
                    "promotion_id": {
                        "type": "string",
                        "description": "Promotion ID shown in the catalog.",
                    },
                    "quantity": {
                        "type": "integer",
                        "description": "Quantity the user wants to buy.",
                    },
                },
                "required": ["promotion_id", "quantity"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "purchase_product",
            "description": "Call after user confirms their personal information and want to place an order.",
            "parameters": {
                "type": "object",
                "properties": {
                    "promotion_id": {
                        "type": "string",
                        "description": "Promotion ID shown in the catalog.",
                    },
                    "quantity": {
                        "type": "integer",
                        "description": "Quantity the user wants to buy.",
                    },
                    "name": {
                        "type": "string",
                        "description": "Customer name in Thai.",
                    },
                    "surname": {
                        "type": "string",
                        "description": "Customer surname in Thai.",
                    },
                    "address": {
                        "type": "string",
                        "description": "Customer delivery address.",
                    },
                    "tel": {
                        "type": "string",
                        "description": "Customer telephone number.",
                    },
                },
                "required": ["promotion_id", "quantity", "name","surname", "address", "tel"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "call_admin",
            "description": "Use this when there is an issue at any stage of the process, such as being unable to retrieve the order, an incorrect address, or a failed system submission.",
            "parameters": {
                "type": "object",
                "properties": {
                    "cause": {
                        "type": "string",
                        "description": "Short description of the problem in Thai language.",
                    }
                },
                "required": ["cause"],
            },
        },
    },
]
promotion_catalog = {
    "00001": 2900,
    "00002": 1890,
    "00003": 2900,
    "00004": 2900,
    "00005": 2900,
}


def _update_asr_stage(stage: str) -> None:
    """Switch the ASR stage safely without breaking tool execution."""
    try:
        from backend.asr import set_asr_stage

        set_asr_stage(stage)
    except Exception as exc:
        print(f"Unable to switch ASR stage to '{stage}': {exc}")


def _format_tool_result(result: Any) -> str:
    """Convert tool outputs to a JSON string for the LLM."""
    if isinstance(result, str):
        return result
    try:
        return json.dumps(result, ensure_ascii=False)
    except TypeError:
        return json.dumps({"result": str(result)}, ensure_ascii=False)


def summary_order(promotion_id: str, quantity: int) -> Dict[str, Any]:
    """Return a structured order summary for the requested promotion."""
    _update_asr_stage("typhoon")
    # print(f"change stage to gpt for summary_order")
    if promotion_id not in promotion_catalog:
        return {"status": "error", "message": "ไม่พบโปรโมชันที่เลือก"}

    unit_price = promotion_catalog[promotion_id]
    total_price = unit_price * quantity
    return {
        "status": "ok",
        "promotion_id": promotion_id,
        "unit_price": unit_price,
        "quantity": quantity,
        "total_price": total_price,
        "currency": "THB",
    }


def call_admin(cause: str, chat_history : List[Dict[str, str]]):
    #transfer the call to admin..
    payload = {
        
        "cause":cause,
        "history":chat_history
    }
    

    try:
        # 3. Make the API call with a timeout to prevent it from hanging
        response = requests.post(CALL_ADMIN_URL, json=payload, timeout=20) # 10-second timeout

        # 4. Check if the request was successful (i.e., status code 2xx)
        # If not, this will raise an HTTPError, which is caught by the except block.
        response.raise_for_status()

        # 5. If successful, return the success status and the data from the response
        return {
            "status": "success", 
            "data": response.json() # Assumes the API returns JSON
        }

    except requests.exceptions.RequestException as e:
        # 6. Catch any network-related errors (timeout, connection error, HTTP error)
        print(f"An error occurred during the purchase request: {e}") # For logging
        return {
            "status": "error", 
            "message": "ไม่สามารถเชื่อมต่อกับระบบเพื่อทำรายการได้"
        }
    except:
        return {
            "status": "error", 
        }
    


def purchase_product(
    promotion_id: str,
    quantity: int,
    name: str,
    surname: str,
    address: str,
    tel: str,
) -> Dict[str, Any]:
    """Mock purchase endpoint that validates input and returns a status payload."""
    _update_asr_stage("typhoon")
    if promotion_id not in promotion_catalog:
        return {"status": "error", "message": "ไม่สามารถทำรายการได้"}
    payload = {
        "promotion_id": promotion_id,
        "quantity": quantity,
        "user_name": name + " " + surname,
        "address": address,
        "tel": tel
    }

    try:
        # 3. Make the API call with a timeout to prevent it from hanging
        response = requests.post(PURCHASE_URL, json=payload, timeout=20) # 10-second timeout

        # 4. Check if the request was successful (i.e., status code 2xx)
        # If not, this will raise an HTTPError, which is caught by the except block.
        response.raise_for_status()

        # 5. If successful, return the success status and the data from the response
        return {
            "status": "success", 
            "data": response.json() # Assumes the API returns JSON
        }

    except requests.exceptions.RequestException as e:
        # 6. Catch any network-related errors (timeout, connection error, HTTP error)
        print(f"An error occurred during the purchase request: {e}") # For logging
        return {
            "status": "error", 
            "message": "ไม่สามารถเชื่อมต่อกับระบบเพื่อทำรายการได้"
        }
    except json.JSONDecodeError:
        # 7. Catch errors if the server response is not valid JSON
        print("Failed to decode JSON from response.") # For logging
        return {
            "status": "error",
            "message": "ได้รับข้อมูลจากระบบผิดพลาด กรุณาตรวจสอบความถูกต้องของข้อมูล"
        }


PROMOTION_DESCRIPTION = """
ตัวอย่างรายการสินค้า จาก www.1577shop.com

**[2ฟรี2] Trylagina 12X (ไตรลาจิน่า 12X) เซรั่มคืนความอ่อนเยาว์ (30g.) 2 กระปุก ฟรี เซรั่ม (5g.) 2 กระปุก**
Promotion_id = "00001"

**Original price was: ฿9,400.00. Current price is: ฿2,900.00.-70%**

The Sense of Youth Infinity รู้สึกถึงความอ่อนเยาว์ไม่มีที่สิ้นสุด TRYLAGINA Age-Defying Collagen Serum 12X การพัฒนาที่ไม่สิ้นสุด สู่ผลิตภัณฑ์ที่ยอดเยี่ยม เพื่อให้คุณได้สัมผัสความอ่อนเยาว์ ตามแบบฉบับของ ไตรลาจีน่า เซรั่มสูตรใหม่ ดีขึ้น 12 เท่า
*เมื่อเทียบเท่ากับการใช้ Trylagina Intensive Collagen Mask 12 ครั้ง ช่วยฟื้นบำรุงอย่างล้ำลึก ถึง 5 มิติ เผยผิวใหม่อ่อนเยาว์กว่าที่เคย
-90% ของผู้ทดลองใช้พบว่าริ้วรอยลดลง และกระชับขึ้น
-87% ของผู้ทดลองใช้พบว่าผิวได้รับความชุ่มชื้นทันทีที่ใช้
-82% ของผู้ทดลองใช้พบว่าผิวกระจ่างใสใน 7 วัน

5 สารสกัดสําคัญ ที่คิดค้นมาเพื่อแก้ปัญหาผิว
1. 5D Matrixcolla  ช่วยกระตุ้นการสร้าง Collagen ให้ผิวคืน “ความอ่อนเยาว์”
2. HyWhite® ช่วยลดเลือนฝ้า กระ จุดด่างดำ และ a-Linoleic Acid มีคุณสมบัติช่วยให้ผิวขาวกระจ่างใส เพิ่มความสม่ำเสมอให้กับสีผิว
3. สารสกัดยีสต์จาก ดอกโฮยาคาร์โนซ่า เติมความแข็งแรงให้กับผิว มอบความแข็งแรงให้กับผิวจากภายใน ช่วยให้ผิวสุขภาพดี เปล่งปลั่ง
4. PatcH2O® ช่วยให้ผิวชุ่มชื่นทันที พร้อมล็อกผิวให้ฉ่ำน้ำยาวนาน ถึง 5 วัน หรือ 120 ชั่วโมง *เมื่อใช้เป็นประจำต่อเนื่อง และ สามารถปกป้องผิวจาก มลภาวะฝุ่น PM2.5
5. สาหร่ายซุยเซ็นจิ จากประเทศญี่ปุ่น ซึ่งเติบโตในแหล่งน้ำที่อุดมไปด้วยแร่ธาตุจากภูเขาไฟอะโซะ (Aso) เกาะคิวชู (Kyoshu) ช่วยปลอบประโลมผิว ให้ผิวรู้สึกผ่อนคลาย
เลขที่ได้รับจดแจ้ง : 11-1-6600001843

สิ่งที่คุณจะได้รับ
1.Trylagina Age-Defying Collagen Serum 12X ขนาด 30 g. 2 กระปุก
2.Trylagina Age-Defying Collagen Serum 12X ขนาด 5 g. 2 กระปุก

https://www.1577shop.co.th/product/1577-shop-tgn-03
-------
## (1 ใหญ่) Minus 20 ไมนัสทเวนตี้ ครีมเกล็ดทองคำ ผิวตึง ฉ่ำ ไบร์ท | 30 กรัม
promotion-id = "00002"

**Original price was: ฿3,200.00.Current price is: ฿1,890.00.-41%**

Minus20 Advanced Youth Anti-Wrinkle Cream
ครีมบำรุงผิวหน้า ไมนัสทเวนตี้ แอดวานซ์ ยูธ แอนไท ริงเคิล ครีม

ครีมสูตรเฉพาะเพื่อผิววัย 40+ 50+ 60+ ช่วยตอบโจทย์ปัญหาผิวสาวไทยวัยกลางคน ที่ผ่านช่วงเวลาแห่งการเปลี่ยนแปลง ส่งผลให้มีริ้วรอยร่องลึก ผิวแห้ง หน้าหมองคล้ำ มีฝ้า จุดด่างดำฝังลึก และที่ครีมเดิมที่คุณเคยใช้อาจไม่ได้ผลต่อไป เพราะเราเข้าใจทุกปัญหาจึงพัฒนาไมนัสทเวนตี้มาเป็นสูตรแอดวานซ์ ยูธ เพื่อให้คุณได้สัมผัสผลลัพธ์ผิวที่
✨ ตึงกว่าเดิม ริ้วรอยร่องลึกจางลง
✨ ฉ่ำกว่าเดิม ชุ่มชื้นอิ่มน้ำยาวนานมากกว่า 24 ชั่วโมง
✨ ไบร์ทกว่าเดิม หน้าและดูกระจ่างใส จุดด่างดำจางลง

ไมนัสทเวนตี้ คัดสรรสารสกัดที่ช่วยตอบโจทย์ปัญหาผิววัยเราอย่างตรงจุดการันตีคุณภาพกลไกลการทำสารของสารกัดด้วยได้รับรางวัลโนเบล แต่ยังอ่อนโยนเหมาะกับทุกสภาพผิว

เนื้อผสมครีมเกล็ดทองคำบริสุทธิ์ 99.99% อนุภาคทองละเอียดซึมลึก สัมผัสบางเบา เกลี่ยง่าย ซึมไว ไม่เหนียว ไม่เหนอะหนะ

*ผลลัพธ์ขึ้นอยู่กับแต่ละสภาพผิวแต่ละบุคคล
• เลขที่ใบรับจดเเจ้ง : 74-1-6600008720
• ขนาด 30 กรัม

✨วิธีใช้:
• หลังล้างหน้าทาครีมไมนัสทเวนตี้ในปริมาณที่เหมาะสม
• แตะและลูบไล้เบาๆลงบนผิวหน้าและลำคอ
• ใช้ทาเช้าและเย็น เป็นประจำทุกวัน

✨เคล็ดลับ :
• เก็บครีมบำรุงผิวในอุณหภูมิที่เหมาะสม
• ทาครีมกันแดดเป็นประจำทุกวัน เพื่อปกป้องผิวจากแสงแดด

สิ่งที่จะได้รับ
1. Minus20 Advanced Youth Anti-Wrinkle Cream (30g) จำนวน 1 กระปุก

[https://www.1577shop.co.th/product/1577-shop-msn-001](https:/www.1577shop.co.th/product/1577-shop-msn-001)
-------
## [2ฟรี2] Minus 20 (ไมนัสทเวนตี้) ครีมเกล็ดทองคำ ผิวตึง ฉ่ำ ไบร์ท | เซตขายดี
promotion_id = "00003

**Original price was: ฿8,180.00.Current price is: ฿2,900.00.-65%**

Minus20 Advanced Youth Anti-Wrinkle Cream
ครีมบำรุงผิวหน้า ไมนัสทเวนตี้ แอดวานซ์ ยูธ แอนไท ริงเคิล ครีมครีมสูตรเฉพาะเพื่อผิววัย 40+ 50+ 60+ ช่วยตอบโจทย์ปัญหาผิวสาวไทยวัยกลางคน ที่ผ่านช่วงเวลาแห่งการเปลี่ยนแปลง ส่งผลให้มีริ้วรอยร่องลึก ผิวแห้ง หน้าหมองคล้ำ มีฝ้า จุดด่างดำฝังลึก และที่ครีมเดิมที่คุณเคยใช้อาจไม่ได้ผลต่อไป เพราะเราเข้าใจทุกปัญหาจึงพัฒนาไมนัสทเวนตี้มาเป็นสูตรแอดวานซ์ ยูธ เพื่อให้คุณได้สัมผัสผลลัพธ์ผิวที่
✨ ตึงกว่าเดิม ริ้วรอยร่องลึกจางลง
✨ ฉ่ำกว่าเดิม ชุ่มชื้นอิ่มน้ำยาวนานมากกว่า 24 ชั่วโมง
✨ ไบร์ทกว่าเดิม หน้าและดูกระจ่างใส จุดด่างดำจางลงไมนัสทเวนตี้ คัดสรรสารสกัดที่ช่วยตอบโจทย์ปัญหาผิววัยเราอย่างตรงจุดการันตีคุณภาพกลไกลการทำสารของสารกัดด้วยได้รับรางวัลโนเบล แต่ยังอ่อนโยนเหมาะกับทุกสภาพผิวเนื้อผสมครีมเกล็ดทองคำบริสุทธิ์ 99.99% อนุภาคทองละเอียดซึมลึก สัมผัสบางเบา เกลี่ยง่าย ซึมไว ไม่เหนียว ไม่เหนอะหนะ*ผลลัพธ์ขึ้นอยู่กับแต่ละสภาพผิวแต่ละบุคคล
• เลขที่ใบรับจดเเจ้ง : 74-1-6600008720
• ขนาด 30 กรัม

✨วิธีใช้:
• หลังล้างหน้าทาครีมไมนัสทเวนตี้ในปริมาณที่เหมาะสม
• แตะและลูบไล้เบาๆลงบนผิวหน้าและลำคอ
• ใช้ทาเช้าและเย็น เป็นประจำทุกวัน

✨เคล็ดลับ :
• เก็บครีมบำรุงผิวในอุณหภูมิที่เหมาะสม
• ทาครีมกันแดดเป็นประจำทุกวัน เพื่อปกป้องผิวจากแสงแดด

สิ่งที่จะได้รับ
1. Minus20 Advanced Youth Anti-Wrinkle Cream (30g) จำนวน 2 กระปุก
2. Minus20 Advanced Youth Anti-Wrinkle Cream (8g) จำนวน 2 กระปุก

https://www.1577shop.co.th/product/1577-shop-mns-003
-------
## [2ฟรี1] Trylagina 12X (ไตรลาจิน่า 12X) เซรั่มคืนความอ่อนเยาว์ (30g.) 2 กระปุก ฟรี ทริปเปิลไมเซล่ามูสโฟม (150ml.)
promotion-id = "00004"

**Original price was: ฿8,800.00. Current price is: ฿2,900.00.-68%**

The Sense of Youth Infinity รู้สึกถึงความอ่อนเยาว์ไม่มีที่สิ้นสุด
TRYLAGINA Age-Defying Collagen Serum 12X การพัฒนาที่ไม่สิ้นสุด สู่ผลิตภัณฑ์ที่ยอดเยี่ยม เพื่อให้คุณได้สัมผัสความอ่อนเยาว์ ตามแบบฉบับของ ไตรลาจีน่า ผสาน 5 สารสกัดสําคัญ ที่คิดค้นมาเพื่อแก้ปัญหาผิว

-90% ของผู้ทดลองใช้พบว่าริ้วรอยลดลง และกระชับขึ้น
-87% ของผู้ทดลองใช้พบว่าผิวได้รับความชุ่มชื้นทันทีที่ใช้
-82% ของผู้ทดลองใช้พบว่าผิวกระจ่างใสใน 7 วัน

*สิ่งที่คุณจะได้รับ
1.Trylagina Age-Defying Collagen Serum 12X ขนาด 30 g. 2 กระปุก
2.Trylagina Triple Micellar Mousse Foam ขนาด 150 ml. 1 ขวด

[https://www.1577shop.co.th/product/1577-shop-tgn-04](https:/www.1577shop.co.th/product/1577-shop-tgn-04)
-------
## [2ฟรี1] Trylagina 12X (ไตรลาจิน่า 12X) เซรั่มคืนความอ่อนเยาว์ (30g.) 2 กระปุก ฟรี ครีมกันแดด (30g.)
promotion_id = "00005"

**Original price was: ฿8,690.00.Current price is: ฿2,900.00.-67%**

The Sense of Youth Infinity รู้สึกถึงความอ่อนเยาว์ไม่มีที่สิ้นสุด
TRYLAGINA Age-Defying Collagen Serum 12X การพัฒนาที่ไม่สิ้นสุด สู่ผลิตภัณฑ์ที่ยอดเยี่ยม เพื่อให้คุณได้สัมผัสความอ่อนเยาว์ ตามแบบฉบับของ ไตรลาจีน่า ผสาน 5 สารสกัดสําคัญ ที่คิดค้นมาเพื่อแก้ปัญหาผิว

-90% ของผู้ทดลองใช้พบว่าริ้วรอยลดลง และกระชับขึ้น
-87% ของผู้ทดลองใช้พบว่าผิวได้รับความชุ่มชื้นทันทีที่ใช้
-82% ของผู้ทดลองใช้พบว่าผิวกระจ่างใสใน 7 วัน

*สิ่งที่คุณจะได้รับ
1. Trylagina Age-Defying Collagen Serum 12X ขนาด (30g.) 1 กระปุก
2. Trylagina Age Defense Sunscreen Serum SPF50+ PA++++ ขนาด (30g.) 1 หลอด

https://www.1577shop.co.th/product/1577-shop-tgn-05
-------
TRYLAGINA Age-Defying Collagen Serum 12X การพัฒนาที่ไม่สิ้นสุด สู่ผลิตภัณฑ์ที่ยอดเยี่ยม เพื่อให้คุณได้สัมผัสความอ่อนเยาว์ ตามแบบฉบับของ ไตรลาจีน่า เซรั่มสูตรใหม่ ดีขึ้น 12 เท่า *เมื่อเทียบเท่ากับการใช้ Trylagina Intensive Collagen Mask 12 ครั้ง ช่วยฟื้นบำรุงอย่างล้ำลึก ถึง 5 มิติ  เผยผิวใหม่อ่อนเยาว์กว่าที่เคย

-90% ของผู้ทดลองใช้พบว่าริ้วรอยลดลง และกระชับขึ้น
-87% ของผู้ทดลองใช้พบว่าผิวได้รับความชุ่มชื้นทันทีที่ใช้
-82% ของผู้ทดลองใช้พบว่าผิวกระจ่างใสใน 7 วัน

5 สารสกัดสําคัญ ที่คิดค้นมาเพื่อแก้ปัญหาผิว
1. 5D Matrixcolla  ช่วยกระตุ้นการสร้าง Collagen ให้ผิวคืน “ความอ่อนเยาว์”
2. HyWhite® ช่วยลดเลือนฝ้า กระ จุดด่างดำ และ a-Linoleic Acid มีคุณสมบัติช่วยให้ผิวขาวกระจ่างใส เพิ่มความสม่ำเสมอให้กับสีผิว
3. สารสกัดยีสต์จาก ดอกโฮยาคาร์โนซ่า เติมความแข็งแรงให้กับผิว มอบความแข็งแรงให้กับผิวจากภายใน ช่วยให้ผิวสุขภาพดี เปล่งปลั่ง
4. PatcH2O® ช่วยให้ผิวชุ่มชื่นทันที พร้อมล็อกผิวให้ฉ่ำน้ำยาวนาน ถึง 5 วัน หรือ 120 ชั่วโมง *เมื่อใช้เป็นประจำต่อเนื่อง และ สามารถปกป้องผิวจาก มลภาวะฝุ่น PM2.5
5. สาหร่ายซุยเซ็นจิ จากประเทศญี่ปุ่น ซึ่งเติบโตในแหล่งน้ำที่อุดมไปด้วยแร่ธาตุจากภูเขาไฟอะโซะ (Aso) เกาะคิวชู (Kyoshu) ช่วยปลอบประโลมผิว ให้ผิวรู้สึกผ่อนคลาย

ขอแนะนําวิธีการใช้ผลิตภัณฑ์ เพื่อการฟื้นฟูผิวอย่างเต็มประสิทธิภาพ
STEP 1 หลังทำความสะอาดผิวหน้า เตรียมผิวพร้อมรับการบำรุง ใช้ไม้พายตักเซรั่มลงบนหลังมือ
STEP 2 แต้มเซรั่มลงบนผิวหน้า 5 จุด ได้แก่บริเวณ หน้าผาก ปลายจมูก พวงแก้มซ้าย พวงแก้มขวา และปลายคาง
STEP 3 ลูบไล้เซรั่มด้วยปลายนิ้วทั้งสองข้าง เพื่อปลดปล่อยคุณค่าของสารสกัด จากนั้นจึงกดเบาๆ ลงบนผิวหน้าและลำคอ ใช้ทั้งเช้าและเย็น
เลขที่ได้รับจดแจ้ง : 11-1-6600001843"""


def get_promotion_description(permission: str) -> Any:
    """Return the long-form promotion description after explicit confirmation."""
    if permission.strip().lower() != "yes":
        return {
            "status": "error",
            "message": "ต้องได้รับการยืนยันจากลูกค้าก่อนแสดงรายละเอียดโปรโมชั่น",
        }
    return {"status": "ok", "description": PROMOTION_DESCRIPTION}
    # return {"status": "ok", "description": "test"}


TOOL_FUNCTIONS = {
    "get_promotion_description": get_promotion_description,
    "summary_order": summary_order,
    "purchase_product": purchase_product,
    "call_admin": call_admin
}


def execute_tool(name: str, arguments: Dict[str, Any]) -> str:
    """Execute a registered tool and return a JSON-serialised string result."""
    function = TOOL_FUNCTIONS.get(name)
    if not function:
        return json.dumps(
            {"status": "error", "message": f"Unknown tool '{name}'"},
            ensure_ascii=False,
        )

    try:
        result = function(**arguments)
    except TypeError as exc:
        return json.dumps(
            {"status": "error", "message": f"Invalid arguments for '{name}': {exc}"},
            ensure_ascii=False,
        )
    except Exception as exc:  # noqa: BLE001
        return json.dumps({"status": "error", "message": str(exc)}, ensure_ascii=False)

    return _format_tool_result(result)


if __name__ == "__main__":
    result = call_admin(
        cause="ตัวอย่างปัญหา: ไม่สามารถทำรายการสั่งซื้อได้",
        chat_history=[{'role': 'assistant', 'metadata': None, 'content': 'สวัสดีค่ะณภัทร 1577Homeshopping ยินดีให้บริการค่ะ', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'สวัสดีครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'สนใจโปรโมชั่นไหนเป็นพิเศษไหมคะหรืออยากให้ณภัทรแนะนำโปรโมชั่นที่กำลังฮิตอยู่ตอนนี้ให้ดีคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'โปรโมชั่นครับที่กําลังฮิตก็ได้ครับ', 'options': None}, {'role': 'assistant', 'content': None, 'tool_calls': [{'id': 'function-call-2730241149475294520', 'type': 'function', 'function': {'name': 'get_promotion_description', 'arguments': '{"permission":"yes"}'}}]}, {'role': 'tool', 'tool_call_id': 'function-call-2730241149475294520', 'content': '{"status": "ok", "description": "\\nตัวอย่างรายการสินค้า จาก www.1577shop.com\\n\\n**[2ฟรี2] Trylagina 12X (ไตรลาจิน่า 12X) เซรั่มคืนความอ่อนเยาว์ (30g.) 2 กระปุก ฟรี เซรั่ม (5g.) 2 กระปุก**\\nPromotion_id = \\"00001\\"\\n\\n**Original price was: ฿9,400.00. Current price is: ฿2,900.00.-70%**\\n\\nThe Sense of Youth Infinity รู้สึกถึงความอ่อนเยาว์ไม่มีที่สิ้นสุด TRYLAGINA Age-Defying Collagen Serum 12X การพัฒนาที่ไม่สิ้นสุด สู่ผลิตภัณฑ์ที่ยอดเยี่ยม เพื่อให้คุณได้สัมผัสความอ่อนเยาว์ ตามแบบฉบับของ ไตรลาจีน่า เซรั่มสูตรใหม่ ดีขึ้น 12 เท่า\\n*เมื่อเทียบเท่ากับการใช้ Trylagina Intensive Collagen Mask 12 ครั้ง ช่วยฟื้นบำรุงอย่างล้ำลึก ถึง 5 มิติ เผยผิวใหม่อ่อนเยาว์กว่าที่เคย\\n-90% ของผู้ทดลองใช้พบว่าริ้วรอยลดลง และกระชับขึ้น\\n-87% ของผู้ทดลองใช้พบว่าผิวได้รับความชุ่มชื้นทันทีที่ใช้\\n-82% ของผู้ทดลองใช้พบว่าผิวกระจ่างใสใน 7 วัน\\n\\n5 สารสกัดสําคัญ ที่คิดค้นมาเพื่อแก้ปัญหาผิว\\n1. 5D Matrixcolla  ช่วยกระตุ้นการสร้าง Collagen ให้ผิวคืน “ความอ่อนเยาว์”\\n2. HyWhite® ช่วยลดเลือนฝ้า กระ จุดด่างดำ และ a-Linoleic Acid มีคุณสมบัติช่วยให้ผิวขาวกระจ่างใส เพิ่มความสม่ำเสมอให้กับสีผิว\\n3. สารสกัดยีสต์จาก ดอกโฮยาคาร์โนซ่า เติมความแข็งแรงให้กับผิว มอบความแข็งแรงให้กับผิวจากภายใน ช่วยให้ผิวสุขภาพดี เปล่งปลั่ง\\n4. PatcH2O® ช่วยให้ผิวชุ่มชื่นทันที พร้อมล็อกผิวให้ฉ่ำน้ำยาวนาน ถึง 5 วัน หรือ 120 ชั่วโมง *เมื่อใช้เป็นประจำต่อเนื่อง และ สามารถปกป้องผิวจาก มลภาวะฝุ่น PM2.5\\n5. สาหร่ายซุยเซ็นจิ จากประเทศญี่ปุ่น ซึ่งเติบโตในแหล่งน้ำที่อุดมไปด้วยแร่ธาตุจากภูเขาไฟอะโซะ (Aso) เกาะคิวชู (Kyoshu) ช่วยปลอบประโลมผิว ให้ผิวรู้สึกผ่อนคลาย\\nเลขที่ได้รับจดแจ้ง : 11-1-6600001843\\n\\nสิ่งที่คุณจะได้รับ\\n1.Trylagina Age-Defying Collagen Serum 12X ขนาด 30 g. 2 กระปุก\\n2.Trylagina Age-Defying Collagen Serum 12X ขนาด 5 g. 2 กระปุก\\n\\nhttps://www.1577shop.co.th/product/1577-shop-tgn-03\\n-------\\n## (1 ใหญ่) Minus 20 ไมนัสทเวนตี้ ครีมเกล็ดทองคำ ผิวตึง ฉ่ำ ไบร์ท | 30 กรัม\\npromotion-id = \\"00002\\"\\n\\n**Original price was: ฿3,200.00.Current price is: ฿1,890.00.-41%**\\n\\nMinus20 Advanced Youth Anti-Wrinkle Cream\\nครีมบำรุงผิวหน้า ไมนัสทเวนตี้ แอดวานซ์ ยูธ แอนไท ริงเคิล ครีม\\n\\nครีมสูตรเฉพาะเพื่อผิววัย 40+ 50+ 60+ ช่วยตอบโจทย์ปัญหาผิวสาวไทยวัยกลางคน ที่ผ่านช่วงเวลาแห่งการเปลี่ยนแปลง ส่งผลให้มีริ้วรอยร่องลึก ผิวแห้ง หน้าหมองคล้ำ มีฝ้า จุดด่างดำฝังลึก และที่ครีมเดิมที่คุณเคยใช้อาจไม่ได้ผลต่อไป เพราะเราเข้าใจทุกปัญหาจึงพัฒนาไมนัสทเวนตี้มาเป็นสูตรแอดวานซ์ ยูธ เพื่อให้คุณได้สัมผัสผลลัพธ์ผิวที่\\n✨ ตึงกว่าเดิม ริ้วรอยร่องลึกจางลง\\n✨ ฉ่ำกว่าเดิม ชุ่มชื้นอิ่มน้ำยาวนานมากกว่า 24 ชั่วโมง\\n✨ ไบร์ทกว่าเดิม หน้าและดูกระจ่างใส จุดด่างดำจางลง\\n\\nไมนัสทเวนตี้ คัดสรรสารสกัดที่ช่วยตอบโจทย์ปัญหาผิววัยเราอย่างตรงจุดการันตีคุณภาพกลไกลการทำสารของสารกัดด้วยได้รับรางวัลโนเบล แต่ยังอ่อนโยนเหมาะกับทุกสภาพผิว\\n\\nเนื้อผสมครีมเกล็ดทองคำบริสุทธิ์ 99.99% อนุภาคทองละเอียดซึมลึก สัมผัสบางเบา เกลี่ยง่าย ซึมไว ไม่เหนียว ไม่เหนอะหนะ\\n\\n*ผลลัพธ์ขึ้นอยู่กับแต่ละสภาพผิวแต่ละบุคคล\\n• เลขที่ใบรับจดเเจ้ง : 74-1-6600008720\\n• ขนาด 30 กรัม\\n\\n✨วิธีใช้:\\n• หลังล้างหน้าทาครีมไมนัสทเวนตี้ในปริมาณที่เหมาะสม\\n• แตะและลูบไล้เบาๆลงบนผิวหน้าและลำคอ\\n• ใช้ทาเช้าและเย็น เป็นประจำทุกวัน\\n\\n✨เคล็ดลับ :\\n• เก็บครีมบำรุงผิวในอุณหภูมิที่เหมาะสม\\n• ทาครีมกันแดดเป็นประจำทุกวัน เพื่อปกป้องผิวจากแสงแดด\\n\\nสิ่งที่จะได้รับ\\n1. Minus20 Advanced Youth Anti-Wrinkle Cream (30g) จำนวน 1 กระปุก\\n\\n[https://www.1577shop.co.th/product/1577-shop-msn-001](https:/www.1577shop.co.th/product/1577-shop-msn-001)\\n-------\\n## [2ฟรี2] Minus 20 (ไมนัสทเวนตี้) ครีมเกล็ดทองคำ ผิวตึง ฉ่ำ ไบร์ท | เซตขายดี\\npromotion_id = \\"00003\\n\\n**Original price was: ฿8,180.00.Current price is: ฿2,900.00.-65%**\\n\\nMinus20 Advanced Youth Anti-Wrinkle Cream\\nครีมบำรุงผิวหน้า ไมนัสทเวนตี้ แอดวานซ์ ยูธ แอนไท ริงเคิล ครีมครีมสูตรเฉพาะเพื่อผิววัย 40+ 50+ 60+ ช่วยตอบโจทย์ปัญหาผิวสาวไทยวัยกลางคน ที่ผ่านช่วงเวลาแห่งการเปลี่ยนแปลง ส่งผลให้มีริ้วรอยร่องลึก ผิวแห้ง หน้าหมองคล้ำ มีฝ้า จุดด่างดำฝังลึก และที่ครีมเดิมที่คุณเคยใช้อาจไม่ได้ผลต่อไป เพราะเราเข้าใจทุกปัญหาจึงพัฒนาไมนัสทเวนตี้มาเป็นสูตรแอดวานซ์ ยูธ เพื่อให้คุณได้สัมผัสผลลัพธ์ผิวที่\\n✨ ตึงกว่าเดิม ริ้วรอยร่องลึกจางลง\\n✨ ฉ่ำกว่าเดิม ชุ่มชื้นอิ่มน้ำยาวนานมากกว่า 24 ชั่วโมง\\n✨ ไบร์ทกว่าเดิม หน้าและดูกระจ่างใส จุดด่างดำจางลงไมนัสทเวนตี้ คัดสรรสารสกัดที่ช่วยตอบโจทย์ปัญหาผิววัยเราอย่างตรงจุดการันตีคุณภาพกลไกลการทำสารของสารกัดด้วยได้รับรางวัลโนเบล แต่ยังอ่อนโยนเหมาะกับทุกสภาพผิวเนื้อผสมครีมเกล็ดทองคำบริสุทธิ์ 99.99% อนุภาคทองละเอียดซึมลึก สัมผัสบางเบา เกลี่ยง่าย ซึมไว ไม่เหนียว ไม่เหนอะหนะ*ผลลัพธ์ขึ้นอยู่กับแต่ละสภาพผิวแต่ละบุคคล\\n• เลขที่ใบรับจดเเจ้ง : 74-1-6600008720\\n• ขนาด 30 กรัม\\n\\n✨วิธีใช้:\\n• หลังล้างหน้าทาครีมไมนัสทเวนตี้ในปริมาณที่เหมาะสม\\n• แตะและลูบไล้เบาๆลงบนผิวหน้าและลำคอ\\n• ใช้ทาเช้าและเย็น เป็นประจำทุกวัน\\n\\n✨เคล็ดลับ :\\n• เก็บครีมบำรุงผิวในอุณหภูมิที่เหมาะสม\\n• ทาครีมกันแดดเป็นประจำทุกวัน เพื่อปกป้องผิวจากแสงแดด\\n\\nสิ่งที่จะได้รับ\\n1. Minus20 Advanced Youth Anti-Wrinkle Cream (30g) จำนวน 2 กระปุก\\n2. Minus20 Advanced Youth Anti-Wrinkle Cream (8g) จำนวน 2 กระปุก\\n\\nhttps://www.1577shop.co.th/product/1577-shop-mns-003\\n-------\\n## [2ฟรี1] Trylagina 12X (ไตรลาจิน่า 12X) เซรั่มคืนความอ่อนเยาว์ (30g.) 2 กระปุก ฟรี ทริปเปิลไมเซล่ามูสโฟม (150ml.)\\npromotion-id = \\"00004\\"\\n\\n**Original price was: ฿8,800.00. Current price is: ฿2,900.00.-68%**\\n\\nThe Sense of Youth Infinity รู้สึกถึงความอ่อนเยาว์ไม่มีที่สิ้นสุด\\nTRYLAGINA Age-Defying Collagen Serum 12X การพัฒนาที่ไม่สิ้นสุด สู่ผลิตภัณฑ์ที่ยอดเยี่ยม เพื่อให้คุณได้สัมผัสความอ่อนเยาว์ ตามแบบฉบับของ ไตรลาจีน่า ผสาน 5 สารสกัดสําคัญ ที่คิดค้นมาเพื่อแก้ปัญหาผิว\\n\\n-90% ของผู้ทดลองใช้พบว่าริ้วรอยลดลง และกระชับขึ้น\\n-87% ของผู้ทดลองใช้พบว่าผิวได้รับความชุ่มชื้นทันทีที่ใช้\\n-82% ของผู้ทดลองใช้พบว่าผิวกระจ่างใสใน 7 วัน\\n\\n*สิ่งที่คุณจะได้รับ\\n1.Trylagina Age-Defying Collagen Serum 12X ขนาด 30 g. 2 กระปุก\\n2.Trylagina Triple Micellar Mousse Foam ขนาด 150 ml. 1 ขวด\\n\\n[https://www.1577shop.co.th/product/1577-shop-tgn-04](https:/www.1577shop.co.th/product/1577-shop-tgn-04)\\n-------\\n## [2ฟรี1] Trylagina 12X (ไตรลาจิน่า 12X) เซรั่มคืนความอ่อนเยาว์ (30g.) 2 กระปุก ฟรี ครีมกันแดด (30g.)\\npromotion_id = \\"00005\\"\\n\\n**Original price was: ฿8,690.00.Current price is: ฿2,900.00.-67%**\\n\\nThe Sense of Youth Infinity รู้สึกถึงความอ่อนเยาว์ไม่มีที่สิ้นสุด\\nTRYLAGINA Age-Defying Collagen Serum 12X การพัฒนาที่ไม่สิ้นสุด สู่ผลิตภัณฑ์ที่ยอดเยี่ยม เพื่อให้คุณได้สัมผัสความอ่อนเยาว์ ตามแบบฉบับของ ไตรลาจีน่า ผสาน 5 สารสกัดสําคัญ ที่คิดค้นมาเพื่อแก้ปัญหาผิว\\n\\n-90% ของผู้ทดลองใช้พบว่าริ้วรอยลดลง และกระชับขึ้น\\n-87% ของผู้ทดลองใช้พบว่าผิวได้รับความชุ่มชื้นทันทีที่ใช้\\n-82% ของผู้ทดลองใช้พบว่าผิวกระจ่างใสใน 7 วัน\\n\\n*สิ่งที่คุณจะได้รับ\\n1. Trylagina Age-Defying Collagen Serum 12X ขนาด (30g.) 1 กระปุก\\n2. Trylagina Age Defense Sunscreen Serum SPF50+ PA++++ ขนาด (30g.) 1 หลอด\\n\\nhttps://www.1577shop.co.th/product/1577-shop-tgn-05\\n-------\\nTRYLAGINA Age-Defying Collagen Serum 12X การพัฒนาที่ไม่สิ้นสุด สู่ผลิตภัณฑ์ที่ยอดเยี่ยม เพื่อให้คุณได้สัมผัสความอ่อนเยาว์ ตามแบบฉบับของ ไตรลาจีน่า เซรั่มสูตรใหม่ ดีขึ้น 12 เท่า *เมื่อเทียบเท่ากับการใช้ Trylagina Intensive Collagen Mask 12 ครั้ง ช่วยฟื้นบำรุงอย่างล้ำลึก ถึง 5 มิติ  เผยผิวใหม่อ่อนเยาว์กว่าที่เคย\\n\\n-90% ของผู้ทดลองใช้พบว่าริ้วรอยลดลง และกระชับขึ้น\\n-87% ของผู้ทดลองใช้พบว่าผิวได้รับความชุ่มชื้นทันทีที่ใช้\\n-82% ของผู้ทดลองใช้พบว่าผิวกระจ่างใสใน 7 วัน\\n\\n5 สารสกัดสําคัญ ที่คิดค้นมาเพื่อแก้ปัญหาผิว\\n1. 5D Matrixcolla  ช่วยกระตุ้นการสร้าง Collagen ให้ผิวคืน “ความอ่อนเยาว์”\\n2. HyWhite® ช่วยลดเลือนฝ้า กระ จุดด่างดำ และ a-Linoleic Acid มีคุณสมบัติช่วยให้ผิวขาวกระจ่างใส เพิ่มความสม่ำเสมอให้กับสีผิว\\n3. สารสกัดยีสต์จาก ดอกโฮยาคาร์โนซ่า เติมความแข็งแรงให้กับผิว มอบความแข็งแรงให้กับผิวจากภายใน ช่วยให้ผิวสุขภาพดี เปล่งปลั่ง\\n4. PatcH2O® ช่วยให้ผิวชุ่มชื่นทันที พร้อมล็อกผิวให้ฉ่ำน้ำยาวนาน ถึง 5 วัน หรือ 120 ชั่วโมง *เมื่อใช้เป็นประจำต่อเนื่อง และ สามารถปกป้องผิวจาก มลภาวะฝุ่น PM2.5\\n5. สาหร่ายซุยเซ็นจิ จากประเทศญี่ปุ่น ซึ่งเติบโตในแหล่งน้ำที่อุดมไปด้วยแร่ธาตุจากภูเขาไฟอะโซะ (Aso) เกาะคิวชู (Kyoshu) ช่วยปลอบประโลมผิว ให้ผิวรู้สึกผ่อนคลาย\\n\\nขอแนะนําวิธีการใช้ผลิตภัณฑ์ เพื่อการฟื้นฟูผิวอย่างเต็มประสิทธิภาพ\\nSTEP 1 หลังทำความสะอาดผิวหน้า เตรียมผิวพร้อมรับการบำรุง ใช้ไม้พายตักเซรั่มลงบนหลังมือ\\nSTEP 2 แต้มเซรั่มลงบนผิวหน้า 5 จุด ได้แก่บริเวณ หน้าผาก ปลายจมูก พวงแก้มซ้าย พวงแก้มขวา และปลายคาง\\nSTEP 3 ลูบไล้เซรั่มด้วยปลายนิ้วทั้งสองข้าง เพื่อปลดปล่อยคุณค่าของสารสกัด จากนั้นจึงกดเบาๆ ลงบนผิวหน้าและลำคอ ใช้ทั้งเช้าและเย็น\\nเลขที่ได้รับจดแจ้ง : 11-1-6600001843"}'}, {'role': 'assistant', 'metadata': None, 'content': 'ณภัทรแนะนำโปรโมชั่นสุดฮิตให้ 3 รายการนี้นะคะ| โปรโมชั่นแรกเป็นไตรลาจิน่า 12X เซรั่มคืนความอ่อนเยาว์ 2 กระปุกฟรี 2 กระปุกเล็ก| ราคาพิเศษ 2,900 บาทค่ะ|\n\nโปรโมชั่นที่สองคือไมนัสทเวนตี้ครีมเกล็ดทองคำ 1 กระปุกค่ะ| ช่วยให้ผิวตึงฉ่ำไบร์ทราคาพิเศษ 1,890 บาทค่ะ|\n\nส่วนโปรโมชั่นที่สามเป็นไมนัสทเวนตี้ครีมเกล็ดทองคำเซตขายดี 2 กระปุกฟรี 2 กระปุกเล็กค่ะ| ราคาพิเศษ 2,900 บาทค่ะ| สนใจโปรโมชั่นไหนเป็นพิเศษไหมคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'เอาอันแรกครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'รับเป็นไตรลาจิน่า 12X เซรั่มคืนความอ่อนเยาว์ 2 กระปุกฟรี 2 กระปุกเล็กนะคะ| รับกี่เซตดีคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'ครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'รับกี่เซตดีคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'หนึ่งครับ', 'options': None}, {'role': 'assistant', 'content': None, 'tool_calls': [{'id': 'function-call-2224878481094213305', 'type': 'function', 'function': {'name': 'summary_order', 'arguments': '{"quantity":1,"promotion_id":"00001"}'}}]}, {'role': 'tool', 'tool_call_id': 'function-call-2224878481094213305', 'content': '{"status": "ok", "promotion_id": "00001", "unit_price": 2900, "quantity": 1, "total_price": 2900, "currency": "THB"}'}, {'role': 'assistant', 'metadata': None, 'content': 'สรุปรายการนะคะ| ไตรลาจิน่า 12X เซรั่มคืนความอ่อนเยาว์ 1 เซตราคา 2,900 บาทถูกต้องไหมคะ| การชำระเงินจะเป็นแบบเก็บเงินปลายทางอย่างเดียวนะคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'ถูกต้องครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'รบกวนขอชื่อจริงลูกค้าด้วยค่ะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'จุลจักรครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'นามสกุลอะไรคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'กาญจนาเอกครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'รบกวนขอที่อยู่สำหรับจัดส่งด้วยนะคะ| ขอเป็นจังหวัดก่อนค่ะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'กรุงเทพครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'เขตหรืออำเภออะไรคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'น้องจอกครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'แขวงหรือตำบลอะไรคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'บรรทัดชีครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'ถนนอะไรคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'สวินทวงศ์ครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'หมู่บ้านหรือชื่ออาคารอะไรคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'บ้านฟอร่าวิวครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'ซอยอะไรคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'สุเวนทวงศ์สามแปดครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'บ้านเลขที่อะไรคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'เก้าสิบสองทับสิบห้าครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'รบกวนขอรหัสไปรษณีย์ด้วยนะคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'หนึ่งศูนย์ห้าสามศูนย์', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'รบกวนขอเบอร์โทรศัพท์ด้วยนะคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'ศูนย์หกสาม เจ็ดห้าสาม หนึ่งสามเจ็ดเก้าครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'ขอทวนข้อมูลการจัดส่งอีกครั้งนะคะ| คุณจุลจักรกาญจนาเอก| ที่อยู่กรุงเทพมหานครเขตหนองจอกแขวงลำผักชีถนนสุวินทวงศ์หมู่บ้านฟอร่าวิวซอยสุวินทวงศ์ 38 บ้านเลขที่ 92/15 รหัสไปรษณีย์ 10530| เบอร์โทรศัพท์ 0637531379| ข้อมูลถูกต้องไหมคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'ไม่ถูกครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'ไม่ถูกต้องตรงส่วนไหนคะ| รบกวนแจ้งอีกครั้งได้เลยค่ะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'นามสกุลกาญจนะเอกิงครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'ขอโทษด้วยนะคะ| ขอทวนนามสกุลเป็นกาญจนะเอกินนะคะ| ส่วนที่อยู่เป็นกรุงเทพมหานครเขตหนองจอกแขวงลำผักชีถนนสุวินทวงศ์หมู่บ้านฟอร่าวิวซอยสุวินทวงศ์ 38 บ้านเลขที่ 92/15 รหัสไปรษณีย์ 10530| เบอร์โทรศัพท์ 0637531379| ข้อมูลถูกต้องไหมคะ|', 'options': None}, {'role': 'user', 'metadata': None, 'content': 'ไม่ใช่ครับ', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': 'ไม่ถูกต้องตรงส่วนไหนคะ| รบกวนแจ้งอีกครั้งได้เลยค่ะ|', 'options': None}, {'role': 'user', 'content': 'นามสกุลกาญจนาเอกินครับ'}]

                                                                              
    )
    print(result)
    result = purchase_product(
        promotion_id="00001",
        quantity=1,
        name="สมชาย",
        surname="ใจดี",
        address="123 ถนนสุขุมวิท กรุงเทพฯ 10110",
        tel="0812345678"
    )
    print(result)