Kartlar ve iletişim kutularıyla ilgili sorunları giderme ve düzeltme

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çma

Kart 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:

Başlık adlı zorunlu bir alan eksik olduğu için bu kartın başlığı gösterilmiyor.
Şekil 1: Zorunlu bir alan (title) eksik olduğu için bu kartın başlığı gösterilmiyor.

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:

Başlık adlı zorunlu bir alan eksik olduğu için bu kartın başlığı gösterilmiyor.
Şekil 2: Gerekli bir alan (title) eksik olduğu için bu kartın başlığında alt başlık gösterilmiyor ancak resim beklendiği gibi oluşturuluyor.

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.

Başlık adlı zorunlu bir alan eksik olduğu için bu kartın başlığı gösterilmiyor.
Şekil 3: Zorunlu bir alan (title) eksik olduğu için bu kartın başlığında alt başlık gösterilmiyor ancak resim beklendiği gibi oluşturuluyor.

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:

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:

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.

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.