Bu kılavuzda, kartla ilgili olarak karşılaşabileceğiniz yaygın hatalar ve bu hataların nasıl düzeltileceği açıklanmaktadır.
Kart Oluşturucu ile kartları tasarlayın ve önizleyin.
Card Builder'ı açınKart hataları nasıl görünür?
Kart hataları birkaç şekilde görünür:
- Bir kartın widget veya bileşen gibi bir bölümü beklenmedik bir şekilde görünmüyor ya da oluşturulmuyor.
- Kartın tamamı gösterilmez.
- Bir iletişim kutusu kapanır, açılmıyor veya yüklenmiyor.
Bu tür bir davranışla karşılaşmanız, uygulamanızın kartında bir hata olduğu anlamına gelir.
Referans için: çalışan, hatasız bir kart mesajı ve iletişim kutusu
Hatalı kart örneklerini incelemeden önce şu çalışma kartı mesajını ve iletişim kutusunu göz önünde bulundurun. Her örnek hatayı ve düzeltmeyi göstermek için bu kartın JSON'u, hatalar eklenerek değiştirilir.
Hatasız kart mesajı
Aşağıda; bir başlık, bölümler ve süslü metin ve düğmeler gibi widget'lar içeren iletişim bilgilerinin ayrıntılarını içeren, çalışan, hatasız bir kart mesajı verilmiştir:
Hatasız iletişim kutusu
Kullanıcılardan bilgi toplayarak, altbilgi ekleyerek ve metin girişi, anahtarlar ve düğmeler gibi düzenlenebilir widget'larla kişi oluşturan, çalışan, hatasız iletişim kutusu aşağıda verilmiştir:
Hata: Kartın bir kısmı görünmüyor
Bazen kartlar oluşturulur, ancak kartın görmeyi beklediğiniz bir bölümü görünmez. Bunun olası nedenleri şunlardır:
- Zorunlu bir JSON alanı eksik.
- Bir JSON alanı yanlış yazılmış veya yanlış büyük harf kullanılmış.
Neden: Gerekli JSON alanı eksik
Bu örnek hatada zorunlu bir JSON alanı (title
) eksiktir. Sonuç olarak kart oluşturulur ancak kartın görünmesi beklenen bazı bölümleri gösterilmez. Zorunlu alanlar atlandığında, kartların nasıl görüntüleneceğini tahmin etmek zor olabilir.
Bu hatayı düzeltmek için zorunlu JSON alanını ekleyin (bu örnekte title
).
JSON alanının gerekli olup olmadığını öğrenmek için Kartlar v2 referans dokümanlarına bakın. Bu örnekte, CardHeader
üzerindeki title
alanının açıklamasına bakın.
Aşağıda iki örnek sunulmuştur:
1. Örnek: subtitle
belirtilmesi, ancak gerekli title
değerinin atlanması, tüm başlığın boş görünmesine neden olur:
Hatalı kart JSON snippet'ini görüntüle
Hata: header
özelliğinde title
zorunlu alanı eksik.
. . . "header": { "subtitle": "Software Engineer" } . . .
Doğru kart JSON snippet'ini görüntüle
Sabit: Zorunlu title
alanı, header
spesifikasyonunun bir parçasıdır.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer" } . . .
2. Örnek: subtitle
, imageUrl
, imageType
ve imageAltText
değerlerinin belirtilmesi ancak gerekli title
değerinin atlanması, resmin beklendiği gibi oluşturulmasına neden olur, ancak alt başlık oluşturulmaz:
Hatalı kart JSON snippet'ini görüntüle
Hata: header
özelliğinde title
zorunlu alanı eksik.
. . . "header": { "subtitle": "Software Engineer", "imageUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
Doğru kart JSON snippet'ini görüntüle
Sabit: Zorunlu title
alanı, header
spesifikasyonunun bir parçasıdır.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer", "imageUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
Neden: Yanlış yazılmış veya büyük harfle yazılmış JSON
Bu örnek hatada, kart JSON'u gerekli tüm alanları içerir ancak bir alandaki imageUrl
, yanlış bir şekilde imageURL
(büyük R
büyük harf L
) olarak yazılmıştır ve bir hataya neden olur: bağlantı verdiği resim oluşturulmuyor.
Bu hatayı ve buna benzer diğer hataları düzeltmek için doğru JSON biçimlendirmesini kullanın. Bu durumda, imageUrl
doğrudur. Şüphede kalırsanız, JSON kartınızı kart referans belgesiyle karşılaştırarak kontrol edin.
Hatalı kart JSON snippet'ini görüntüle
Hata: imageURL
alanı yanlış bir şekilde büyük harf kullanımı içeriyor. imageUrl
olmalıdır.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer", "imageURL": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
Doğru kart JSON snippet'ini görüntüle
Düzeltildi: imageUrl
alanı doğru şekilde büyük harfle yazılmıştır.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer", "imageUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
Hata: Kartın tamamı görünmüyor
Bazen kartın kendisi görünmez. Bunun olası nedenleri şunlardır:
- Bir
ButtonList
widget'ı yanlış belirtilmiş. - Bir
CardFixedFooter
widget'ında yanlış belirtilmiş bir düğme var.
Neden: Yanlış belirtilmiş buttonList
veya cardFixedFooter
Bir kart mesajında veya iletişim kutusunda yanlış belirtilmiş bir ButtonList
widget'ı veya yanlış belirtilmiş düğmelere sahip bir CardFixedFooter
widget varsa kartın tamamı gösterilmez ve yerinde hiçbir şey görünmez. Eksik alanlar, yanlış yazılmış veya büyük harfle yazılmış alanlar ya da eksik virgül, tırnak veya küme parantezi gibi yanlış yapılandırılmış JSON verileri hatalı spesifikasyonlara dahil olabilir.
Bu hatayı düzeltmek için kartın JSON'unu kart referans dokümanı ile karşılaştırarak kontrol edin. Özellikle, tüm ButtonList
widget'larını ButtonList
widget kılavuzu ile karşılaştırın.
Örnek: ButtonList
widget kılavuzunda, ilk düğmede tamamlanmamış bir onClick
işleminin geçirilmesi, kartın tamamının oluşturulmasını engeller.
Hatalı kart JSON snippet'ini görüntüle
Hata: onClick
nesnesinde alan belirtilmediği için kartın tamamı gösterilmiyor.
. . . { "buttonList": { "buttons": [ { "text": "Share", "onClick": { } } }, { "text": "Edit", "onClick": { "action": { "function": "goToView", "parameters": [ { "key": "viewType", "value": "EDIT", } ], } } }, ], }, } . . .
Doğru kart JSON snippet'ini görüntüleme
Düzeltildi: onClick
nesnesinde artık openLink
alanı olduğundan kart beklendiği gibi görünüyor.
. . . { "buttonList": { "buttons": [ { "text": "Share", "onClick": { "openLink": { "url": "https://example.com/share", } } }, { "text": "Edit", "onClick": { "action": { "function": "goToView", "parameters": [ { "key": "viewType", "value": "EDIT", } ], } } }, ], }, } . . .
Hata: İletişim kutusu kapanıyor, duraklıyor veya açılmıyor
Bir iletişim kutusu beklenmedik şekilde kapanır, yüklenmez veya açılmazsa bunun olası nedeni kart arayüzüyle ilgili bir sorundur.
En yaygın nedenler şunlardır:
CardFixedFooter
widget'ındaprimaryButton
yok.CardFixedFooter
widget'ındaki bir düğmeninonClick
işlemi yok veyaonClick
işlemi yanlış belirtilmiş.- Bir
TextInput
widget'ındaname
alanı eksik.
Neden: CardFixedFooter
için primaryButton
yok
CardFixedFooter
widget'ı içeren iletişim kutularında, hem metin hem de renkle bir primaryButton
belirtilmesi gerekir. primaryButton
öğesinin atlanması veya yanlış ayarlanması tüm iletişim kutusunun görüntülenmesini engeller.
Bu hatayı düzeltmek için CardFixedFooter
widget'ının doğru belirtilmiş bir primaryButton
içerdiğinden emin olun.
Hatalı kart JSON snippet'ini görüntüle
Hata: fixedFooter
nesnesi için primaryButton
alanı belirtilmemiş. Bu durum, iletişim kutusunun yüklenemediği veya açılmamasına neden oluyor.
. . . "fixedFooter": { "onClick": { . . . }, "secondaryButton": { . . . } } } . . .
Doğru kart JSON snippet'ini görüntüleme
Düzeltildi: fixedFooter
için artık bir primaryButton
alanı belirtilmiş. Bu nedenle iletişim kutusu beklendiği gibi çalışıyor.
. . . "fixedFooter": { "primaryButton": { "text": "Submit", "color": { "red": 0, "blue": 1, "green": 0 }, "onClick": { . . . }, "secondaryButton": { . . . } } } . . .
Neden: FixedFooter
içindeki yanlış onClick
ayarı
CardFixedFooter
widget'ı içeren iletişim kutularında herhangi bir düğmede onClick
ayarını yanlış belirterek veya atlayarak iletişim kutusunun kapanmasına, yüklenmemesine ya da açılmamasına neden olabilir.
Bu hatayı düzeltmek için her düğmenin doğru belirtilmiş bir onClick
ayarı içerdiğinden emin olun.
Hatalı kart JSON snippet'ini görüntüle
Hata: primaryButton
nesnesinde, yanlış yazılmış "parameters" dizisi içeren bir onClick
alanı var. Bu durum, iletişim kutusunun yüklenemediği veya açılmamasına neden oluyor.
. . . "fixedFooter": { "primaryButton": { "text": "Submit", "color": { "red": 0, "blue": 1, "green": 0 }, "onClick": { "action": { "function": "setLanguageType", "parrammetters": [ { "key": "languageType", "value": "C++" } ] } } }, "secondaryButton": { "text": "Cancel", "onClick": { "action": { "function": "reset" } } } } . . .
Doğru kart JSON snippet'ini görüntüleme
Düzeltildi: primaryButton
nesnesinde, doğru yazılmış "parameters" dizisine sahip bir onClick
alanı var. Bu nedenle, iletişim kutusu beklendiği gibi çalışıyor.
. . . "fixedFooter": { "primaryButton": { "text": "Submit", "color": { "red": 0, "blue": 1, "green": 0 }, "onClick": { "action": { "function": "setLanguageType", "parameters": [ { "key": "languageType", "value": "C++" } ] } } }, "secondaryButton": { "text": "Cancel", "onClick": { "action": { "function": "reset" } } } } . . .
Neden: TextInput
için name
yok
Bir iletişim kutusu, name
alanını hariç tutan bir TextInput
widget'ı içeriyorsa iletişim kutusu beklendiği gibi çalışmaz. Kapanabilir, açılabilir, ancak yüklenemeyebilir veya açılmayabilir.
Bu hatayı düzeltmek için her TextInput
widget'ının uygun bir name
alanı içerdiğinden emin olun. Karttaki her name
alanının benzersiz olduğundan emin olun.
Hatalı kart JSON snippet'ini görüntüle
Hata: textInput
nesnesi için name
alanı belirtilmemiş. Bu durum iletişim kutusunun kapanmasına, yüklenmemesine veya açılmamasına neden oluyor.
. . . { "textInput": { "label": "Name", "type": "SINGLE_LINE", } } . . .
Doğru kart JSON snippet'ini görüntüleme
Düzeltildi: textInput
için artık bir name
alanı belirtilmiş. Bu nedenle iletişim kutusu beklendiği gibi çalışıyor.
. . . { "textInput": { "label": "Name", "type": "SINGLE_LINE", "name": "contactName" } } . . .
Eşzamansız uygulama mimarisinde iletişim kutusu açma, gönderme veya iptal işlemleri başarısız oluyor
Chat uygulamanız iletişim kutularıyla çalışırken Could not load dialog. Invalid response returned by bot.
hata mesajını döndürüyorsa bunun nedeni uygulamanızın Cloud Pub/Sub veya Mesaj Oluşturma API yöntemi gibi eşzamansız bir mimari kullanması olabilir.
İletişim kutusunu açmak, göndermek veya iptal etmek için DialogEventType
ile Chat uygulamasından eşzamanlı yanıt almanız gerekir.
Bu nedenle, iletişim kutuları eşzamansız bir mimarisi ile oluşturulmuş uygulamalar tarafından desteklenmez.
Geçici bir çözüm olarak, iletişim kutusu yerine kart mesajı kullanmayı deneyin.
Diğer kart ve iletişim kutusu hataları
Bu sayfada açıklanan düzeltmeler uygulamanızın karşılaştığı kartla ilgili hataları gidermiyorsa uygulamanın hata günlüklerini sorgulayın. Günlükleri sorgulamak, kart JSON veya uygulama kodundaki hataları bulmaya yardımcı olabilir. Günlükler, bunları düzeltmenize yardımcı olacak açıklayıcı hata mesajları içerir.
İlgili konular
Google Chat uygulamasındaki hataları düzeltmeyle ilgili yardım için Google Chat uygulamasıyla ilgili sorunları giderme ve düzeltme ve Chat uygulamalarında hata ayıklama başlıklı makaleleri inceleyin.