疑難排解及修正資訊卡和對話方塊

本指南說明你可能會遇到的常見資訊卡相關錯誤,以及如何修正這些錯誤。


使用資訊卡建構工具,設計及預覽 Chat 應用程式的訊息和使用者介面:

開啟資訊卡建立工具

資訊卡錯誤的顯示方式

卡片錯誤會以多種方式顯示:

  • 資訊卡的某些部分 (例如小工具或元件) 無法顯示或以不尋常的方式顯示。
  • 未顯示整張資訊卡。
  • 對話方塊關閉、無法開啟或無法載入。

如果遇到這種行為,表示應用程式資訊卡有錯誤。

參考資料:正常運作且無錯誤的資訊卡訊息和對話方塊

在查看錯誤資訊卡示例之前,請先考慮這個正常運作的資訊卡訊息和對話方塊。為了說明每個錯誤範例及其修正方式,我們會在這個資訊卡的 JSON 中加入錯誤。

無錯誤的卡片訊息

以下是正常運作且無錯誤的資訊卡訊息,其中包含標題、區段和小工具 (例如修飾文字和按鈕),詳細說明聯絡資訊:

沒有錯誤的對話方塊

以下是可正常運作且無錯誤的對話方塊,可透過收集使用者資訊來建立聯絡人,並提供頁尾和可編輯的小工具,例如文字輸入、切換按鈕和按鈕:

錯誤:部分資訊卡未顯示

有時資訊卡會算繪,但您預期會看到的資訊卡部分不會顯示;可能的原因如下:

  • 未填寫必填的 JSON 欄位。
  • JSON 欄位的拼寫有誤或大小寫有誤。

原因:缺少必要的 JSON 欄位

在這個錯誤範例中,缺少必填的 JSON 欄位 title。因此,雖然資訊卡會算繪,但預期會顯示的資訊卡部分不會顯示。當省略必要欄位時,很難預測資訊卡的顯示方式。

如要修正這項錯誤,請新增必要的 JSON 欄位,在本例中為 title

如要瞭解是否需要 JSON 欄位,請參閱 Cards v2 參考文件。在本範例中,請參閱 CardHeadertitle 欄位說明。

我們來看看下面兩個範例:

範例 1:指定 subtitle 但省略必要的 title,會導致整個標頭顯示為空白:

由於缺少必填欄位「Title」,因此這張資訊卡的標頭不會顯示。
圖 1:這個資訊卡的標題未顯示,因為缺少必要欄位 title

查看錯誤的資訊卡 JSON 程式碼片段

錯誤:header 中缺少必填欄位 title

    . . .
    "header": {

            "subtitle": "Software Engineer"
          }
    . . .
    

查看正確的資訊卡 JSON 程式碼片段

已修正:必填欄位 titleheader 規格的一部分。

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

範例 2:指定 subtitleimageUrlimageTypeimageAltText,但省略必要的 title,會導致圖片正常顯示,但字幕不會顯示:

由於缺少標題這項必要欄位,因此這張資訊卡的標頭不會顯示。
圖 2:此資訊卡的標題未顯示副標題,因為缺少必要欄位 title,但圖片會照預期顯示。

查看錯誤的資訊卡 JSON 程式碼片段

錯誤:header 中缺少必填欄位 title

    . . .
    "header": {

            "subtitle": "Software Engineer",
            "imageUrl":
            "https://developers.google.com/chat/images/quickstart-app-avatar.png",
            "imageType": "CIRCLE",
            "imageAltText": "Avatar for Sasha",
          }
    . . .
    

查看正確的資訊卡 JSON 程式碼片段

已修正:必填欄位 titleheader 規格的一部分。

    . . .
    "header": {
            "title": "Sasha",
            "subtitle": "Software Engineer",
            "imageUrl":
            "https://developers.google.com/chat/images/quickstart-app-avatar.png",
            "imageType": "CIRCLE",
            "imageAltText": "Avatar for Sasha",
          }
    . . .
    

原因:JSON 拼字或大小寫有誤

在這個範例錯誤中,卡片 JSON 包含所有必要欄位,但其中一個欄位 imageUrl 的大小寫錯誤,應為 imageURL (大寫 R 大寫 L),導致發生錯誤:系統無法轉譯該欄位所指向的圖片。

如要修正這項錯誤和其他類似錯誤,請使用正確的 JSON 格式。在這種情況下,imageUrl 是正確的。如有疑問,請根據卡片參考文件檢查卡片 JSON。

由於缺少標題這項必要欄位,因此這張資訊卡的標頭不會顯示。
圖 3:這個資訊卡的標題未顯示副標題,因為缺少必要欄位 title,但圖片會照預期顯示。

查看錯誤的資訊卡 JSON 程式碼片段

錯誤:欄位 imageURL 的大小寫有誤。應為 imageUrl

    . . .
    "header": {
      "title": "Sasha",
      "subtitle": "Software Engineer",
      "imageURL":
      "https://developers.google.com/chat/images/quickstart-app-avatar.png",
      "imageType": "CIRCLE",
      "imageAltText": "Avatar for Sasha",
    }
    . . .
    

查看正確的資訊卡 JSON 程式碼片段

已修正:欄位 imageUrl 已正確使用大寫字母。

    . . .
    "header": {
            "title": "Sasha",
            "subtitle": "Software Engineer",
            "imageUrl":
            "https://developers.google.com/chat/images/quickstart-app-avatar.png",
            "imageType": "CIRCLE",
            "imageAltText": "Avatar for Sasha",
          }
    . . .
    

錯誤:未顯示整張資訊卡

有時資訊卡本身不會顯示,可能的原因如下:

原因:指定的 buttonListcardFixedFooter 有誤

如果資訊卡訊息或對話方塊包含錯誤指定的 ButtonList 小工具,或是 CardFixedFooter 小工具,且按鈕指定錯誤,則整張資訊卡不會顯示,且該位置不會顯示任何內容。規格不正確可能包括缺少欄位、拼寫或大寫錯誤的欄位,或是結構不正確的 JSON (例如缺少半形逗號、引號或大括號)。

如要修正這項錯誤,請根據卡片參考文件檢查卡片 JSON。特別是,請將任何 ButtonList 小工具與 ButtonList 小工具指南進行比較。

範例:ButtonList 小工具指南中,如果在第一個按鈕中傳遞不完整的 onClick 動作,則整張資訊卡就無法轉譯。

查看錯誤的資訊卡 JSON 片段

錯誤:onClick 物件未指定任何欄位,因此不會顯示整張資訊卡。

    . . .
    {
      "buttonList": {
        "buttons": [
          {
            "text": "Share",
            "onClick": {


              }
            }
          },
          {
            "text": "Edit",
            "onClick": {
              "action": {
                "function": "goToView",
                "parameters": [
                  {
                    "key": "viewType",
                    "value": "EDIT",
                  }
                ],
              }
            }
          },
        ],
      },
    }
    . . .
    

查看正確的資訊卡 JSON 程式碼片段

已修正:onClick 物件現在有 openLink 欄位,因此資訊卡會如預期顯示。

    . . .
    {
      "buttonList": {
        "buttons": [
          {
            "text": "Share",
            "onClick": {
              "openLink": {
                "url": "https://example.com/share",
              }
            }
          },
          {
            "text": "Edit",
            "onClick": {
              "action": {
                "function": "goToView",
                "parameters": [
                  {
                    "key": "viewType",
                    "value": "EDIT",
                  }
                ],
              }
            }
          },
        ],
      },
    }
    . . .
    

錯誤:對話方塊關閉、停滯或無法開啟

如果對話方塊發生異常關閉、無法載入或無法開啟的情形,很可能是卡片介面發生問題。

最常見的原因如下:

原因:CardFixedFooter 沒有 primaryButton

在含有 CardFixedFooter 小工具對話方塊中,您必須指定 primaryButton,其中包含文字和顏色。如果省略 primaryButton 或設定不正確,整個對話方塊就不會顯示。

如要修正這項錯誤,請確認 CardFixedFooter 小工具包含正確指定的 primaryButton

查看錯誤的資訊卡 JSON 片段

錯誤:fixedFooter 物件未指定 primaryButton 欄位,導致對話方塊無法載入或開啟。

    . . .
    "fixedFooter": {

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

查看正確的資訊卡 JSON 程式碼片段

已修正:fixedFooter 現已指定 primaryButton 欄位,因此對話方塊可正常運作。

    . . .
    "fixedFooter": {
      "primaryButton": {
        "text": "Submit",
        "color": {
          "red": 0,
          "blue": 1,
          "green": 0
        },
        "onClick": {
          . . .
      },
      "secondaryButton": {
        . . .
        }
      }
    }
    . . .
    

原因:FixedFooter 中的 onClick 設定不正確

對話方塊中使用 CardFixedFooter 小工具時,如果在任何按鈕上錯誤指定 onClick 設定或省略設定,就會導致對話方塊關閉、無法載入或無法開啟。

如要修正這項錯誤,請確認每個按鈕都包含正確指定的 onClick 設定。

查看錯誤的資訊卡 JSON 片段

錯誤:primaryButton 物件含有拼錯的「parameters」陣列 onClick 欄位,導致對話方塊無法載入或開啟。

    . . .
    "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"
          }
        }
      }
    }
    . . .
    

查看正確的資訊卡 JSON 程式碼片段

已修正:primaryButton 物件具有 onClick 欄位,其中的「parameters」陣列拼寫正確,因此對話方塊可正常運作。

    . . .
    "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"
          }
        }
      }
    }
    . . .
    

原因:TextInput 沒有 name

如果對話方塊包含排除 name 欄位的 TextInput 小工具,對話方塊的運作方式就會不如預期。應用程式可能會關閉、開啟但無法載入,或無法開啟。

如要修正這項錯誤,請確認每個 TextInput 小工具都包含適當的 name 欄位。請確認資訊卡中的每個 name 欄位皆不重複。

查看錯誤的資訊卡 JSON 片段

錯誤:textInput 物件未指定 name 欄位,導致對話方塊關閉、無法載入或無法開啟。

    . . .
    {
      "textInput": {
        "label": "Name",
        "type": "SINGLE_LINE",

      }
    }
    . . .
    

查看正確的資訊卡 JSON 程式碼片段

已修正:textInput 現已指定 name 欄位,因此對話方塊可正常運作。

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

在非同步應用程式架構中,對話方塊開啟、提交或取消動作失敗

如果 Chat 應用程式在使用對話框時傳回錯誤訊息 Could not load dialog. Invalid response returned by bot.,可能是因為應用程式使用非同步架構,例如 Cloud Pub/SubCreate Message API 方法。

開啟、提交或取消對話方塊時,Chat 應用程式必須透過 DialogEventType 傳送同步回應。因此,使用非同步架構建構的應用程式不支援對話方塊。

如要解決這個問題,請考慮改用資訊卡訊息,而非對話方塊。

其他資訊卡和對話方塊錯誤

如果本頁所述的修正方式無法解決應用程式發生的卡片相關錯誤,請查詢應用程式的錯誤記錄。查詢記錄有助於找出資訊卡 JSON 或應用程式程式碼中的錯誤,而且記錄會提供描述性錯誤訊息,協助您修正錯誤。

如需 Google Chat 應用程式錯誤的修正說明,請參閱「排解 Google Chat 應用程式問題並修正錯誤」和「對 Chat 應用程式偵錯」。