HTTP API
HTTP API ของ LINE Agent SDK สำหรับโปรแกรมที่ไม่ใช้ MCP สร้างการเชื่อมต่อ LINE ดูว่าแต่ละขั้นเป็นตาใคร ส่งข้อความเมื่อเผยแพร่ เครื่องมือ AI ไม่แตะข้อมูลรับรอง
URL หลัก#
API อยู่ใต้บริการที่คุณรันเอง และทุกพาธขึ้นต้นด้วย /api:
https://line-oa-mcp--<องค์กร>.hosting.agentlab.run/apiวิธีรันดูที่รัน LINE OA MCP บน Agent Lab
ใช้ MCP ง่ายกว่า
เครื่องมือ AI ที่รองรับ MCP (Claude Code, Codex, Cursor) ใช้ LINE OA MCP ได้เลย เครื่องมือทำงานเหมือน API นี้ และบริการที่รันอยู่ยังให้คำอธิบายสำหรับ AI ที่ /agent.md ด้วย
การยืนยันตัวตน#
ทุกคำขอไปที่ /api ต้องมี Agent token ลงชื่อเข้าใช้แผงควบคุมด้วย Google แล้วสร้างในหน้า Agent token (/tokens):
Authorization: Bearer <Agent token>ถ้าไม่มี ไม่ถูกต้อง หรือถูกเพิกถอนแล้วจะได้ 401 โทเค็นแสดงเพียงครั้งเดียว เลิกใช้เมื่อไรให้เพิกถอนในหน้าเดียวกัน
อย่าวางโทเค็นในแชต
ให้เจ้าของใส่โทเค็นในตัวแปรสภาพแวดล้อมของเครื่องมือ AI (เช่น LINE_AGENT_SDK_TOKEN) แทนการวางในบทสนทนา Channel Secret ก็กรอกในหน้าของบริการเท่านั้น
1. สร้างการเชื่อมต่อ#
| เมธอดและพาธ | ใช้ทำอะไร |
|---|---|
POST /api/connections | สร้างการเชื่อมต่อกับบัญชีทางการ LINE ที่มีอยู่ คืนค่าการเชื่อมต่อพร้อม setupUrl ให้ส่งต่อให้คน |
GET /api/connections | แสดงการเชื่อมต่อทั้งหมด |
GET /api/connections/{id} | อ่านสถานะปัจจุบันของการเชื่อมต่อ ทุกครั้งที่อ่านจะตรวจด้วยว่าคนทำขั้นตอนฝั่ง LINE เสร็จแล้วหรือยัง |
POST /api/connections
Content-Type: application/json
{ "workspace": "acme", "label": "บัญชีซัพพอร์ต" }ทั้งสองฟิลด์ไม่บังคับ ส่ง setupUrl ที่ได้ให้คน Channel ID และ Channel Secret กรอกในหน้านั้นเท่านั้น
2. รอให้แต่ละขั้นเสร็จ#
nextStep ของการเชื่อมต่อบอกว่าตอนนี้เป็นตาของใคร ต้องทำอะไร และนับว่าเสร็จเมื่อไร:
{
"id": "conn_9f3a1c2b4d5e",
"state": "webhook_active",
"live": false,
"nextStep": {
"key": "webhook_active",
"title": "打開「Use webhook」",
"actor": "human",
"status": "current",
"doneWhen": "LINE 回報 webhook active = true(每 2 秒自動偵測,不用回來按)",
"how": "LINE Developers › Messaging API › Webhook settings › Use webhook 打開。",
"url": "https://developers.line.biz/console/"
}
}- เมื่อ
actorเป็นhumanให้บอกtitle,howและurlแก่คน แล้วอ่านการเชื่อมต่อต่อไป ขั้นนั้นจะเสร็จเอง ไม่ต้องถามว่าเสร็จหรือยัง - เมื่อ
actorเป็นopsผู้ดูแลบริการกำลังดำเนินการ ให้บอกคนว่ากำลังดำเนินการ - เมื่อ
actorเป็นagentบริการทำเอง - เมื่อ
statusเป็นerrorเหตุผลอยู่ในnote
แนะนำให้อ่านทุก 2 ถึง 5 วินาที เมื่อ live เป็น true แสดงว่าข้อความ LINE แรกส่งถึงมือถือของคนแล้ว ชื่อและคำอธิบายของขั้นตอนเป็นภาษาจีนตัวเต็ม
ขั้นตอน
key | ใครทำ | นับว่าเสร็จเมื่อ |
|---|---|---|
credentials | เจ้าของ | ออก token ด้วย Channel ID และ Channel Secret ได้ |
health | อัตโนมัติ | อ่านข้อมูลบัญชี โหมดแชต webhook โควตา และจำนวนเพื่อนแล้ว โดยไม่เปลี่ยนการตั้งค่า |
mode | เจ้าของ | เลือกส่งอย่างเดียว ส่งต่อ หรือรับช่วงตรง ในหน้าของบริการ |
webhook_set | อัตโนมัติ | ตั้ง URL ของ webhook เป็นบริการนี้และอ่านกลับมายืนยันแล้ว |
webhook_active | เจ้าของ | เปิด "Use webhook" ใน LINE Developers และตรวจจับได้อัตโนมัติ |
auto_reply | เจ้าของ | ปิดข้อความตอบกลับอัตโนมัติใน OA Manager และยืนยันในหน้าของบริการ |
pair | เจ้าของ | เพิ่มเพื่อนแล้วส่ง pairingCode |
first_message | อัตโนมัติ | การตอบกลับข้อความจับคู่ได้รับการยอมรับ |
ถ้าเลือกส่งอย่างเดียว webhook_set, webhook_active และ auto_reply จะเป็น skipped และ pair จะเปลี่ยนเป็นการวาง userId สำหรับทดสอบ ถ้าเลือกส่งต่อ จะข้าม auto_reply และการตั้งค่าของระบบเดิมคงเดิม
3. ส่งข้อความ#
| เมธอดและพาธ | ใช้ทำอะไร |
|---|---|
POST /api/connections/{id}/messages | พุชข้อความถึงผู้ทดสอบที่จับคู่แล้ว |
POST /api/connections/conn_9f3a1c2b4d5e/messages
Content-Type: application/json
{ "text": "คำสั่งซื้อของคุณจัดส่งแล้ว" }{ "ok": true, "to": "paired test user" }ถ้าการเชื่อมต่อยังไม่เผยแพร่ จะได้ 409 พร้อม nextStep
การพุชใช้โควตา
ข้อความพุชนับรวมโควตารายเดือนของบัญชีทางการ แต่การตอบกลับไม่นับ เมื่อผู้ทดสอบส่งข้อความถึงบัญชี Agent จะตอบด้วยการตอบกลับ และเปลี่ยนเป็นพุชก็ต่อเมื่อ reply token หมดอายุ
แซนด์บ็อกซ์#
ถ้ายังไม่มีบัญชีทางการ ลองด้วยแซนด์บ็อกซ์ที่ผู้ดูแลเตรียมไว้:
| เมธอดและพาธ | ใช้ทำอะไร |
|---|---|
POST /api/sandbox | รับรหัส join คืนค่า joinText (เช่น join blue-fox-42) และ account.addFriendUrl ของแซนด์บ็อกซ์ |
GET /api/sandbox/{id} | อ่านสถานะแซนด์บ็อกซ์ ถ้า live เป็น true แสดงว่าข้อความแรกส่งถึงแล้ว |
ส่ง addFriendUrl และ joinText ให้คน เมื่อเพิ่มเพื่อนและส่งบรรทัดนั้น มือถือจะผูกกับเวิร์กสเปซ แซนด์บ็อกซ์ส่งได้เฉพาะมือถือที่ join แล้ว และความเป็นเพื่อนไม่ย้ายไปบัญชีจริง
ออบเจ็กต์การเชื่อมต่อ#
| ฟิลด์ | ความหมาย |
|---|---|
id | ID ของการเชื่อมต่อ ใช้ในการเรียกครั้งต่อไปทั้งหมด |
state | key ของขั้นปัจจุบัน หรือ live เมื่อทุกอย่างเสร็จ |
live | เป็น true เมื่อข้อความแรกส่งถึงแล้ว |
mode | push_only, relay, direct หรือ null ถ้ายังไม่เลือก |
account | basicId, displayName และ addFriendUrl ของบัญชีทางการ เป็น null จนกว่าจะตรวจสุขภาพเสร็จ |
pairingCode | รหัสจับคู่ที่ส่งจากมือถือ เช่น AL-7Q4K |
tester | userId ของผู้ทดสอบที่จับคู่แล้ว |
webhookUrl | URL ของ webhook สำหรับการเชื่อมต่อนี้ บริการลงทะเบียนกับ LINE เอง |
setupUrl | หน้าแผงควบคุมที่ส่งให้คน |
steps | ทุกขั้นตอน แต่ละขั้นมี key, title, actor, status, doneWhen และอาจมี how, url, note |
nextStep | ขั้นที่ต้องทำตอนนี้ เป็น null เมื่อทุกอย่างเสร็จ |
ข้อผิดพลาด#
| สถานะ | ความหมาย | ต้องทำอย่างไร |
|---|---|---|
400 | คำขอไม่ถูกต้อง เช่น text ว่าง เหตุผลอยู่ใน error | แก้แล้วส่งใหม่ |
401 | ไม่มีโทเค็น โทเค็นผิด หรือถูกเพิกถอนแล้ว | ตรวจ Authorization: Bearer <Agent token> |
404 | ไม่พบการเชื่อมต่อหรือแซนด์บ็อกซ์นี้ | ตรวจ id |
409 | การเชื่อมต่อยังไม่เผยแพร่ จึงส่งไม่ได้ | ทำต่อตาม nextStep ที่ได้รับ |
Webhook#
POST /hooks/line/{id} สำหรับให้แพลตฟอร์ม LINE เรียก ไม่ต้องใช้ token แต่ทุกคำขอต้องผ่านการตรวจ x-line-signature ไม่เช่นนั้นจะได้ 401 บริการลงทะเบียน URL นี้กับ LINE เองในขั้น webhook_set ไม่ต้องวางด้วยมือ