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

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çın

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

Bu kartın başlığı, zorunlu bir alan (başlık) eksik olduğu için görüntülenmiyor.
Şekil 1: Gerekli bir alan (title) eksik olduğu için bu kartın başlığı görüntülenmez.

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:

Bu kartın başlığı, zorunlu bir alan (başlık) eksik olduğu için görüntülenmiyor.
Şekil 2: Gerekli bir alan (title) eksik olduğu için bu kartın başlığında alt başlık görüntülenmez, ancak resim beklendiği gibi oluşturulur.

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.

Bu kartın başlığı, zorunlu bir alan (başlık) eksik olduğu için görüntülenmiyor.
Şekil 3: Gerekli bir alan (title) eksik olduğu için bu kartın başlığında alt başlık görüntülenmez, ancak resim beklendiği gibi oluşturulur.

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:

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:

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.

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.