Ana içeriğe atla

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Kanal giriş API’si

Kanal girişi, gelen kanal olayları için deneysel erişim denetimi sınırıdır. Alma yolları için openclaw/plugin-sdk/channel-ingress-runtime kullanın. Eski openclaw/plugin-sdk/channel-ingress alt yolu, üçüncü taraf pluginler için kullanımdan kaldırılmış bir uyumluluk cephesi olarak dışa aktarılmaya devam eder. Pluginler platform bilgilerine ve yan etkilere sahiptir. Çekirdek genel politikaya sahiptir: DM/grup izin listeleri, eşleştirme deposu DM girdileri, rota geçitleri, komut geçitleri, olay kimlik doğrulaması, bahsetmeyle etkinleştirme, redakte edilmiş tanılamalar ve kabul.

Çalışma Zamanı Çözümleyicisi

import {
  defineStableChannelIngressIdentity,
  resolveChannelMessageIngress,
} from "openclaw/plugin-sdk/channel-ingress-runtime";

const identity = defineStableChannelIngressIdentity({
  key: "platform-user-id",
  normalize: normalizePlatformUserId,
  sensitivity: "pii",
});

const result = await resolveChannelMessageIngress({
  channelId: "my-channel",
  accountId,
  identity,
  subject: { stableId: platformUserId },
  conversation: { kind: isGroup ? "group" : "direct", id: conversationId },
  event: { kind: "message", authMode: "inbound", mayPair: !isGroup },
  policy: {
    dmPolicy: config.dmPolicy,
    groupPolicy: config.groupPolicy,
    groupAllowFromFallbackToAllowFrom: true,
  },
  allowFrom: config.allowFrom,
  groupAllowFrom: config.groupAllowFrom,
  accessGroups: cfg.accessGroups,
  route,
  readStoreAllowFrom,
  command: hasControlCommand ? { allowTextCommands: true, hasControlCommand } : undefined,
});
Etkili izin listelerini, komut sahiplerini veya komut gruplarını önceden hesaplamayın. Çözümleyici bunları ham izin listelerinden, depo geri çağrılarından, rota tanımlayıcılarından, erişim gruplarından, politikadan ve konuşma türünden türetir.

Sonuç

Paketlenmiş pluginler modern projeksiyonları doğrudan tüketmelidir:
  • ingress: sıralı geçit kararı ve kabul
  • senderAccess: yalnızca gönderen/konuşma yetkilendirmesi
  • routeAccess: rota ve rota göndereni projeksiyonu
  • commandAccess: komut yetkilendirmesi; hiçbir komut geçidi çalışmadığında false
  • activationAccess: bahsetme/etkinleştirme sonucu
Olay yetkilendirmesi, sıralı ingress.graph ve belirleyici ingress.reasonCode üzerinde kullanılabilir kalır; ayrı bir olay projeksiyonu yayımlanmaz. Kullanımdan kaldırılmış üçüncü taraf SDK yardımcıları eski şekilleri dahili olarak yeniden oluşturabilir. Yeni paketlenmiş alma yolları modern sonuçları yerel DTO’lara geri çevirmemelidir.

Erişim Grupları

accessGroup:<name> girdileri redakte edilmiş kalır. Çekirdek statik message.senders gruplarını kendisi çözer ve resolveAccessGroupMembership çağrısını yalnızca platform araması gerektiren dinamik gruplar için yapar. Eksik, desteklenmeyen ve başarısız gruplar kapalı şekilde başarısız olur.

Olay Modları

authModeAnlamı
inboundnormal gelen gönderen geçitleri
commandgeri çağrılar veya kapsamlı düğmeler için komut geçitleri
origin-subjectaktör özgün mesaj öznesiyle eşleşmelidir
route-onlyrota kapsamlı güvenilen olaylar için yalnızca rota geçitleri
noneplugin sahibi dahili olaylar paylaşılan kimlik doğrulamasını atlar
Tepkiler, düğmeler, geri çağrılar ve yerel komutlar için mayPair: false kullanın.

Rotalar Ve Etkinleştirme

Oda, konu, guild, iş parçacığı veya iç içe rota politikası için rota tanımlayıcıları kullanın:
route: {
  id: "room",
  allowed: roomAllowed,
  enabled: roomEnabled,
  senderPolicy: "replace",
  senderAllowFrom: roomAllowFrom,
  blockReason: "room_sender_not_allowlisted",
}
Bir pluginin birden çok isteğe bağlı rota tanımlayıcısı olduğunda channelIngressRoutes(...) kullanın; rota bilgilerini genel tutarken devre dışı dalları filtreler ve her tanımlayıcının precedence değerine göre sıralar. Bahsetme geçidi bir etkinleştirme geçididir. Bahsetme kaçırılırsa admission: "skip" döner, böylece dönüş çekirdeği yalnızca gözlem amaçlı bir dönüşü işlemez. Çoğu kanal, etkinleştirmeyi gönderen ve komut geçitlerinden sonra bırakmalıdır. Gönderen izin listesi gürültüsünden önce bahsedilmeyen trafiği susturması gereken genel sohbet yüzeyleri, metin komutu atlaması devre dışı olduğunda activation.order: "before-sender" seçeneğini kullanabilir. Bot iş parçacıklarındaki yanıtlar gibi örtük etkinleştirmeye sahip kanallar activation.allowedImplicitMentionKinds geçebilir; yansıtılan activationAccess.shouldBypassMention daha sonra komut veya örtük etkinleştirmenin açık bir bahsetmeyi ne zaman atladığını bildirir.

Redaksiyon

Ham gönderen değerleri ve ham izin listesi girdileri yalnızca çözümleyici girdisidir. Çözümlenmiş durumda, kararlarda, tanılamalarda, anlık görüntülerde veya uyumluluk bilgilerinde görünmemelidir. Opak özne kimlikleri, girdi kimlikleri, rota kimlikleri ve tanılama kimlikleri kullanın.

Doğrulama

pnpm test src/channels/message-access/message-access.test.ts src/plugin-sdk/channel-ingress-runtime.test.ts
pnpm plugin-sdk:api:check