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

Bu kılavuzda, kartla ilgili karşılaşabileceğiniz yaygın hatalar ve bunların nasıl düzeltileceği açıklanmaktadır.


Chat uygulamaları için JSON kart mesajları tasarlayıp önizlemek üzere Kart Oluşturucu'yu kullanın:

Kart Oluşturucu'yu açın

Kart hataları nasıl görünür?

Kart hataları birkaç şekilde ortaya çıkar:

  • Widget veya bileşen gibi bir kartın bir bölümü görünmüyor veya beklenmedik bir şekilde oluşturuluyor.
  • Kartın tamamı gösterilmez.
  • İletişim kutusu kapanır, açılmıyor veya yüklenmiyor.

Bu tür bir davranışla karşılaşırsanız uygulamanızın kartında bir hata var demektir.

Referans için: Çalışan, hatasız bir kart mesajı ve iletişim kutusu

Hatalı kart örneklerini incelemeden önce, ilk olarak bu çalışan kart mesajını ve iletişim kutusunu değerlendirin. Her bir örnek hatayı ve düzeltmesini göstermek için bu kartın JSON'ı, hatalar eklenerek değiştirilir.

Hatasız bir kart mesajı

Müşteri hizmetleri temsilcisinin iletişim bilgilerini ayrıntılı olarak açıklayan Başlık, bölüm ve widget'larla (ör. süslenmiş metin ve düğmeler) içerir:

Hatasız bir iletişim

Aşağıdaki gibi toplayarak kişi oluşturan, çalışan, hatasız iletişim kutusu Kullanıcılardan gelen bilgiler, altbilgi, metin girişi gibi düzenlenebilir widget'lar kontrol edin:

Hata: Kartın bir bölümü görünmüyor

Bazen kartlar oluşturulur ancak görmeyi beklediğiniz kartın 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ış yazılmış.

Neden: Gerekli bir JSON alanı eksik

Bu örnek hatada, zorunlu bir JSON alanı (title) eksik. Bunun sonucunda kart oluşturulur ancak kartın görünmesi beklenen bazı bölümleri gösterilmez. Zorunlu alanlar atlandığında kartların nasıl oluşturulduğunu tahmin etmek zor olabilir.

Bu hatayı düzeltmek için gerekli JSON alanını ekleyin; Bu örnekte, title.

JSON alanının gerekli olup olmadığını öğrenmek için Cards v2 referans belgelerini inceleyin. Bu örnekte, CardHeader sitesindeki title alanının açıklamasına bakın.

Aşağıda iki örnek verilmiştir:

1. Örnek: subtitle değerinin belirtilmesi ancak gerekli title değerinin atlanması, tüm üstbilginin boş görünmesine neden olur:

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

Hatalı kart JSON snippet'ini görüntüleyin

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 title alanı, header spesifikasyonunun bir parçasıdır.

    . . .
    "header": {
            "title": "Sasha",
            "subtitle": "Software Engineer"
          }
    . . .
    

2. Örnek: subtitle, imageUrl, imageType ve imageAltText değerinin belirtilmesi ancak gerekli title değerinin atlanması, resmin beklendiği gibi oluşturulmasına neden olur, ancak altyazının oluşturulmamasına neden olur:

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

Hatalı kart JSON snippet'ini görüntüleyin

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 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: JSON yanlış yazılmış veya büyük harf yazılmış

Bu örnek hatada, kartın JSON'ı gerekli tüm alanları içeriyor ancak bir alandaki imageUrl yanlış bir şekilde imageURL şeklinde (büyük R büyük L) yazılmış. Bu hataya neden oluyor: işaret ettiğ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. Şüpheye düştüğünüzde, card referans belgesine bakarak kartınızın JSON'ını kontrol edin.

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

Hatalı kart JSON snippet'ini görüntüleyin

Hata: imageURL alanı yanlış yazılmış. 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ı doğru şekilde büyük yazılmış.

    . . .
    "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: buttonList veya cardFixedFooter yanlış belirtilmiş

Bir kart mesajında veya iletişim kutusunda yanlış belirtilmiş bir ButtonList widget'ı veya düğmelerin yanlış belirtilmiş bir CardFixedFooter widget'ı varsa kartın tamamı gösterilmez ve yerinde hiçbir şey görüntülenmez. Eksik alanlar, yanlış yazılmış veya büyük harfle yazılmış alanlar ya da yanlış yapılandırılmış JSON (ör. eksik virgül, tırnak veya süslü ayraç gibi) yanlış spesifikasyonlar arasında sayılabilir.

Bu hatayı düzeltmek için kartın JSON'ını card referans belgesiyle karşılaştırın. Özellikle, tüm ButtonList widget'larını ButtonList widget kılavuzu ile karşılaştırın.

Örnek: Bir ButtonList widget rehberinde, ilk düğmede tamamlanmamış bir onClick işlemi belirtmek kartın tamamının oluşturulmasını engeller.

Hatalı kart JSON snippet'ini görüntüle

Hata: onClick nesnesinde hiç alan belirtilmediğinden 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ğu için 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: Bir iletişim kutusu kapanıyor, çalışmıyor veya açılmıyor

İletişim kutusu beklenmedik bir şekilde kapanıyor, yüklenemiyor veya açılmıyorsa bunun olası nedeni kart arayüzüyle ilgili bir sorundur.

En yaygın nedenler şunlardır:

Neden: CardFixedFooter için primaryButton yok

CardFixedFooter widget'ı bulunan iletişim kutularında hem metin hem de renk içeren bir primaryButton belirtilmesi gerekir. primaryButton öğesinin atlanması veya yanlış ayarlanması, iletişim kutusunun tamamının görünmesini engeller.

Bu hatayı düzeltmek için CardFixedFooter widget'ının doğru şekilde belirtilmiş bir primaryButton içerdiğinden emin olun.

Hatalı kart JSON snippet'ini görüntüle

Hata: fixedFooter nesnesinde primaryButton alanı belirtilmemiş. Bu durum iletişim kutusunun yüklenememesine veya açılmamasına neden oluyor.

    . . .
    "fixedFooter": {

        "onClick": {
          . . .
      },
      "secondaryButton": {
        . . .
        }
      }
    }
    . . .
    

Doğru kart JSON snippet'ini görüntüleme

Düzeltildi: fixedFooter artık bir primaryButton alanı belirtilmiş, böylece 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 onClick ayarı yanlış

CardFixedFooter widget'ı bulunan iletişim kutularında, herhangi bir düğmede onClick ayarının yanlış belirtilmesi veya atlanması, iletişim kutusunun kapanmasına, yüklenmemesine veya açılmamasına neden olur.

Bu hatayı düzeltmek için her düğmede doğru şekilde belirtilmiş bir onClick ayarı bulunduğundan emin olun.

Hatalı kart JSON snippet'ini görüntüle

Hata: primaryButton nesnesinde, yanlış yazılmış "parameters" dizisine sahip bir onClick alanı var. Bu durum, iletişim kutusunun yüklenememesine 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. Dolayısıyla 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 davranmıyor. Kapanabilir, açılabilir ancak yüklenmeyebilir veya açılamayabilir.

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 nesnesinde name alanı belirtilmemiş. Bu durum iletişim kutusunun kapatılması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 artık bir name alanı belirtilmiş, böylece iletişim kutusu beklendiği gibi çalışıyor.

    . . .
    {
      "textInput": {
        "label": "Name",
        "type": "SINGLE_LINE",
        "name": "contactName"
      }
    }
    . . .
    

İletişim kutusu açma, gönderme veya iptal etme işlemleri, eşzamansız uygulama mimarisiyle başarısız oluyor

Chat uygulamanız hata mesajı döndürüyorsa Şununla çalışırken Could not load dialog. Invalid response returned by bot. iletişim kutuları, bunun nedeni uygulamanızın aşağıdaki gibi eşzamansız bir mimari kullanır. Cloud Pub/Sub veya Mesaj Oluştur API yöntemi.

Bir iletişim kutusunu açmak, göndermek veya iptal etmek için Chat uygulamasından gelen eşzamanlı bir yanıt DialogEventType. Buna göre, diyaloglar uygulamalar tarafından desteklenmez eşzamansız bir mimari ile geliştirilmiştir.

Geçici bir çözüm olarak, kart mesajıyla karşılaştırabilirsiniz.

Diğer kart ve iletişim kutusu hataları

Bu sayfada açıklanan düzeltmeler uygulamanızın karşılaştığı kartla ilgili hatayı çözmezse 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, düzeltmenize yardımcı olacak açıklayıcı hata mesajları içerir.

Google Chat uygulaması hatalarını düzeltme konusunda yardım almak için Google Chat uygulamasıyla ilgili sorunları giderme ve düzeltme ve Chat uygulamalarında hata ayıklama başlıklı makalelere göz atın.