Dialogflow CX Messenger 執行作業

建立自訂資訊卡執行結果時,您可以建立文字回應自訂酬載。文字回應用於純文字和 Markdown 代理程式回應,而自訂酬載則用於豐富回應。所有回應類型的自訂酬載格式具有下列基本結構:

{
  "richContent": [
    [
      {
        "type": "type-id",
        ...
      },
      {
        "type": "type-id",
        ...
      }
    ],
    [
      {
        "type": "type-id",
        ...
      },
      {
        "type": "type-id",
        ...
      }
    ]
  ]
}

請注意,richContent 值允許一個外部和多個內部陣列。內部陣列中的回覆會綁定在單一視覺資訊卡中。如果外部陣列包含多個內部陣列,系統會顯示多個資訊卡,每個內部陣列一個。

其餘各子區段說明可為自訂酬載設定的各種回應類型。

文字回覆

Dialogflow Messenger 文字螢幕截圖

文字回應支援純文字和 Markdown。以下列舉幾個 Markdown 範例:

  • *Italic*
  • **Bold**
  • # Title
  • [Link text](Link URL)
  • ![](Image URL)

  • 表格:

    Header 1 | Header 2
    -------- | --------
    Cell 1   | Cell 2
    

資訊回應類型

Dialogflow Messenger 資訊類型螢幕截圖

資訊回應類型是使用者可點選或輕觸的簡單標題卡。

下表說明這些欄位:

名稱 類型 說明
type string 回應類型:「info」
title string 資訊卡標題
subtitle string 資訊卡副標題
image object 圖片
image.rawUrl string 圖片的公開網址
anchor object 錨點:在使用者點選元素時,要追蹤的元素
anchor.href string 錨點的網址
anchor.target string 錨點的目標,預設為 _blank

例如:

{
  "richContent": [
    [
      {
        "type": "info",
        "title": "Info item title",
        "subtitle": "Info item subtitle",
        "image": {
          "rawUrl": "https://example.com/images/logo.png"
        },
        "anchor": {
          "href": "https://example.com"
        }
      }
    ]
  ]
}

說明回應類型

Dialogflow Messenger 說明類型螢幕截圖

說明回應類型是資訊卡,可包含多行文字。

下表說明這些欄位:

名稱 類型 說明
type string 回應類型:「description」
title string 資訊卡標題
text array<string> 字串陣列,其中每個字串會在新的一行中顯示

例如:

{
  "richContent": [
    [
      {
        "type": "description",
        "title": "Description title",
        "text": [
          "This is text line 1.",
          "This is text line 2."
        ]
      }
    ]
  ]
}

圖片回應類型

Dialogflow Messenger 圖片類型螢幕截圖

圖片回應類型是使用者可點選或輕觸的圖片資訊卡。回應類型支援參考方塊,可將圖片來源設為錨定連結,並搭配簡短的說明文字和圖示。

下表說明這些欄位:

名稱 類型 說明
type string 回應類型:「image」
rawUrl string 圖片的公開網址
accessibilityText string 圖片替代文字
reference.text string 參考方塊中要顯示的文字
reference.anchor.href string 參考方塊的網址
reference.anchor.target string 參考方塊中定位元素的目標,預設為 _blank
reference.image.rawUrl string 要顯示在參考方塊中的圖片

例如:

{
  "richContent": [
    [
      {
        "type": "image",
        "rawUrl": "https://example.com/images/logo.png",
        "accessibilityText": "Example logo",
        "reference": {
          "text": "Logo",
          "anchor": {
            "href": "https://example.com/images/logo.png"
          },
          "image": {
            "rawUrl": "https://example.com/images/logo_small.png"
          }
        }
      }
    ]
  ]
}

您可以提供下列 CSS 變數:

屬性 輸入政策 預設值 說明
df-messenger-image-border-radius 選用 8px 圖片的邊框半徑

影片回應類型

Dialogflow Messenger 影片類型螢幕截圖

影片回應類型會轉譯影片元素,該元素可以是來自網址的直接影片、直接在 Messenger 中播放的影片,或是影片連結。

名稱 類型 說明
type string 回應類型:「video」
title string 影片標題 (選填)
source object 影片來源
source.type string 影片來源類型,linkraw
source.anchor object 錨點:在使用者點選元素時,要追蹤的元素
source.embeddedPlayer string link 類型的影片可以嵌入,而非連結至播放器的網頁。這項功能僅針對已知的玩家群組實作,且支援 youtube
source.thumbnail object 要顯示的 anchor 縮圖
source.thumbnail.rawUrl string 縮圖的網址
source.rawUrl string raw 類型影片的網址

例如:

{
  "richContent": [
    [
      {
        "type": "video",
        "source": {
          "type": "link",
          "anchor": {
            "href": "https://www.youtube.com/watch?v=cNfINi5CNbY"
          }
        }
      }
    ]
  ]
}

您可以提供下列 CSS 變數:

屬性 輸入政策 預設值 說明
df-messenger-video-width 選用 自動 影片寬度 (受 max-width\: 100% 限制)
df-messenger-video-height 選用 自動 影片的高度
df-messenger-video-embed-width 選用 560 像素 內嵌影片的寬度 (受 max-width\: 100% 限制)
df-messenger-video-embed-height 選用 315 像素 內嵌影片的高度
df-messenger-video-border 選用 1px solid #e0e0e0 影片邊框
df-messenger-video-border-radius 選用 8px 影片的邊框半徑

按鈕回應類型

Dialogflow Messenger 按鈕類型螢幕截圖

按鈕回應類型是使用者可點選或輕觸的圖示小按鈕。

下表說明這些欄位:

名稱 類型 說明
type string 回應類型:「button」
icon object 按鈕圖示
icon.type string Material Design 圖示庫中的圖示。預設圖示為箭頭
icon.color string 顏色十六進位代碼
image object 按鈕的圖片,優先採用 icon
image.rawUrl string 圖片的公開網址
mode string 選用,如果設為「阻擋」,使用者輸入內容會停用,直到使用者點選按鈕為止
text string 按鈕文字
anchor object 錨點:在使用者點選元素時,要追蹤的元素
anchor.href string 錨點的網址
anchor.target string 錨點的目標,預設為 _blank
event object 按下按鈕時觸發的 Dialogflow 事件

例如:

{
  "richContent": [
    [
      {
        "type": "button",
        "icon": {
          "type": "chevron_right",
          "color": "#FF9800"
        },
        "mode": "blocking",
        "text": "Button text",
        "anchor": {
          "href": "https://example.com"
        },
        "event": {
          "event": ""
        }
      }
    ]
  ]
}

您可以提供下列 CSS 變數:

屬性 輸入政策 預設值 說明
df-messenger-button-border 選用 按鈕邊框
df-messenger-button-border-radius 選用 8px 按鈕的邊框半徑
df-messenger-button-font-color 選用 #1f1f1f 按鈕的文字顏色
df-messenger-button-font-family 選用 「Google Sans」、「Helvetica Neue」、無襯線 按鈕的字型系列
df-messenger-button-font-size 選用 14px 按鈕的字型大小
df-messenger-button-padding 選用 12px 按鈕的邊框
df-messenger-button-icon-spacing 選用 12px 按鈕圖示和文字之間的間距
df-messenger-button-icon-font-size 選用 24px 按鈕圖示的大小
df-messenger-button-image-size 選用 24px 按鈕圖片的大小
df-messenger-button-image-offset 選用 0 按鈕圖片的偏移量,可讓負值偏移邊距
df-messenger-button-text-align 選用 中心 按鈕的文字對齊方式
df-messenger-button-text-wrap 選用 正常 使用 nowrap 禁止多行按鈕

清單回應類型

Dialogflow Messenger 清單類型螢幕截圖

清單回應類型是卡片,使用者可從中選取多個選項。

回應包含 listdivider 回應類型的陣列。下表說明 list 類型:

名稱 類型 說明
type string 回應類型:「list」
title string 選項名稱
subtitle string 選項副標題
event object 點選選項時觸發的 Dialogflow 事件
anchor object 錨點:在使用者點選元素時,要追蹤的元素
anchor.href string 錨點的網址
anchor.target string 錨點的目標,預設為 _blank
image object 圖片
image.rawUrl string 圖片的公開網址

下表說明 divider 類型:

名稱 類型 說明
type string 回覆類型:「divider」

例如:

{
  "richContent": [
    [
      {
        "type": "list",
        "title": "List item 1 title",
        "subtitle": "List item 1 subtitle",
        "event": {
          "event": ""
        }
      },
      {
        "type": "list",
        "title": "List item 2 title",
        "subtitle": "List item 2 subtitle",
        "event": {
          "event": ""
        }
      }
    ]
  ]
}

您可以提供下列 CSS 變數:

屬性 輸入政策 預設值 說明
df-messenger-list-padding 選用 16px 清單元素的邊框
df-messenger-list-inset 選用 0 清單元素的額外水平「內嵌」(除了邊框間距),用於控制元素之間邊框的擴展
df-messenger-list-spacing 選用 10px 清單元素之間的垂直間距
df-messenger-list-border-bottom 選用 1px solid #e0e0e0 清單元素之間的邊框

摺頁回應類型

Dialogflow Messenger 摺疊式螢幕截圖

摺疊式回應類型是小型資訊卡,使用者只要點選或輕觸即可展開,查看更多文字。

下表說明這些欄位:

名稱 類型 說明
type string 回應類型:「accordion」
title string 摺頁標題
subtitle string 摺疊式副標題
image object 圖片
image.rawUrl string 圖片的公開網址
text string 摺頁文字

例如:

{
  "richContent": [
    [
      {
        "type": "accordion",
        "title": "Accordion title",
        "subtitle": "Accordion subtitle",
        "image": {
          "rawUrl": "https://example.com/images/logo.png"
        },
        "text": "Accordion text"
      }
    ]
  ]
}

建議方塊回應類型

Dialogflow Messenger 方塊類型螢幕截圖

建議方塊回應類型會為使用者提供可點選的建議方塊清單。

下表說明這些欄位:

名稱 類型 說明
type string 回應類型:「chips」
options array<object> Option 物件陣列
options[].mode string 選用,如果設為「阻擋」,使用者輸入內容會停用,直到使用者點選方塊為止
options[].text string 選項文字
options[].image object 選用,圖片
options[].image.rawUrl string 圖片的公開網址選項
options[].anchor object 選用,點選元素時要追蹤的錨點
options[].anchor.href string 錨點的網址
options[].anchor.target string 錨點的目標,預設為 _blank

例如:

{
  "richContent": [
    [
      {
        "type": "chips",
        "options": [
          {
            "mode": "blocking",
            "text": "Chip 1",
            "image": {
              "rawUrl": "https://example.com/images/logo.png"
            },
            "anchor": {
              "href": "https://example.com"
            }
          },
          {
            "text": "Chip 2",
            "image": {
              "rawUrl": "https://example.com/images/logo.png"
            },
            "anchor": {
              "href": "https://example.com"
            }
          }
        ]
      }
    ]
  ]
}

您可以提供下列 CSS 變數:

屬性 輸入政策 預設值 說明
df-messenger-chips-spacing 選用 10px 方塊上方與上一個訊息之間的間距
df-messenger-chips-border-color 選用 #e0e0e0 方塊的邊框顏色
df-messenger-chips-border-color-hover 選用 #e0e0e0 色片游標懸停時的邊框顏色
df-messenger-chips-border-radius 選用 999 像素 方塊的邊框半徑
df-messenger-chips-background 選用 白色 方塊的背景
df-messenger-chips-background-hover 選用 rgba(68, 71, 70, 0.08) 游標懸停時的方塊背景
df-messenger-chips-padding 選用 6 像素 x 16 像素 方塊的邊距
df-messenger-chips-font-color 選用 黑色 方塊的文字顏色
df-messenger-chips-font-family 選用 「Google Sans」、「Helvetica Neue」、無襯線 方塊的字型系列
df-messenger-chips-font-size 選用 14px 方塊的文字大小
df-messenger-chips-font-weight 選用 正常 方塊的字型粗細
df-messenger-chips-font-weight-hover 選用 正常 當游標懸停在方塊上時,方塊的字型粗細
df-messenger-chips-box-shadow 選用 0 2px 2px 0 rgba(0, 0, 0, 0.24) 方塊陰影
df-messenger-chips-content-align 選用 flex-start 方塊中內容 (例如圖片) 的垂直對齊
df-messenger-chips-text-wrap 選用 nowrap 使用 normal 允許多行方塊

引用回應類型

Dialogflow Messenger 引文類型螢幕截圖

引文回應類型會為使用者提供可點選的引文連結清單。

下表說明這些欄位:

名稱 類型 說明
type string 回應類型:「match_citations」
citations array<object> 引文物件陣列
citations[].title string 引文標題
citations[].subtitle string 引文副標題 (目前已忽略)
citations[].anchor object 錨點:在使用者點選元素時,要追蹤的元素
citations[].anchor.href string 錨點的網址
citations[].anchor.target string 錨點的目標,預設為 _blank

例如:

{
  "richContent": [
    [
      {
        "type": "match_citations",
        "citations": [
          {
            "title": "Source 1",
            "subtitle": "",
            "anchor": {
              "href": "https://example.com/1"
            }
          },
          {
            "title": "Source 2",
            "subtitle": "",
            "anchor": {
              "href": "https://example.com/2"
            }
          }
        ]
      }
    ]
  ]
}

您可以提供下列 CSS 變數:

屬性 輸入政策 預設值 說明
df-messenger-citations-spacing 選用 10px 上一個訊息的引文上方空白
df-messenger-citations-message-display 選用 模塊 定義是否顯示引文上方的註解,允許的值為 blocknone
df-messenger-citations-message-font-color 選用 #041e49 參考資料上方附註的文字顏色
df-messenger-citations-message-font-size 選用 12px 參考資料上方附註的文字大小
df-messenger-citations-flex-direction 選用 引文的彈性方向屬性,建議使用 row (水平且有換行符號) 或 column (垂直)
df-messenger-citations-border-color 選用 #1a73e8 引文的邊框顏色
df-messeenger-citations-border-color-hover 選用 #1a73e8 滑鼠懸停時的引文邊框顏色
df-messenger-citations-border-radius 選用 4px 引用邊框半徑
df-messenger-citations-padding 選用 8px 引文的填充內容
df-messenger-citations-background 選用 白色 引用資料的背景
df-messenger-citations-background-hover 選用 rgba(68, 71, 70, 0.08) 游標懸停時的引用文字背景
df-messenger-citations-font-color 選用 #1a73e8 引文的文字顏色
df-messenger-citations-font-family 選用 「Google Sans」、「Helvetica Neue」、無襯線 引文的字型系列
df-messenger-citations-font-size 選用 11px 引用文字大小
df-messenger-citations-icon-font-size 選用 14px 引文圖示的文字大小
df-messenger-citations-font-weight 選用 正常 引用的字型粗細
df-messenger-citations-font-weight-hover 選用 正常 游標懸停時的引文字型粗細
df-messenger-citations-icon-spacing 選用 4px 引文中圖示與文字之間的間隔
df-messenger-citations-box-shadow 選用 引文的方塊陰影

檔案回應類型

Dialogflow Messenger 檔案類型螢幕截圖

檔案回應類型會轉譯包含可下載連結的檔案元素清單。

下表說明這些欄位:

名稱 類型 說明
type string 回應類型:「files」
files array<object> File 物件陣列
files[].name string 檔案名稱
files[].image object 檔案圖片
files[].image.rawUrl string 圖片的公開網址
files[].anchor object Anchor 下載檔案
files[].anchor.href string 錨點的網址
files[].anchor.target string 錨點的目標,預設為 _blank

例如:

{
  "richContent": [
    [
      {
        "type": "files",
        "files": [
          {
            "name": "instructions.pdf",
            "image": {
              "rawUrl":
                  "https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/cloud_download/default/24px.svg"
            },
            "anchor": {
              "href": "https://example.com/instructions.pdf"
            }
          },
          {
            "name": "data.csv",
            "image": {
              "rawUrl":
                  "https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/csv/default/24px.svg"
            },
            "anchor": {
              "href": "https://example.com/data.csv"
            }
          }
        ]
      }
    ]
  ]
}

您可以提供下列 CSS 變數

屬性 輸入政策 預設值 說明
df-messenger-files-spacing 選用 10px 檔案上方與前一個訊息之間的空白
df-messenger-files-distance 選用 8px 清單中檔案之間的距離
df-messenger-files-flex-direction 選用 檔案的 Flex 方向屬性,建議使用 row (水平且有換行符號) 或 column (垂直)
df-messenger-files-background 選用 白色 檔案的背景
df-messenger-files-border 選用 1px solid #e0e0e0 檔案邊框
df-messenger-files-border-radius 選用 999 像素 檔案的邊框半徑
df-messenger-files-box-shadow 選用 0 2px 2px 0 rgba(0, 0, 0, 0.24) 檔案的方塊陰影
df-messenger-files-padding 選用 6 像素 x 16 像素 檔案的填充
df-messenger-files-font-color 選用 #1f1f1f 檔案的文字顏色
df-messenger-files-font-family 選用 「Google Sans」、「Helvetica Neue」、無襯線 檔案的字型系列
df-messenger-files-font-size 選用 14px 檔案的文字大小
df-messenger-files-font-weight 選用 正常 檔案的字型粗細
df-messenger-files-background-hover 選用 白色 游標懸停時的檔案背景
df-messenger-files-border-hover 選用 1px solid #e0e0e0 游標懸停時的檔案邊框
df-messenger-files-font-weight-hover 選用 正常 游標懸停時的檔案字型粗細
df-messenger-files-image-offset 選用 0 0 0 -8px 左側圖片的偏移量
df-messenger-files-image-size 選用 18px 左側圖片的大小
df-messenger-files-text-spacing 選用 8px 左側圖片文字與右側文字圖示之間的距離
df-messenger-files-icon-offset 選用 0 -8px 0 0 右側下載圖示的偏移量
df-messenger-files-icon-size 選用 18px 右側下載圖示的大小
df-messenger-files-icon-font-color 選用 #444746 右側下載圖示的顏色

HTML 回應類型

Dialogflow Messenger html 類型螢幕截圖

HTML 回應類型會為使用者提供 HTML 訊息。

下表說明這些欄位:

名稱 類型 說明
type string 回應類型:「html」
html string 訊息的文字內容,支援 HTML

支援的 HTML 標記:

  • a - 錨點元素 (用於建立超連結)
  • b - 粗體元素 (用於將文字設為粗體)
  • i - 斜體元素 (用於斜體文字)
  • u - 底線元素 (用於為文字加上底線)
  • h1 - 標題 1 元素 (用於網頁的主要標題)
  • h2 - 標題 2 元素 (用於子標題)
  • h3 - 標題 3 元素 (用於子子標題)
  • p - 段落元素 (用於建立文字段落)
  • br - 換行符號元素 (用於在段落中建立換行符號)
  • table - 表格元素 (用於建立表格)
  • tr - 表格資料列元素 (用於在表格中建立資料列)
  • thead - 表格標題元素 (用於在表格中建立標題)
  • th - 表格標頭資料或儲存格元素 (用於在表格標頭列中建立儲存格)
  • tbody - 表格內文元素 (用於在表格中建立內文)
  • td - 表格資料或儲存格元素 (用於在資料表列中建立儲存格)
  • ul - 無序清單元素 (用於建立項目符號清單)
  • ol - 排序清單元素 (用於建立編號清單)
  • li - 清單項目元素 (用於建立清單中的項目)
  • img - 圖片元素 (用於顯示圖片,請參閱 url-allowlist HTML 自訂)
  • div - 容器元素
  • span - 內嵌容器元素

例如:

{
  "richContent": [
    [
      {
        "type": "html",
        "html": "<b>Bold text</b> <i>Italic text</i> <u>Underlined text</u>"
      }
    ]
  ]
}

設定 HTML 和 Markdown 樣式

錨點元素 (HTML a 元素和 Markdown 連結) 可提供下列 CSS 變數:

屬性 輸入政策 預設值 說明
df-messenger-link-decoration 選用 底線 裝飾連結元素
df-messenger-link-font-color 選用 #0b57d0 未造訪連結元素的字型顏色
df-messenger-link-visited-font-color 選用 #0b57d0 已造訪連結元素的字型顏色
df-messenger-link-hover-font-color 選用 #0b57d0 游標懸停在連結元素上時的字型顏色
df-messenger-link-background 選用 透明 連結元素的背景
df-messenger-link-padding 選用 0 連結元素的邊框
df-messenger-link-border 選用 連結元素的邊框
df-messenger-link-border-radius 選用 0 連結元素的邊框半徑

針對表格元素 (HTML table 元素和 Markdown 表格),您可以提供下列 CSS 變數:

屬性 輸入政策 預設值 說明
df-messenger-table-font-size 選用 14px 表格元素中的文字大小
df-messenger-table-font-color 選用 #1f1f1f 表格元素中的文字顏色
df-messenger-table-align 選用 向左鍵 表格儲存格中的文字對齊
df-messenger-table-padding 選用 0 表格儲存格中的邊框間距
df-messenger-table-border-collapse 選用 分開 資料表的邊框摺疊模式,使用 separate 啟用 border-radius
df-messenger-table-border-radius 選用 0 表格邊框半徑
df-messenger-table-header-border-radius 選用 0 表格標題的邊框半徑
df-messenger-table-border-top 選用 表格列頂端的邊框
df-messenger-table-border-top-first 選用 第一個表格列的頂端邊框
df-messenger-table-border-bottom 選用 表格列的下方邊框
df-messenger-table-border-bottom-last 選用 最後一列表格的底部邊框
df-messenger-table-border-left 選用 表格儲存格的左框線
df-messenger-table-border-left-first 選用 列中第一個表格儲存格左邊框線
df-messenger-table-border-right 選用 表格儲存格右側的邊框
df-messenger-table-border-right-last 選用 一列中最後一個表格儲存格的右邊框線
df-messenger-table-background 選用 透明 表格列的背景
df-messenger-table-even-background 選用 透明 偶數資料列的背景
df-messenger-table-odd-background 選用 透明 資料列奇數的背景
df-messenger-table-header-font-size 選用 14px 表格標頭元素中的文字大小
df-messenger-table-header-font-weight 選用 粗體 表格標題元素中的字型粗細
df-messenger-table-header-font-color 選用 #1f1f1f 表格標頭元素中的文字顏色
df-messenger-table-header-align 選用 向左鍵 表格標頭儲存格中的文字對齊方式
df-messenger-table-header-padding 選用 0 表格標題儲存格中的邊框間距
df-messenger-table-header-border-top 選用 表格標題列頂端的邊框
df-messenger-table-header-border-bottom 選用 表格標題列的底部邊框
df-messenger-table-header-border-left 選用 表格標題列中儲存格左邊框線
df-messenger-table-header-border-left-first 選用 表格標題列第一個儲存格的左邊框線
df-messenger-table-header-border-right 選用 表格標題列中儲存格右側的邊框
df-messenger-table-header-border-right-last 選用 表格標題列中最後一個儲存格的右側邊框
df-messenger-table-header-background 選用 透明 表格標題列的背景

自訂範本回應類型

Dialogflow Messenger 自訂範本類型螢幕截圖

自訂範本回應類型會轉譯客戶網站上定義的自訂元素。這個元素不會放入資訊卡中,且一律獨立顯示。

下表說明這些欄位:

名稱 類型 說明
type string 回應類型:「custom_template」
name string 自訂元素的名稱
payload Object 要傳遞至自訂元素的酬載

例如:

{
  "richContent": [
    [
      {
        "type": "custom_template",
        "name": "custom-element-example",
        "payload": {
          "text": "Hello World"
        }
      }
    ]
  ]
}

在網站上,自訂元素必須使用回應 name 欄位中的確切名稱註冊。建構完成後 (但在 connectedCallback 之前),payload 欄位會以 dfPayload 的形式傳遞至自訂元素。欄位可能包含任意 JSON。此外,dfResponseId 會傳遞至元素。

以下是使用範例回應的客製元素實作範例:

class CustomElementExample extends HTMLElement {
  constructor() {
    super();
    // The `dfPayload` field will be provided before `connectedCallback` is
    // being called.
    this.dfPayload = null;
    // The `dfResponseId` field will be provided before `connectedCallback` is
    // being called.
    this.dfResponseId = null;
    // It is not strictly required but recommended to contain the custom
    // element in a shadow root.
    // https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot
    this.renderRoot = this.attachShadow({mode: 'open'});
  }

  /** Web component Lifecycle method. */
  connectedCallback() {
    const div = document.createElement('div');

    // The `.text` must match the payload's structure in `richContent.payload`.
    div.innerText = this.dfPayload.text;

    this.renderRoot.appendChild(div);
  }
}

(function() {
  // Registers the element. This name must match the name in
  // `richContent.payload`.
  customElements.define('custom-element-example', CustomElementExample);
})();

結合回應類型

Dialogflow Messenger 自訂資訊卡螢幕截圖

您可以使用 Dialogflow CX Messenger 的個別多媒體訊息元素,建構符合需求的自訂資訊卡。

以下是使用執行要求部分所列元素的範例:

{
  "richContent": [
    [
      {
        "type": "image",
        "rawUrl": "https://example.com/images/logo.png",
        "accessibilityText": "Dialogflow across platforms"
      },
      {
        "type": "info",
        "title": "Dialogflow",
        "subtitle": "Build natural and rich conversational experiences",
        "anchor": {
          "href": "https://cloud.google.com/dialogflow/docs"
        }
      },
      {
        "type": "chips",
        "options": [
          {
            "text": "Case Studies",
            "anchor": {
              "href": "https://cloud.google.com/dialogflow/case-studies"
            }
          },
          {
            "text": "Docs",
            "anchor": {
              "href": "https://cloud.google.com/dialogflow/docs"
            }
          }
        ]
      }
    ]
  ]
}

您可以提供下列 CSS 變數:

屬性 輸入政策 預設值 說明
df-messenger-card-background 選用 白色 自訂資訊卡的背景
df-messenger-card-padding 選用 16px 自訂資訊卡中元素的邊框
df-messenger-card-border 選用 1px solid #e0e0e0 自訂資訊卡的邊框
df-messenger-card-border-radius 選用 8px 自訂資訊卡的邊框半徑
df-messenger-card-border-top-left-radius 選用 8px 自訂資訊卡左上方的邊框半徑
df-messenger-card-border-top-right-radius 選用 8px 自訂資訊卡右上方的邊框半徑
df-messenger-card-border-bottom-left-radius 選用 8px 自訂資訊卡左下方的邊框半徑
df-messenger-card-border-bottom-right-radius 選用 8px 資訊卡右下方的邊框半徑
df-messenger-card-stack-border-top-left-radius 選用 8px 連續自訂卡片的左上方邊框半徑會覆寫左上方半徑
df-messenger-card-stack-border-top-right-radius 選用 8px 連續自訂資訊卡的右上角邊框半徑會覆寫右上角半徑
df-messenger-card-stack-border-bottom-left-radius 選用 8px 連續自訂資訊卡的左下框線半徑會覆寫左下半徑
df-messenger-card-stack-border-bottom-right-radius 選用 8px 連續自訂資訊卡的右下方邊框半徑會覆寫右下方半徑
df-messenger-card-box-shadow 選用 0 2px 2px 0 rgba(0, 0, 0, 0.24) 自訂資訊卡的方塊陰影

教戰手冊工具提供的多媒體內容

您可以使用 Playbook 工具,將多媒體內容傳送至 Dialogflow CX Messenger。

步驟 1:在代理程式中建立 addRichContent 工具

使用下列資料建立名為 addRichContent函式工具

工具輸入:

properties: {}
type: object

工具輸出內容:

properties:
  status:
    type: string
  reason:
    type: string
type: object

步驟 2:告訴服務專員如何使用這項工具

請在操作說明和範例中告知服務專員如何使用這項工具。

例如,在說明中加入以下內容:

-  Greet  the  user
-  Ask  the  user  what  their  favorite  color  is.
   At  the  same  time  run  ${TOOL:  addRichContent}  to  display  buttons
   for  blue,  red,  yellow,  and  green.
-  Thank  the  user

例如,建立以下範例:

範例螢幕截圖

請注意,如果要在以流程為基礎的虛擬助理中傳回自訂酬載,則可使用相同的語法來建立富內容。

步驟 3:定義 JavaScript

在代管 df-messenger 的網頁程式碼中,您需要建立 JavaScript 程式碼,定義可指示 df-messenger 轉譯富內容的函式。您也必須將該函式註冊至 df-messenger,讓系統在虛擬代理人需要時執行該函式。

請確認已宣告變數 dfMessenger,且指向 df-messenger 的例項。

以下是可用於此用途的程式碼範例:

const dfMessenger = document.querySelector('df-messenger');

function  addRichContent(customPayload)  {
  dfMessenger.renderCustomCard(customPayload.richContent);

  // add error handling

  return  Promise.resolve({  status:  "OK",  reason:  null  });
}

// substitute your own tool id

const  toolId  =  'projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID/tools/TOOL_ID'
dfMessenger.registerClientSideFunction(toolId,  addRichContent.name,  addRichContent);