LINE (eklenti)¶
LINE, LINE Messaging API üzerinden OpenClaw’a bağlanır. Eklenti, Gateway üzerinde bir webhook alıcı olarak çalışır ve kimlik doğrulama için kanal erişim belirtecinizi + kanal gizlinizi kullanır.
Durum: eklenti aracılığıyla desteklenir. Doğrudan mesajlar, grup sohbetleri, medya, konumlar, Flex mesajları, şablon mesajlar ve hızlı yanıtlar desteklenir. Tepkiler ve konu başlıkları desteklenmez.
Gerekli eklenti¶
LINE eklentisini yükleyin:
openclaw plugins install @openclaw/line
Yerel checkout (bir git deposundan çalıştırırken):
openclaw plugins install ./extensions/line
Kurulum¶
- Bir LINE Developers hesabı oluşturun ve Konsolu açın: https://developers.line.biz/console/
- Bir Sağlayıcı oluşturun (veya seçin) ve bir Messaging API kanalı ekleyin.
- Kanal ayarlarından Channel access token ve Channel secret değerlerini kopyalayın.
- Messaging API ayarlarında Use webhook seçeneğini etkinleştirin.
- Webhook URL’sini gateway uç noktanıza ayarlayın (HTTPS gereklidir):
https://gateway-host/line/webhook
Gateway, LINE’ın webhook doğrulamasına (GET) ve gelen olaylara (POST) yanıt verir.
Özel bir yol gerekiyorsa channels.line.webhookPath veya
channels.line.accounts.<id>.webhookPath ayarlayın ve URL’yi buna göre güncelleyin.
Yapılandırma¶
Asgari yapılandırma:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}
Ortam değişkenleri (yalnızca varsayılan hesap için):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Belirteç/gizli dosyaları:
{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}
Birden fazla hesap:
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}
Erişim denetimi¶
Doğrudan mesajlar varsayılan olarak eşleştirmeye tabidir. Bilinmeyen gönderenlere bir eşleştirme kodu verilir ve onaylanana kadar mesajları yok sayılır.
openclaw pairing list line
openclaw pairing approve line <CODE>
İzin listeleri ve politikalar:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: DM’ler için izin listesine alınmış LINE kullanıcı kimliklerichannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: gruplar için izin listesine alınmış LINE kullanıcı kimlikleri- Grup başına geçersiz kılmalar:
channels.line.groups.<groupId>.allowFrom
LINE kimlikleri büyük/küçük harfe duyarlıdır. Geçerli kimlikler şu şekildedir:
- Kullanıcı:
U+ 32 hex karakter - Grup:
C+ 32 hex karakter - Oda:
R+ 32 hex karakter
Mesaj davranışı¶
- Metin 5000 karakterde parçalara bölünür.
- Markdown biçimlendirmesi kaldırılır; mümkün olduğunda kod blokları ve tablolar Flex kartlarına dönüştürülür.
- Akışlı yanıtlar arabelleğe alınır; ajan çalışırken LINE tam parçaları bir yükleme animasyonu ile alır.
- Medya indirmeleri
channels.line.mediaMaxMbile sınırlandırılır (varsayılan 10).
Kanal verileri (zengin mesajlar)¶
Hızlı yanıtlar, konumlar, Flex kartları veya şablon
mesajlar göndermek için channelData.line kullanın.
{
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 eklentisi ayrıca Flex mesaj ön ayarları için bir /card komutu da içerir:
/card info "Welcome" "Thanks for joining!"
Sorun Giderme¶
- Webhook doğrulaması başarısız: webhook URL’sinin HTTPS olduğundan ve
channelSecretdeğerinin LINE konsoluyla eşleştiğinden emin olun. - Gelen olay yok: webhook yolunun
channels.line.webhookPathile eşleştiğini ve gateway’in LINE tarafından erişilebilir olduğunu doğrulayın. - Medya indirme hataları: medya varsayılan sınırı aşıyorsa
channels.line.mediaMaxMbdeğerini artırın.