將一般聊天機器人整合至 CINNOX,可讓您連接任何第三方平台的聊天機器人,並在 CINNOX 生態系統內無縫處理客戶查詢。
除了現有的 JSON 格式回應外,CINNOX 現已支援一般聊天機器人的串流訊息(伺服器發送事件,SSE)。此功能可讓聊天機器人的回覆在對話中逐步渲染(逐個 token),無需等待完整回應一次性返回。
串流訊息為選用功能,且完全向下相容。現有的聊天機器人整合無需任何變更即可繼續運作。
此整合需要在 CINNOX 中設定目的地 URL、請求方法、選用參數及 HTTP 標頭。
串流訊息適用於以下情況:
若未啟用或不支援串流功能,CINNOX 將自動切換至標準的非串流 JSON 回應。
先決條件
只有同時滿足以下所有條件時,才會使用串流訊息:
{
"Accept": "text/event-stream"
}
注意:
外部全渠道(例如 WhatsApp、LINE、WeChat、Facebook 等)不支援串流功能,將永遠使用非串流的 JSON 回應。
建立一般聊天機器人的步驟:
填寫必要欄位以連接 CINNOX 與您的聊天機器人端點。
方法
HTTP 方法固定為 POST,無法變更。
此 HTTP 方法表示 CINNOX 將發送資料至您的伺服器以建立或更新資源。
URL(必填)
URL 參數(選用)
HTTP 標頭(選用)
啟用串流訊息(選用)
{
"Accept": "text/event-stream"
}
注意:
移除此標頭將會把聊天機器人轉換為標準的非串流 JSON 回應模式。
填寫一般聊天機器人的基本資訊區段:
注意:
若要使用真人坐席轉接功能,請確保已預先設定服務群組及人員分配。
所有欄位設定完成後,點擊建立。
完成必要欄位設定後,每當聊天機器人需要處理查詢時,CINNOX 就會向目的地聊天機器人發送請求。
請求範例
{
"query": "user message text",
"queryParams": {
"key": "value"
},
"inquiryID": "string",
"action": "input.unknown"
}
請求欄位說明
| 欄位 | 類型 | 說明 |
|---|---|---|
| query | 字串 | 訪客發送的訊息 |
| queryParams | 物件 | 在 URL 參數中設定的鍵值參數 |
| inquiryID | 字串 | 當訊息來自查詢聊天室時會顯示此欄位 |
| action | 字串 | 標準訊息永遠為input.unknown |
向下相容性
CINNOX 同時支援舊版請求格式:
{"queryResult":{"queryText":"..."}}
啟用串流訊息後,聊天機器人可使用伺服器發送事件(SSE)逐步返回回應。
串流文字訊息範例
{
"message": {
"type": 1,
"text": "partial text",
"streamType": "delta"
}
}
streamType欄位若串流回應中斷或無法完成,CINNOX 會自動處理此狀況並記錄錯誤。
根據不同情況:
根據查詢來源及管道的不同,CINNOX 可能會在請求負載中包含額外的上下文元數據。
此資訊可供您的聊天機器人用於了解查詢上下文,例如來源管道、訪客詳細資料或路由資訊。
可能的上下文欄位範例:
{
"tagType": "string",
"tagId": "string",
"tagName": "string",
"channelType": "string",
"channelId": "string",
"channelName": "string",
"channelSourceName": "string",
"channelPhoneNumber": "string",
"visitorName": "string",
"visitorPhone": "string",
"omniType": "string"
}
注意:
這些欄位僅供上下文參考。它們的存在可能因管道及設定而異,聊天機器人實作不應依賴任何特定欄位為必填項。
第三方聊天機器人必須將回應返回至 CINNOX,以便 CINNOX 據此回覆查詢。
CINNOX 支援一般聊天機器人的兩種回應類型:
📘 注意:
回應必須以 JSON 格式返回至 CINNOX。
啟用串流訊息時,回應將使用伺服器發送事件(SSE)傳送,但訊息物件結構保持不變。
文字訊息可讓聊天機器人以純文字回覆,或觸發特定動作。
| 鍵 | 類型 | 說明 |
|---|---|---|
| message.type | 數字 | 必須為 1,表示文字訊息 |
| message.text | 字串 | 文字內容或支援的動作關鍵字 |
{
"message": {
"type": 1,
"text": "Please contact our customer service support."
}
}
📘 注意:
啟用串流訊息(SSE)時:
- 僅支援文字訊息(message.type = 1)
- 不支援進階訊息
- 串流回應可使用streamType: "delta"逐步返回
進階訊息可讓聊天機器人回覆豐富的互動內容,例如格式化文字、按鈕及媒體檔案。
進階訊息適用於:
📘 進階訊息限制:
進階訊息由以下值識別:
| 鍵 | 類型 | 說明 |
|---|---|---|
| message.type | 數字 | 必須為 5,表示進階訊息 |
| message.advanced | 字串 | 必須為"AdvancedMessage" |
| 基本進階訊息範例(帶文字的氣泡): |
{
"message": {
"type": 5,
"advanced": "AdvancedMessage",
"advancedItems": [
{
"type": 1,
"items": [
{
"type": 9,
"title": "Title",
"text": "Body text",
"footer": "Footer text"
}
]
}
]
}
}
📘 進階訊息限制:
進階訊息僅支援非串流的 JSON 回應。
進階訊息支援以下格式:
| advanced.type | 格式 |
|---|---|
| 1 | 氣泡 |
| 2 | 輪播 |
| 3 | 快速回覆 |
| 4 | 清單 |
| 9 | 文字 |
📘 顯示順序要求
訊息內容必須按照以下順序顯示:
文字 → 媒體檔案 → 按鈕
文字
進階訊息可包含不同的文字樣式,例如標題、內文及頁尾。
| 鍵 | 類型 | 說明 |
|---|---|---|
| advanced.type | 數字 | 1 = 氣泡,2 = 輪播 |
| advanced.items.type | 數字 | 必須為 9,表示文字元件 |
| advanced.items.title | 字串 | 顯示在訊息中的標題 |
| advanced.items.text | 字串 | 主要內文內容 |
| advanced.items.footer | 字串 | 頁尾內容 |
📘 注意:
標題、內文及頁尾欄位最多支援 10,000 個字元。
按鈕
進階訊息可包含具有不同動作的按鈕。
| 鍵 | 類型 | 說明 |
|---|---|---|
| advanced.items.type | 數字 | 必須為 12,表示按鈕 |
| advanced.items.text | 數字 | 按鈕顯示文字(最多 20 個字元) |
| advanced.items.action.type | 字串 | 動作類型定義 |
| advanced.items.action.text | 字串 | 回傳文字或動作關鍵字 |
| advanced.items.action.url | 字串 | 當動作類型為 URL 時開啟的網址 |
支援的按鈕動作
媒體檔案
進階訊息可包含圖片、影片及音訊檔案。
| advanced.items.type | 媒體類型 |
|---|---|
| 10 | 圖片 |
| 11 | 影片 |
| 13 | 音訊 |
| 鍵 | 類型 | 說明 |
|---|---|---|
| advanced.items.fileUrl | 字串 | 可公開存取的媒體檔案 URL |
📘 支援的格式
- 圖片:JPEG、JPG、PNG、WebP
- 音訊:M4A、W4A、MP3、WAV、MPEG、AAC
- 影片:MP4、3GPP
最大檔案大小: 20 MB
進階訊息的範例
您現有的範例仍然有效,可以原樣保留:
每個範例都展示瞭如何結合不同的格式、按鈕和媒體元件來建立自訂的聊天機器人回覆。
1. 快速回覆
範例:快速回覆
{
"message": {
"type": 5,
"advanced": "AdvancedMessage",
"advancedItems": [
{
"type": 1,
"items": [
{
"type": 9,
"title": "Good Result Learning Center",
"text": "Your Exam Expert",
"footer": "Join us now!"
},
{
"type": 10,
"fileUrl": "https://www.grlc/teaching.png"
}
]
},
{
"type": 3,
"items": [
{
"type": 12,
"text": "Website",
"action": {
"type": 2,
"url": "https://www.grlc.com"
}
},
{
"type": 12,
"text": "Email",
"action": {
"type": 1,
"text": "[email protected]"
}
},
{
"type": 12,
"text": "Address",
"action": {
"type": 1,
"text": "Flat 3, 2/F, ABC Building, Castle Peak Road, Tsuen Wan, N.T."
}
}
]
}
]
}
}
下圖是根據上述範例鍵值產生的進階訊息回覆範例。

範例:氣泡按鈕 1
{
"message": {
"type": 5,
"advanced": "AdvancedMessage",
"advancedItems": [
{
"type": 1,
"items": [
{
"type": 10,
"fileUrl": "https://www.grlc/teaching.png"
},
{
"type": 12,
"text": "Button1",
"action": {
"type": 1,
"text": "123"
}
},
{
"type": 12,
"text": "Button2",
"action": {
"type": 2,
"url": "https://www.grlc.com"
}
}
]
}
]
}
}
下圖顯示根據上述範例鍵值,進階訊息在諮詢聊天中的呈現方式。

範例:氣泡按鈕 2
{
"message": {
"type": 5,
"advanced": "AdvancedMessage",
"advancedItems": [
{
"type": 1,
"items": [
{
"type": 9,
"title": "Title",
"text": "Body",
"footer": "Footer"
},
{
"type": 10,
"fileUrl": "https://www.grlc/teaching.png"
},
{
"type": 12,
"text": "Button1",
"action": {
"type": 1,
"text": "123"
}
},
{
"type": 12,
"text": "Button2",
"action": {
"type": 2,
"url": "https://www.grlc.com"
}
}
]
}
]
}
}
下圖顯示根據上述範例鍵值,進階訊息在諮詢聊天中的呈現方式。

範例:清單訊息
{
"message": {
"type": 5,
"advanced": "AdvancedMessage",
"advancedItems": [
{
"type": 4,
"items": [
{
"type": 9,
"title": "I am title",
"text": "I am subtitle"
},
{
"type": 12,
"title": "I am item title 1",
"text": "I am item description 1",
"action": {
"type": 1,
"text": "I am info key 1"
},
"items": [
{
"type": 10,
"fileUrl": "I am imageUri 1"
}
]
},
{
"type": 12,
"title": "I am item title 2",
"text": "I am item description 2",
"action": {
"type": 1,
"text": "I am info key2"
},
"items": [
{
"type": 10,
"fileUrl": "I am imageUri 2"
}
]
}
]
}
]
}
}Click Create after all fields are set.
下圖顯示根據上述範例鍵值,進階訊息在諮詢聊天中的呈現方式。

當啟用串流訊息(SSE)時,適用以下限制:
| 項目 | 限制 |
|---|---|
| 最大總回應時間 | 120 秒 |
| 每個串流事件的最大大小 | 1 MB |
| 最大累積回應大小 | 4 MB |
如果超過這些限制,CINNOX 可能會停止讀取回應。
Accept: text/event-stream HTTP 標頭的供應商將繼續使用標準的非串流 JSON 回應。Accept: text/event-stream 標頭即可。下一個請求將自動使用標準的 JSON 回應格式。