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.
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.
| Prop | Tür | Zorunlu | Kısıtlamalar |
|---|---|---|---|
invocation_id | string | Evet | Sunucu atar. |
action_name | string | Evet | Bu kartın onayladığı kayıtlı aksiyon. |
summary | string | Evet | 1 ila 300 karakter. confirmTemplate şablonunuzdan render edilir. |
params | object | Evet | Makinece okunabilir. İşleyici bunun üzerinde çalışır. |
params_display | array | Evet | En fazla 12 girdi. Yalnızca insan okumasına uygun. |
params_display[].label | string | Evet | En fazla 60 karakter. |
params_display[].value | string | Evet | En fazla 200 karakter. |
params_display[].param | string | Hayır | En fazla 64 karakter. |
editable | array | Hayır | En fazla 12 girdi. |
editable[].param | string | Evet | 1 ila 64 karakter. |
editable[].label | string | Evet | En fazla 60 karakter. |
editable[].kind | stepper | number | text | choice | toggle | Evet | Yok |
editable[].options | array | Hayır | En fazla 12 girdi. |
editable[].options[].value | string | Evet | Yok |
editable[].options[].label | string | Evet | En fazla 60 karakter. |
editable[].min | number | Hayır | Yok |
editable[].max | number | Hayır | Yok |
editable[].max_length | integer | Hayır | 1 ila 2.000. |
risk | write | destructive | Evet | read aksiyonları asla bir kart üretmez. |
confirm | action | Evet | { kind: "confirm", invocation_id } veya { kind: "cancel", invocation_id }. Bkz. Actions. Sunucu burada confirm gönderir. |
cancel | action | Evet | { kind: "confirm", invocation_id } veya { kind: "cancel", invocation_id }. Bkz. Actions. Sunucu burada cancel gönderir. |
expires_at | string | Hayır | UTC 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. |
executes | server | Hayır | Onay 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_label | string | Hayır | 1 ila 40 karakter. |
irreversible | boolean | Hayır | Yok |
type_to_confirm | object | Hayır | Yok |
type_to_confirm.param | string | Evet | 1 ila 64 karakter. |
type_to_confirm.value | string | Evet | En fazla 2000 karakter. |
full_text | object | Hayır | Yok |
full_text.param | string | Evet | 1 ila 64 karakter. |
full_text.value | string | Evet | En fazla 100000 karakter. |
suggested_after | string | Hayır | 1 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
| Durum | SDK'nın çizdiği görünüm |
|---|---|
| Destructive | Plakanı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. |
| Resolved | Butonları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 answered | Kart 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. |
| Expired | Butonları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 device | Dokunulduğunda hiçbir şey yapmayan bir kartta yanıtı askıda bırakmak yerine, kart reddedildi olarak çözümlenir ve bir hata sonucu iletilir. |
| Loading | Kı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.