Ana içeriğe geç
Geliştiriciler Düğmeler

Düğme ekle

Herhangi bir kartın altına düğmeler koy. Bir düğme bir bağlantı açar, biri dokunduğu anda kartı herkes için değiştirir ya da servisine basıldığını bildirir.

Neler yapabilirsin

  • Bağlantı açİnsanları bir sayfaya, bir panoya ya da bir pull request’e yönlendir.
  • Dokununca kartı değiştirKendi sunucun olmadan, doğrudan basıştan kartı düzenle, kaldır, tepki ver ya da yanıtla.
  • Her basıştan haberdar olServisin kimin neye bastığını canlı olarak öğrenir.
  • Komut çalıştırBir düğme, topluluğun eğik çizgi komutlarından birini verilerle birlikte çalıştırabilir.

Uygulamada

Biri zili çalar: kart belirir

Kapıyı aç düğmesine bir dokunuş: kart herkes için değişir

Değişikliğin kendisi için sunucu gerekmez: adımlar mesajla birlikte saklanır. Kapı kontrol cihazın basışı duyar ve kapıyı açar.

Hızlı başlangıç

  1. Bir actions listesi ekle

    Düğmeler, kartın yanında actions alanına girer: bir webhook gönderisinde, bir komut yanıtında ya da bir güncellemede.

    json
    {
      "message_container": {
        "color": "yellow",
        "title": "Deploy v2.1 to production?",
        "description": "Requested by maya."
      },
      "actions": [
        { "type": "url:https://ci.example.com/deploys/218", "text": "View changes", "color": "blue" }
      ]
    }
    deploys
    System
    Message from Deploybot

    v2.1 canlı ortama alınsın mı?

    İsteyen: maya.
  2. Basınca ne olacağını seç

    Bir bağlantı, kartta bir değişiklik ya da servisine bir çağrı. Üç türü aşağıda bulabilirsin.

Üç düğme türü

Basınca ne olacağına type karar verir.

TürBasınca ne olurSana ulaşır mı
url:{url}Bağlantıyı açar.Hayır
webhook_actionOnunla birlikte sakladığın adımları kanaldaki herkes için çalıştırır.Evet, mesajın stream_url adresinde
trigger:{guid}Topluluğun tetikleyicilerinden birini düğmenin payload verisiyle çalıştırır.Evet, o tetikleyicinin URL’sine yeni bir istek olarak

Dokununca kartı değiştir

Bir webhook_action düğmesi triggers içinde bir adım listesi taşır. Basıldığında bu adımlar mssgs sunucusunda sırayla çalışır ve kanaldaki herkes sonucu görür.

AdımHerkes için ne yaparAlanlar
update_messageKartı ve düğmelerini değiştirir. Düğmeleri kaldırmak için "actions": [] gönder.message_container, actions, content
remove_messageMesajı siler.Yok
add_reactionBasan üyenin adına bir tepki ekler.emoji
add_replyBasan üyenin adına bir yanıt gönderir.content
json
{
  "message_container": { "color": "yellow", "title": "Front door", "description": "Someone rang the bell." },
  "actions": [
    {
      "type": "webhook_action",
      "id": "open_gate",
      "text": "Open gate",
      "color": "green",
      "payload": { "door": "front" },
      "triggers": [
        {
          "action": "update_message",
          "message_container": { "color": "blue", "title": "Front door", "description": "Opening…" },
          "actions": []
        },
        { "action": "add_reaction", "emoji": ":white_check_mark:" }
      ]
    }
  ]
}
Adımlar her zaman saklanan mesajdan okunur, asla üyenin uygulamasından değil; yani bir basış yalnızca senin oraya koyduğun şeyi yapabilir.
Adımlar sırayla çalışır ve her biri denenir: biri başarısız olursa geri kalanlar yine de çalışır.

Basışları dinle

Düğmeli bir mesaj webhook’tan bir stream_url ile döner. Onu açık tut; her basış action türünde bir olay olarak gelir: düğmenin id’si, saklanan düğme ve onun payload verisi, bir de basan kişi:

sse
data: {"type": "action", "message_id": "...", "action_id": "open_gate", "action": {"id": "open_gate", "payload": {"door": "front"}, ...}, "member_guid": "member-guid", "member": {...}, "ts": 1790000000000}

Asıl işi yap, örneğin kapıyı aç, sonra kartın son halini callback_url üzerinden ayarla. Akışın ve callback’in nasıl çalıştığı canlı güncellemeler sayfasında.

Düğmeyle komut çalıştır

Bir trigger:{guid} düğmesi, sanki biri komutu yazmış gibi topluluğunun tetikleyicilerinden birini çalıştırır ve düğmenin payload verisini iletir. Tetikleyiciye şu gelir:

json
{
  "actions": [
    {
      "type": "trigger:5f2c9a1e-trigger-guid",
      "text": "Check status",
      "color": "blue",
      "payload": { "order_id": "12345" }
    }
  ]
}
json
{
  "trigger_match": "/status",
  "message": {
    "content": "[Action Triggered]",
    "member_guid": "member-guid",
    "is_action_button": true,
    "action_payload": { "order_id": "12345" }
  },
  "callback_url": "https://mss.gs/api/v1/trigger-callback/...",
  "stream_url": "https://mss.gs/api/v1/instant/...?token=..."
}
Tetikleyicinin yanıtı yeni bir kart olarak gönderilir. İstek, düğmenin hangi mesajda olduğunu söylemez: ihtiyacın olanı payload içine koy.

Alanlar

AlanTürNe yapar
typestringurl:{url}, webhook_action ya da trigger:{guid}. Zorunlu.
textstringDüğmenin üzerindeki etiket. Zorunlu; label da çalışır.
colorstringDüğmenin rengi, aşağıya bak.
idstringwebhook_action için: hangi düğmeye basıldığı. Mesaj içinde benzersiz olmalı.
payloadobjectSenin verin, basıldığında sana geri verilir.
triggersarraywebhook_action için: çalıştırılacak adımlar.
disabledbooleanDüğmeyi soluk gösterir ve basışlar reddedilir.

Renkler

green, blue ve purple dolu, birincil bir düğme çizer. red, orange ve yellow ikincil bir düğme çizer: bunları “Reddet”, “İptal” ve dikkat isteyen diğer seçenekler için kullan.

Hatalar

Düğmeli bir mesaj gönderdiğinde mssgs önce düğmeleri kontrol eder:

KodAnlamı
INVALID_ACTIONS_FORMATactions bir nesne listesi değil.
INVALID_ACTION_MISSING_FIELDSBir düğmenin type ya da text alanı yok.
DUPLICATE_ACTION_IDİki düğme aynı id değerini kullanıyor.
INVALID_TRIGGERS_FORMATtriggers bir adım listesi değil.
INVALID_TRIGGER_MISSING_ACTIONBir adımın action alanı yok.
INVALID_TRIGGER_ACTION_NOT_ALLOWEDYukarıdaki dört adımdan farklı bir adım.

Biri bastığında

KodAnlamı
MESSAGE_NOT_FOUNDMesaj bu arada silinmiş.
ACTION_NOT_FOUNDMesajda bu id’ye sahip bir düğme yok.
ACTION_DISABLEDDüğme devre dışı.
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVEDüğmenin gösterdiği tetikleyici artık yok ya da kapatılmış.
TRIGGER_NOT_ALLOWEDÜyenin o tetikleyiciyi kullanabilen bir rolü yok.

Eski belgelerden mi geliyorsun?

ws:send, local:update_message ve local:remove_message adımlarına sahip button türündeki düğmeler, previous:success koşulları ve expire_in_seconds artık dışarıdan gönderenler için çalışmıyor. Bunların yerine yukarıdaki adımlarla webhook_action kullan: bu adımlar yalnızca basan kişiye değil, herkese ulaşır.

Geliştirmeye devam et