ReferansBileşenler

confirm_card

Yazma veya yıkıcı bir aksiyon için sunucunun oluşturduğu onay.

Çizilmiş güvenlik mekanizması. Bir yazma veya yıkıcı aksiyon çalıştırılmadan önce sunucu, aksiyon manifestinizden bir confirm_card sentezler: özet confirmTemplate bilginizden gelir, parametreler sunucunun zaten doğrulamış olduğu çağrıdan gelir ve model bunların hiçbirine dokunmaz.

Tüm mesele de budur. Model kartı yazmadığı için bir halüsinasyon, son kullanıcının neyi onayladığını yanlış aktaramaz.

Karttaki her tutar, aksiyonlarınızın döndürdüğü veriye göre kontrol edilir; önündeki simge de öyle. Verinin para birimi, sonuçlarınızın taşıdığı ISO kodudur ("currency": "AUD"); kartta bu anlama gelemeyecek bir simge veya kod doğru olanla değiştirilir; böylece bir AUD siparişi için EUR 8.41, hiçbir zaman atlanmadan A$8.41 haline gelir. Yalın bir $, herhangi bir dolar anlamına gelir.

Aksiyonun editable olarak işaretlediği parametreler, son kullanıcının onaylamadan önce değiştirebileceği kontroller olarak çizilir ve her değişiklik sunucuda tekrar kontrol edilir. Bkz. Kart üzerinde son kullanıcının değiştirebileceği değerler.

Bu işlem geri alınamaz1042 numaralı sipariş iptal edilip $129 tutarı orijinal karta iade edilsin mi?
Sipariş1042
İade$129.00
İade edilecek hesapKartMağaza bakiyesi
Siparişi iptal etGeri dönün

Ekran görüntüsü değildir; tarayıcınızda SDK'nın kendi boyut ve renkleriyle canlı olarak çizilir.

Flutter SDK ve Web SDK ile, her ikisi de 0.1.0 sürümünden itibaren yerel olarak render edilir.

Ne zaman kullanılmamalı

Bunu siz kullanamazsınız. confirm_card, modelin üretemeyeceği tek blok türüdür. Yapısı gereği render_ui aracında yer almaz ve hiçbir ana uygulama kodu da bunu oluşturmaz.

Son kullanıcının seçenekler arasından seçim yapmasını istiyorsanız bunun için choice veya product_cards kullanılır. Değer girmesini istiyorsanız bu form bileşenidir. Onay bir seçim değildir; zaten tamamen belirlenmiş bir şeyin onaylanmasıdır.

Props

Her blok ayrıca type ve 1 ila 300 karakterlik zorunlu bir fallback_text taşır.

PropTürZorunluKısıtlamalar
invocation_idstringEvetSunucu atar.
action_namestringEvetBu kartın onayladığı kayıtlı aksiyon.
summarystringEvet1 ila 300 karakter. confirmTemplate şablonunuzdan render edilir.
paramsobjectEvetMakinece okunabilir. İşleyici bunun üzerinde çalışır.
params_displayarrayEvetEn fazla 12 girdi. Yalnızca insan okumasına uygun.
params_display[].labelstringEvetEn fazla 60 karakter.
params_display[].valuestringEvetEn fazla 200 karakter.
params_display[].paramstringHayırEn fazla 64 karakter.
editablearrayHayırEn fazla 12 girdi.
editable[].paramstringEvet1 ila 64 karakter.
editable[].labelstringEvetEn fazla 60 karakter.
editable[].kindstepper | number | text | choice | toggleEvetYok
editable[].optionsarrayHayırEn fazla 12 girdi.
editable[].options[].valuestringEvetYok
editable[].options[].labelstringEvetEn fazla 60 karakter.
editable[].minnumberHayırYok
editable[].maxnumberHayırYok
editable[].max_lengthintegerHayır1 ila 2.000.
riskwrite | destructiveEvetread aksiyonları asla bir kart üretmez.
confirmactionEvet{ kind: "confirm", invocation_id } veya { kind: "cancel", invocation_id }. Bkz. Actions. Sunucu burada confirm gönderir.
cancelactionEvet{ kind: "confirm", invocation_id } veya { kind: "cancel", invocation_id }. Bkz. Actions. Sunucu burada cancel gönderir.
expires_atstringHayırUTC biçiminde ISO 8601 (...Z); sayısal bir fark doğrulamadan geçmez. Sunucu, write ve destructive ayrımı yapmaksızın her kartı on dakika sonrasına damgalar. Bu süre aşıldığında SDK onaylamayı reddeder ve kart süresi dolmuş olarak görünür. İşleyici sonuç gönderilmeden önce cihazda çalıştığından ve manifest bir işleyicinin 120 saniyeye kadar sürmesine izin verdiğinden, sunucu da ek olarak 150 saniyelik bir ek süreyle bunu zorunlu kılar. Süre, kullanıcının bastığı andan değil, kartın oluşturulduğu andan itibaren ölçülür ve ret işlemi ne kadar geç olursa olsun kabul edilir.
executesserverHayırOnay kaydedildikten sonra, oturum açmış kullanıcı olarak API'nin kendisinin çalıştırdığı bir yönetim paneli aksiyonu için server. Cihazın bunun için bir işleyicisi yoktur: onaylandığında kararı kaydeder ve veri içermeyen başarılı bir sonuç geri gönderir; sunucu ise ne olduğunu yanıtlar. Cihazın çalıştırdığı bir aksiyon için mevcut değildir.
confirm_labelstringHayır1 ila 40 karakter.
irreversiblebooleanHayırYok
type_to_confirmobjectHayırYok
type_to_confirm.paramstringEvet1 ila 64 karakter.
type_to_confirm.valuestringEvetEn fazla 2000 karakter.
full_textobjectHayırYok
full_text.paramstringEvet1 ila 64 karakter.
full_text.valuestringEvetEn fazla 100000 karakter.
suggested_afterstringHayır1 ila 160 karakter.

Ağ üzerinde

{
  "id": "blk_09",
  "type": "confirm_card",
  "fallback_text": "Confirm cancelling order 1042.",
  "props": {
    "invocation_id": "inv_8f21",
    "action_name": "cancel_order",
    "summary": "Cancel order 1042 and refund $129 to the original card?",
    "params": {
      "order_id": "1042"
    },
    "params_display": [
      {
        "label": "order_id",
        "value": "1042"
      }
    ],
    "risk": "destructive",
    "confirm": {
      "kind": "confirm",
      "invocation_id": "inv_8f21"
    },
    "cancel": {
      "kind": "cancel",
      "invocation_id": "inv_8f21"
    },
    "expires_at": "2026-08-27T10:10:00Z"
  }
}

Etkileşim

Onaylama işlemi, kayıtlı işleyicinizi params ile çalıştırır ve sonucu yeni bir istek olarak iletir. Kart executes: "server" (bir yönetim paneli aksiyonu) taşıdığında cihaz hiçbir şey çalıştırmaz: onayı kaydeder, API çağrıyı oturum açmış kullanıcı olarak yapar ve yanıt ne olduğunu belirtir. Geri dönme işlemi declined araç sonucunu iletir, böylece sıra her iki durumda da çözümlenir ve yanıt asla kimsenin yanıtlamadığı bir kartta takılıp kalmaz.

params_display bir render gösterimidir. İçindeki her değer String() işleminden geçirilmiş ve 200 karakterde kesilmiştir, bu nedenle bundan hiçbir şey yeniden oluşturulamaz. SDK ya params çalıştırır ya da hiçbir şey çalıştırmaz. Bir şekilde makinece okunabilir parametreler olmadan gelen bir kart, tahmin yürütülerek çalıştırılmak yerine hata olarak bildirilir.

Burada yalnızca confirm ve cancel geçerlidir. Genel UIAction birleşimi geçerli değildir.

Durumlar

DurumSDK'nın çizdiği görünüm
DestructivePlakanın kenarı 1.5pt tam mürekkep rengine geçer ve üst başlıkta “Bu işlem geri alınamaz” yazar. Vurgu onay butonunda kalır: uyarıyı ağırlık taşır, böylece ana uygulamanın seçmediği bir kırmızı rengi sahiplenmesi gerekmez.
ResolvedButonların yerini kartta kalmaya devam eden “Onaylandı” veya “Onaylanmadı” ifadesi alır. O sayfaya geri dönüldüğünde üzerinde ne konuda anlaşıldığı tam olarak görünmeye devam eder.
Not answeredKart açıkken son kullanıcı başka bir şey sordu. Her iki taraf da bunu bir yanıt olarak kabul eder: SDK, yeni mesaj gönderilmeden önce kartı “Yanıtlanmadı” olarak işaretler ve sunucu, sıranın geçmişi geçerli olsun diye çağrıyı kapatır. Geride bırakılan bir kart bir daha asla onaylanamaz; bu sayede daha sonra üzerine dokunulması, sonucunu hiçbir şeyin kabul etmeyeceği bir işleyiciyi çalıştıramaz.
ExpiredButonların yerini “Süresi doldu” işareti ve “Hiçbir işlem yapılmadı. Baştan başlatmak için tekrar sorun.” satırı alır. Yıkıcı bir kart, artık uyarılacak bir şey kalmadığı için belirginleştirilmiş kenarını da serbest bırakır. Kart kendi saatini izler, böylece ilgisiz bir sonraki yeniden çizim yerine sürenin dolduğu anda değişir.
Handler not registered on this deviceDokunulduğunda hiçbir şey yapmayan bir kartta yanıtı askıda bırakmak yerine, kart reddedildi olarak çözümlenir ve bir hata sonucu iletilir.
LoadingKısa bir üst başlık satırı, iki gövde satırı ve iki 44pt buton şekline sahip bir plaka; böylece kart hydrate olduğunda yüksekliği iki katına çıkmaz.

Erişilebilirlik

Kart, ekran okuyucu kullanan birinin yanıtta duyacağı en önemli öğedir. fallback_text sunucuda yazılır ve aksiyon ile nesnesini belirtir. Her iki buton da 44pt boyutundadır ve sonuç canlı bölge (live region) olarak duyurulur, böylece son kullanıcı aramak zorunda kalmadan sonuç seslendirilir.