LINE (ปลั๊กอิน)¶
LINE เชื่อมต่อกับ OpenClaw ผ่าน LINE Messaging API LINE เชื่อมต่อกับ OpenClaw ผ่าน LINE Messaging API ปลั๊กอินทำงานเป็นตัวรับ webhook บน Gateway และใช้ channel access token และ channel secret ของคุณเพื่อการยืนยันตัวตน
สถานะ: รองรับผ่านปลั๊กอิน สถานะ: รองรับผ่านปลั๊กอิน รองรับข้อความส่วนตัว แชทกลุ่ม สื่อ ตำแหน่ง Flex messages, template messages และ quick replies ไม่รองรับ reactions และ threads ไม่รองรับรีแอ็กชันและเธรด
ต้องใช้ปลั๊กอิน¶
ติดตั้งปลั๊กอิน LINE:
openclaw plugins install @openclaw/line
เช็กเอาต์ในเครื่อง (เมื่อรันจาก git repo):
openclaw plugins install ./extensions/line
การตั้งค่า¶
- สร้างบัญชี LINE Developers และเปิด Console: https://developers.line.biz/console/
- สร้าง (หรือเลือก) Provider และเพิ่มช่องทาง Messaging API
- คัดลอก Channel access token และ Channel secret จากการตั้งค่าช่องทาง
- เปิดใช้งาน Use webhook ในการตั้งค่า Messaging API
- ตั้งค่า webhook URL ไปยังเอ็นด์พอยต์ของ Gateway ของคุณ (ต้องเป็น HTTPS):
https://gateway-host/line/webhook
Gateway จะตอบสนองการตรวจสอบ webhook ของ LINE (GET) และอีเวนต์ขาเข้า (POST)
หากต้องการพาธแบบกำหนดเอง ให้ตั้งค่า channels.line.webhookPath หรือ
channels.line.accounts.<id>
หากต้องการพาธแบบกำหนดเอง ให้ตั้งค่าchannels.line.webhookPathหรือchannels.line.accounts..webhookPath และอัปเดต URL ให้สอดคล้องกัน
การกำหนดค่า¶
คอนฟิกขั้นต่ำ:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}
ตัวแปรสภาพแวดล้อม (บัญชีเริ่มต้นเท่านั้น):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
ไฟล์โทเคน/ซีเคร็ต:
{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}
หลายบัญชี:
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}
การควบคุมการเข้าถึง¶
ข้อความโดยตรงจะจับคู่เป็นค่าเริ่มต้น ข้อความส่วนตัวจะตั้งค่าเป็นการจับคู่โดยค่าเริ่มต้น ผู้ส่งที่ไม่รู้จักจะได้รับโค้ดจับคู่ และข้อความของพวกเขาจะถูกละเว้นจนกว่าจะได้รับการอนุมัติ
openclaw pairing list line
openclaw pairing approve line <CODE>
รายการอนุญาตและนโยบาย:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: รายการ LINE user ID ที่อนุญาตสำหรับ DMschannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: รายการ LINE user ID ที่อนุญาตสำหรับกลุ่ม- การกำหนดค่าแทนรายกลุ่ม:
channels.line.groups.<groupId>.allowFrom
LINE ID แยกแยะตัวพิมพ์เล็ก-ใหญ่ รูปแบบ ID ที่ถูกต้องเช่น: ID ที่ถูกต้องมีลักษณะดังนี้:
- ผู้ใช้:
U+ อักขระฐานสิบหก 32 ตัว - กลุ่ม:
C+ อักขระฐานสิบหก 32 ตัว - ห้อง:
R+ อักขระฐานสิบหก 32 ตัว
พฤติกรรมของข้อความ¶
- ข้อความจะถูกแบ่งเป็นช่วงละ 5000 อักขระ
- การจัดรูปแบบ Markdown จะถูกลบออก; บล็อกโค้ดและตารางจะถูกแปลงเป็น Flex cards เมื่อเป็นไปได้
- การตอบกลับแบบสตรีมจะถูกบัฟเฟอร์; LINE จะได้รับข้อมูลเป็นช่วงเต็มพร้อมแอนิเมชัน การโหลดระหว่างที่เอเจนต์ทำงาน
- การดาวน์โหลดสื่อถูกจำกัดโดย
channels.line.mediaMaxMb(ค่าเริ่มต้น 10)
ข้อมูลช่องทาง (ข้อความแบบ rich)¶
ใช้ channelData.line เพื่อส่ง quick replies ตำแหน่ง Flex cards หรือ template
messages
{
text: "Here you go",
channelData: {
line: {
quickReplies: ["Status", "Help"],
location: {
title: "Office",
address: "123 Main St",
latitude: 35.681236,
longitude: 139.767125,
},
flexMessage: {
altText: "Status card",
contents: {
/* Flex payload */
},
},
templateMessage: {
type: "confirm",
text: "Proceed?",
confirmLabel: "Yes",
confirmData: "yes",
cancelLabel: "No",
cancelData: "no",
},
},
},
}
ปลั๊กอิน LINE ยังมาพร้อมคำสั่ง /card สำหรับพรีเซ็ต Flex message:
/card info "Welcome" "Thanks for joining!"
การแก้ไขปัญหา¶
- การตรวจสอบ webhook ล้มเหลว: ตรวจสอบให้แน่ใจว่า webhook URL เป็น HTTPS และ
channelSecretตรงกับใน LINE console - ไม่มีอีเวนต์ขาเข้า: ยืนยันว่า webhook path ตรงกับ
channels.line.webhookPathและ Gateway สามารถเข้าถึงได้จาก LINE - ข้อผิดพลาดในการดาวน์โหลดสื่อ: เพิ่มค่า
channels.line.mediaMaxMbหากสื่อมีขนาดเกิน ขีดจำกัดเริ่มต้น