Bu kılavuzda, karşılaşabileceğiniz yaygın kart hataları ve bunların nasıl düzeltileceği açıklanmaktadır.
Chat uygulamaları için mesajlaşma ve kullanıcı arayüzlerini tasarlamak ve önizlemek üzere Kart Oluşturucu'yu kullanın:
Kart Oluşturucu'yu açmaKart hataları nasıl görünür?
Kart hataları birkaç şekilde kendini gösterir:
- Kartın bir parçası (ör. widget veya bileşen) beklenmedik bir şekilde görünmüyor veya oluşturulmuyor.
- Kartın tamamı görünmüyor.
- İletişim kutusu kapanıyor, açılmıyor veya yüklenmiyor.
Bu tür bir davranışla karşılaşırsanız uygulamanızın kartında bir hata vardır.
Referans olarak kullanabileceğiniz, çalışan ve hata içermeyen bir kart mesajı ve iletişim kutusu
Hatalı kart örneklerini incelemeden önce, önce bu çalışan kart mesajını ve iletişim kutusunu inceleyin. Her örnek hatayı ve çözümünü göstermek için bu kartın JSON'una hatalar eklenerek değiştirilmiştir.
Hatasız kart mesajı
Başlık, bölümler ve süslü metin ve düğmeler gibi widget'lar içeren iletişim bilgilerini ayrıntılı olarak gösteren, çalışan ve hatasız kart mesajını aşağıda bulabilirsiniz:
Hatasız bir iletişim kutusu
Kullanıcılardan bilgi toplayarak kişi oluşturan, altbilgi ve metin girişi, anahtar ve düğme gibi düzenlenebilir widget'lar içeren, çalışan ve hatasız iletişim kutusunu burada bulabilirsiniz:
Hata: Kartın bir kısmı görünmüyor
Bazen kartlar oluşturulur ancak görmeyi beklediğiniz bir kartın kısmı görünmez. Bunun olası nedenleri şunlardır:
- Zorunlu bir JSON alanı eksik.
- Bir JSON alanında yazım hatası veya büyük harf kullanımı hatası var.
Neden: Zorunlu bir JSON alanı eksik
Bu örnek hatada, zorunlu bir JSON alanı (title
) eksik. Sonuç olarak kart oluşturulur ancak kartın görünmesi beklenen bölümleri görünmez. Zorunlu alanlar atlandığında kartların nasıl oluşturulacağını tahmin etmek zor olabilir.
Bu hatayı düzeltmek için gerekli JSON alanını (bu örnekte title
) ekleyin.
Bir JSON alanının gerekli olup olmadığını öğrenmek için Cards 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 verilmiştir:
1. Örnek: subtitle
belirtilirken zorunlu title
atlanırsa başlığın tamamı boş görünür:
Hatalı kart JSON snippet'ini görüntüleme
Hata: header
alanında zorunlu bir alan (title
) eksik.
. . . "header": { "subtitle": "Software Engineer" } . . .
Doğru kart JSON snippet'ini görüntüleme
Düzeltildi: Zorunlu alan title
, header
spesifikasyonunun bir parçasıdır.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer" } . . .
2. örnek: subtitle
, imageUrl
, imageType
ve imageAltText
belirtilirken gerekli title
atlanırsa resim beklendiği gibi oluşturulur ancak altyazı oluşturulmaz:
Hatalı kart JSON snippet'ini görüntüleme
Hata: header
alanında zorunlu bir alan (title
) 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üleme
Düzeltildi: Zorunlu alan title
, 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 harf kullanımı yanlış olan JSON
Bu örnekte, kart JSON'u gerekli tüm alanları içeriyor ancak imageUrl
alanı yanlışlıkla imageURL
(büyük R
büyük L
) olarak büyük harflerle yazılmış. Bu da bir hataya neden oluyor: İşaret ettiği resim oluşturulmuyor.
Bu hatayı ve benzerlerini düzeltmek için doğru JSON biçimini kullanın. Bu durumda imageUrl
doğrudur. Şüphe duyduğunuzda kart JSON'unu kart referans dokümanıyla karşılaştırın.
Hatalı kart JSON snippet'ini görüntüleme
Hata: imageURL
alanı büyük/küçük harf kullanımında hatalı. 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üleme
Düzeltildi: imageUrl
alanı büyük harf kullanımıyla doğru şekilde 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
Kartın görünmemesinin olası nedenleri şunlardır:
ButtonList
widget'ı yanlış belirtilmiş.- Bir
CardFixedFooter
widget'ında yanlış belirtilen bir düğme var.
Neden: buttonList
veya cardFixedFooter
yanlış belirtilmiş
Bir kart mesajı veya iletişim kutusunda yanlış belirtilen ButtonList
widget'ı ya da yanlış belirtilen düğmelere sahip bir CardFixedFooter
widget'ı varsa kartın tamamı görüntülenmez ve kartın yerine hiçbir şey görünmez. Hatalı özellikler arasında eksik alanlar, yanlış yazılmış veya büyük harf kullanılmış alanlar ya da yanlış yapılandırılmış JSON (ör. eksik virgül, tırnak veya köşeli parantez) yer alabilir.
Bu hatayı düzeltmek için kart JSON'unu kart referans dokümanıyla karşılaştırın. Özellikle ButtonList
widget'larını ButtonList
widget kılavuzuyla karşılaştırın.
Örnek: Bir ButtonList
widget kılavuzunda, ilk düğmede tamamlanmamış bir onClick
işleminin iletilmesi kartın tamamının oluşturulmasını engeller.
Hatalı kart JSON snippet'ini görüntüleme
Hata: onClick
nesnesinde alan belirtilmediği için kartın tamamı görünmüyor.
. . . { "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 bir openLink
alanı var. Bu sayede 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, takılıyor veya açılmıyor
Bir iletişim kutusu beklenmedik bir şekilde kapanıyor, yüklenemiyor veya açılmıyorsa bunun nedeni kart arayüzündeki bir sorun olabilir.
En yaygın nedenler şunlardır:
CardFixedFooter
widget'ındaprimaryButton
yok.CardFixedFooter
widget'ında bir düğmeninonClick
işlemi yok veyaonClick
işlemi yanlış belirtilmiş.TextInput
widget'ındaname
alanı eksik.
Neden: CardFixedFooter
'te primaryButton
yok
CardFixedFooter
widget'ı içeren iletişim kutularında hem metin hem de renk içeren bir primaryButton
belirtmeniz gerekir. primaryButton
öğesinin atlanması veya yanlış ayarlanması, iletişim kutusunun tamamının gösterilmesini engeller.
Bu hatayı düzeltmek için CardFixedFooter
widget'ının doğru şekilde belirtilen bir primaryButton
içerdiğinden emin olun.
Hatalı kart JSON snippet'ini görüntüleme
Hata: fixedFooter
nesnesinde primaryButton
alanı belirtilmediği için iletişim kutusunun yüklenmesi veya açılması başarısız oldu.
. . . "fixedFooter": { "onClick": { . . . }, "secondaryButton": { . . . } } } . . .
Doğru kart JSON snippet'ini görüntüleme
Düzeltildi: fixedFooter
için artık bir primaryButton
alanı belirtildiği için iletişim kutusu beklendiği gibi çalışıyor.
. . . "fixedFooter": { "primaryButton": { "text": "Submit", "color": { "red": 0, "blue": 1, "green": 0 }, "onClick": { . . . }, "secondaryButton": { . . . } } } . . .
Neden: FixedFooter
'teki onClick
ayarı yanlış
CardFixedFooter
widget'ı içeren iletişim kutularında herhangi bir düğmedeki onClick
ayarının yanlış belirtilmesi veya atlanması, iletişim kutusunun kapanmasına, yüklenememesine veya açılamamasına neden olur.
Bu hatayı düzeltmek için her düğmenin doğru şekilde belirtilen bir onClick
ayarına sahip olduğundan emin olun.
Hatalı kart JSON snippet'ini görüntüleme
Hata: primaryButton
nesnesinde, "parameters" dizisinin yanlış yazıldığı bir onClick
alanı vardır. Bu durum, iletişim kutusunun yüklenmesine veya açılmasına neden olur.
. . . "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ış bir "parameters" dizisi içeren bir onClick
alanı vardır. Bu nedenle iletişim kutusu beklendiği gibi çalışır.
. . . "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
'te name
yok
Bir iletişim kutusu, name
alanını hariç tutan bir TextInput
widget'ı içeriyorsa iletişim kutusu beklendiği gibi çalışmaz. Uygulama kapanabilir, açılır ancak yüklenemez veya hiç açılmaz.
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üleme
Hata: textInput
nesnesinde name
alanı belirtilmediği için iletişim kutusunun kapanmasına, yüklenememesine veya açılamaması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ı belirtildiği için iletişim kutusu beklendiği gibi çalışıyor.
. . . { "textInput": { "label": "Name", "type": "SINGLE_LINE", "name": "contactName" } } . . .
Asenkron uygulama mimarisinde iletişim kutusu açma, gönderme veya iptal etme işlemleri başarısız oluyor
Chat uygulamanız ileti dizileriyle çalışırken Could not load dialog. Invalid response returned by bot.
hata mesajı döndürüyorsa bunun nedeni, uygulamanızın Cloud Pub/Sub veya Create Message API yöntemi gibi bir eşzamansız mimari kullanmasıdır.
İletişim kutusunu açma, gönderme veya iptal etme işlemi için DialogEventType
içeren bir Chat uygulamasından eşzamanlı yanıt gerekir.
Bu nedenle, sohbetler, asenkron mimari ile oluşturulan uygulamalar tarafından desteklenmez.
Bu sorunu geçici olarak çözmek için iletişim kutusu yerine kart mesajı kullanabilirsiniz.
Kart ve iletişim kutusu ile ilgili diğer hatalar
Bu sayfada açıklanan düzeltmeler, uygulamanızın yaşadığı kartla ilgili hatayı çözmüyorsa uygulamanın hata günlüklerini sorgulayın. Günlükleri sorgulamak, kart JSON'unda veya uygulama kodunda hataları bulmanıza yardımcı olabilir. Günlükler, hataları düzeltmenize yardımcı olacak açıklayıcı hata mesajları içerir.
İlgili konular
Google Chat uygulaması hatalarını 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.