สร้าง Campaign
POST
https://api.voice-agent.gowajee.ai/api/campaign/createสร้าง campaign ที่เป็น DRAFT พร้อม recipient ทั้งหมด ขั้นนี้ยังไม่มี call ออกไป ขั้นต่อไปคือ
เริ่ม campaign
| Field | Type | บังคับ | คำอธิบาย |
|---|---|---|---|
agentId |
string | ✅ | agent ที่ใช้โทร ดู ID ได้จาก ดูรายการ Agent |
name |
string | ✅ | ชื่อ campaign ต้องไม่ซ้ำกับ campaign อื่นในองค์กร |
recipients |
object[] | ✅ | recipient ที่จะโทรหา ดูรายละเอียดในตารางถัดไป |
ถ้าส่ง field อื่นมาด้วย (เช่น maxAttempts) จะได้ 400 กลับไป การตั้งเวลาและ retry ให้ตั้งตอนเรียก
/schedule
recipients[]
หัวข้อที่มีชื่อว่า “recipients[]”| Field | Type | บังคับ | คำอธิบาย |
|---|---|---|---|
tel |
string | ✅ | เบอร์โทร ส่งเป็น string เช่น "0812345678" และต้องไม่ซ้ำกันใน request เดียวกัน |
customerName |
string | ชื่อลูกค้า แสดงใน dashboard และในผลการโทร | |
agentParams |
object | แล้วแต่ agent | ข้อมูลที่ agent ใช้ระหว่างคุยกับลูกค้า ต้องตรงตาม paramsSchema ของ agent คือต้องมีทุก key ที่เป็น required และ type ถูกต้อง ส่ง key อื่นเพิ่มได้ ระบบจะเก็บไว้ด้วย |
Request
หัวข้อที่มีชื่อว่า “Request”curl -X POST "https://api.voice-agent.gowajee.ai/api/campaign/create" \ -H "X-API-Key: $GOWAJEE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "agentId": "33ea7a25-03b2-4614-a004-fa3bf9984bd1", "name": "October payment reminder", "recipients": [ { "tel": "0812345678", "customerName": "Somchai", "agentParams": { "customer_name": "Somchai", "amount_due": 1500, "is_vip": true } }, { "tel": "0898765432", "customerName": "Suda", "agentParams": { "customer_name": "Suda", "amount_due": 3200 } } ] }'const res = await fetch('https://api.voice-agent.gowajee.ai/api/campaign/create', { method: 'POST', headers: { 'X-API-Key': process.env.GOWAJEE_API_KEY, 'Content-Type': 'application/json' }, body: JSON.stringify({ agentId: '33ea7a25-03b2-4614-a004-fa3bf9984bd1', name: 'October payment reminder', recipients: [ { tel: '0812345678', customerName: 'Somchai', agentParams: { customer_name: 'Somchai', amount_due: 1500 } }, ], }),});const body = await res.json();if (!res.ok) throw new Error(`${body.code}: ${body.errors.join('; ')}`);const campaignId = body.data[0].campaignId;res = requests.post( "https://api.voice-agent.gowajee.ai/api/campaign/create", headers={"X-API-Key": os.environ["GOWAJEE_API_KEY"]}, json={ "agentId": "33ea7a25-03b2-4614-a004-fa3bf9984bd1", "name": "October payment reminder", "recipients": [ {"tel": "0812345678", "customerName": "Somchai", "agentParams": {"customer_name": "Somchai", "amount_due": 1500}}, ], }, timeout=60,)body = res.json()res.raise_for_status()campaign_id = body["data"][0]["campaignId"]Response
หัวข้อที่มีชื่อว่า “Response”{ "success": true, "message": "Campaign created successfully", "data": [ { "tel": "0812345678", "customerName": "Somchai", "agentParams": { "customer_name": "Somchai", "amount_due": 1500, "is_vip": true }, "campaignId": "eac2489c-672c-455e-ab8c-4e0ecd18d7dc", "organizationId": "8ee40f50-58de-4ae7-a55b-6bc83291b4be" }, { "tel": "0898765432", "customerName": "Suda", "agentParams": { "customer_name": "Suda", "amount_due": 3200 }, "campaignId": "eac2489c-672c-455e-ab8c-4e0ecd18d7dc", "organizationId": "8ee40f50-58de-4ae7-a55b-6bc83291b4be" } ]}{ "success": false, "statusCode": 400, "code": "RECIPIENT_VALIDATION_FAILED", "message": "Recipient validation failed", "errors": [ "Row index 1: Duplicate phone number 0812345678 in the upload", "Row 2: validation failed: Missing required field: amount_due", "Row 3: validation failed: Field amount_due must be a number, got string" ], "errorIndexes": [1]}{ "success": false, "statusCode": 400, "code": "VALIDATION_FAILED", "message": "property maxAttempts should not exist", "errors": ["property maxAttempts should not exist"]}{ "success": false, "statusCode": 404, "code": "AGENT_NOT_FOUND", "message": "Agent not found", "errors": ["Agent not found"]}{ "success": false, "statusCode": 409, "code": "CAMPAIGN_NAME_TAKEN", "message": "Campaign name already exists", "errors": ["Campaign name already exists"]}| Field | คำอธิบาย |
|---|---|
data[] |
recipient ที่สร้างแล้ว คนละหนึ่งรายการ เรียงตามลำดับที่ส่งมา |
data[].campaignId |
ID ของ campaign ที่เพิ่งสร้าง ทุกรายการมีค่าเดียวกัน เก็บไว้ใช้ขั้นต่อไป |
body ใช้รูปแบบ error ปกติ ระบบตรวจตามลำดับ เริ่มจากรูปแบบ body แล้วตามด้วยชื่อ campaign, agent และ recipient
| Status | code |
message |
วิธีแก้ |
|---|---|---|---|
400 |
VALIDATION_FAILED |
property <x> should not exist |
ลบ field ที่ไม่มีในตารางด้านบนออก |
400 |
VALIDATION_FAILED |
เช่น name should not be empty, recipients must be an array |
ส่ง field ที่บังคับให้ครบ และ type ต้องถูกต้อง ถ้ามีหลายปัญหา message จะเป็น Validation failed และ errors จะแสดงทุกปัญหา |
400 |
INVALID_ID |
An ID in the request is not a valid UUID |
agentId ไม่ใช่ UUID ให้ copy มาจาก ดูรายการ Agent |
409 |
CAMPAIGN_NAME_TAKEN |
Campaign name already exists |
เปลี่ยน name เป็นชื่ออื่น |
404 |
AGENT_NOT_FOUND |
Agent not found |
ตรวจ agentId อีกครั้ง agent ขององค์กรอื่นก็จะได้ “not found” เช่นกัน |
400 |
RECIPIENT_VALIDATION_FAILED |
Recipient validation failed |
แก้แถวที่ระบุไว้ใน errors ส่วน errorIndexes เป็น array ของเลขแถว |
401 |
API_KEY_REQUIRED / INVALID_API_KEY |
ดู error ของการยืนยันตัวตน |