İleti sunumu, zengin giden sohbet arayüzü için OpenClaw’ın paylaşılan sözleşmesidir. Aracıların, CLI komutlarının, onay akışlarının ve Plugin’lerin ileti niyetini bir kez açıklamasını sağlar; her kanal Plugin’i ise bunu yapabildiği en iyi yerel biçimde işler. Taşınabilir ileti arayüzü için sunumu kullanın:Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- metin bölümleri
- küçük bağlam/alt bilgi metni
- ayırıcılar
- düğmeler
- seçim menüleri
- kart başlığı ve tonu
components, Slack blocks, Telegram
buttons, Teams card veya Feishu card gibi yeni sağlayıcıya özgü yerel
alanlar eklemeyin. Bunlar kanal Plugin’inin sahip olduğu işleyici çıktılarıdır.
Sözleşme
Plugin yazarları herkese açık sözleşmeyi şuradan içe aktarır:value, kanal tıklanabilir denetimleri desteklediğinde kanalın mevcut etkileşim yolu üzerinden geri yönlendirilen bir uygulama eylemi değeridir.urlbir bağlantı düğmesidir.valueolmadan da var olabilir.labelzorunludur ve metin yedeğinde de kullanılır.styletavsiye niteliğindedir. İşleyiciler desteklenmeyen stilleri güvenli bir varsayılana eşlemeli, gönderimi başarısız kılmamalıdır.
options[].value, seçilen uygulama değeridir.placeholdertavsiye niteliğindedir ve yerel seçim desteği olmayan kanallar tarafından yok sayılabilir.- Bir kanal seçimleri desteklemiyorsa, yedek metin etiketleri listeler.
Üretici örnekleri
Basit kart:İşleyici sözleşmesi
Kanal Plugin’leri giden bağdaştırıcılarında işleme desteğini bildirir:Çekirdek işleme akışı
BirReplyPayload veya ileti eylemi presentation içerdiğinde çekirdek:
- Sunum yükünü normalleştirir.
- Hedef kanalın giden bağdaştırıcısını çözer.
presentationCapabilitiesdeğerini okur.- Bağdaştırıcı yükü işleyebildiğinde
renderPresentationçağrısı yapar. - Bağdaştırıcı yoksa veya işleyemiyorsa korumacı metne geri döner.
- Ortaya çıkan yükü normal kanal teslimat yolu üzerinden gönderir.
- İlk başarılı gönderilen iletiden sonra
delivery.pingibi teslimat meta verilerini uygular.
Bozulma kuralları
Sunum, sınırlı kanallarda gönderim için güvenli olmalıdır. Yedek metin şunları içerir:- ilk satır olarak
title - normal paragraflar olarak
textblokları - kompakt bağlam satırları olarak
contextblokları - görsel ayırıcı olarak
dividerblokları - bağlantı düğmeleri için URL’ler dahil düğme etiketleri
- seçim seçeneği etiketleri
- Satır içi düğmeleri devre dışı olan Telegram, metin yedeği gönderir.
- Seçim desteği olmayan bir kanal, seçim seçeneklerini metin olarak listeler.
- Yalnızca URL içeren bir düğme, yerel bağlantı düğmesine ya da yedek URL satırına dönüşür.
- İsteğe bağlı sabitleme hataları teslim edilen iletiyi başarısız kılmaz.
delivery.pin.required: true değeridir; sabitleme zorunlu olarak
istenirse ve kanal gönderilen iletiyi sabitleyemezse, teslimat başarısızlık
bildirir.
Sağlayıcı eşlemesi
Geçerli paketli işleyiciler:| Kanal | Yerel işleme hedefi | Notlar |
|---|---|---|
| Discord | Bileşenler ve bileşen kapsayıcıları | Mevcut sağlayıcıya özgü yerel yük üreticileri için eski channelData.discord.components değerini korur, ancak yeni paylaşılan gönderimler presentation kullanmalıdır. |
| Slack | Block Kit | Mevcut sağlayıcıya özgü yerel yük üreticileri için eski channelData.slack.blocks değerini korur, ancak yeni paylaşılan gönderimler presentation kullanmalıdır. |
| Telegram | Metin ve satır içi klavyeler | Düğmeler/seçimler hedef yüzey için satır içi düğme yeteneği gerektirir; aksi halde metin yedeği kullanılır. |
| Mattermost | Metin ve etkileşimli özellikler | Diğer bloklar metne bozulur. |
| Microsoft Teams | Adaptive Cards | Her ikisi de sağlandığında düz message metni karta dahil edilir. |
| Feishu | Etkileşimli kartlar | Kart başlığı title kullanabilir; gövde bu başlığı yinelemekten kaçınır. |
| Düz kanallar | Metin yedeği | İşleyicisi olmayan kanallar da okunabilir çıktı alır. |
Presentation ve InteractiveReply
InteractiveReply, onay ve etkileşim yardımcıları tarafından kullanılan eski
dahili alt kümedir. Şunları destekler:
- metin
- düğmeler
- seçimler
MessagePresentation, kurallı paylaşılan gönderim sözleşmesidir. Şunları ekler:
- başlık
- ton
- bağlam
- ayırıcı
- yalnızca URL içeren düğmeler
ReplyPayload.deliveryüzerinden genel teslimat meta verileri
openclaw/plugin-sdk/interactive-runtime yardımcılarını
kullanın:
MessagePresentation kabul etmeli veya üretmelidir.
presentationToInteractiveReply(...), başlık, metin, bağlam, düğmeler ve
seçimleri eski InteractiveReply şekline eşleyerek görünür sunum metnini
korur. Başlık, metin, bağlam ve ayırıcı blokları zaten yerel olarak çizen
bileşen işleyicileri bunun yerine presentationToInteractiveControlsReply(...)
kullanmalı, ardından yalnızca düğme ve seçim denetimlerini eklemelidir.
renderMessagePresentationFallbackText(...), yalnızca ayırıcıdan oluşan bir
sunum gibi metin yedeği olmayan sunum blokları için boş string döndürür.
Boş olmayan bir gönderim gövdesi gerektiren taşıyıcılar, varsayılan yedek
sözleşmesini değiştirmeden asgari bir gövdeye geçmek için emptyFallback
iletebilir.
Teslimat sabitlemesi
Sabitleme sunum değil, teslimat davranışıdır.channelData.telegram.pin gibi
sağlayıcıya özgü yerel alanlar yerine delivery.pin kullanın.
Semantik:
pin: truebaşarıyla teslim edilen ilk iletiyi sabitler.pin.notifyvarsayılan olarakfalsedeğerindedir.pin.requiredvarsayılan olarakfalsedeğerindedir.- İsteğe bağlı sabitleme hataları bozulur ve gönderilen iletiyi olduğu gibi bırakır.
- Zorunlu sabitleme hataları teslimatı başarısız kılar.
- Parçalı iletiler son parçayı değil, teslim edilen ilk parçayı sabitler.
pin,
unpin ve pins ileti eylemleri hâlâ mevcuttur.
Plugin yazarı kontrol listesi
- Kanal semantik sunumu işleyebildiğinde veya güvenli şekilde bozabildiğinde
describeMessageTool(...)üzerindenpresentationbildirin. - Çalışma zamanı giden bağdaştırıcısına
presentationCapabilitiesekleyin. renderPresentationöğesini denetim düzlemi Plugin kurulum kodunda değil, çalışma zamanı kodunda uygulayın.- Yerel arayüz kitaplıklarını sıcak kurulum/katalog yollarının dışında tutun.
- Platform sınırlarını işleyicide ve testlerde koruyun.
- Desteklenmeyen düğmeler, seçimler, URL düğmeleri, başlık/metin yinelemesi ve
karışık
messageartıpresentationgönderimleri için yedek testleri ekleyin. - Yalnızca sağlayıcı gönderilen ileti kimliğini sabitleyebildiğinde
deliveryCapabilities.pinvepinDeliveredMessageüzerinden teslimat sabitleme desteği ekleyin. - Paylaşılan ileti eylemi şeması üzerinden yeni sağlayıcıya özgü yerel kart/blok/bileşen/düğme alanları sunmayın.