# App 內聊天的 Chat API，訊息自動保存

> 不必自己做訊息儲存，就能在 App 加上一對一與群組聊天。歷史訊息、已讀回條、未讀數、離線推播與內容管理一次到位，每月 500 位活躍使用者免費，之後每月 49 美元起。

Source: https://hibira.io/zh-tw/chat

## 聊天功能需要的都在這裡

### 訊息保存，永遠照順序

每則訊息在通知任何人之前，都會先拿到對話裡的下一個序號。離線的手機回來時，只要拿它最後的序號之後的訊息，不會漏掉，也不會重複。

### 已讀回條與未讀數

成員標記讀到哪裡，對話裡的每個人都看得到；每位使用者的收件匣會列出他的對話和未讀數。

### 輸入中、編輯、收回與表情回應

顯示誰正在輸入，讓使用者修改或收回訊息，也能用表情符號回應。變更會即時送到每位成員，並跟著訊息保存。

### 離開時也收得到推播

新訊息會透過 Hibira Push 推播給沒有連線的成員，支援網頁、iOS 與 Android，內容是寄件者名稱和訊息的第一行。

### 檔案與圖片

每個附件最大 25 MB，透過短效連結直接上傳到儲存空間，大檔案不會經過你的伺服器。

### 內建內容管理

連中文和日文也適用的關鍵字過濾、會自動到期的封鎖與禁言，以及成員檢舉，全部集中在同一份清單給你的團隊處理。

### 懂中日韓文的搜尋

可以用詞的任何一部分搜尋對話裡的訊息，不分大小寫與全形半形，中文、日文、韓文和英文都適用。

### 角色與內部備註

可以替成員設定角色，例如客服或管理員。備註可以只給某個角色看：只有那些成員收得到，對其他人也不會算成未讀。

## 運作方式

1. **你的伺服器建立對話**和成員，用簽章請求，簽法和 Hibira HTTP API 其他部分相同。
2. **每位使用者登入** App 原本就會開的即時連線。聊天事件送到使用者自己的頻道，不必為每個對話授權頻道。
3. **訊息即時送出並保存。** 你的伺服器可以代使用者傳送，也可以發給頁面短效的使用者 Token，讓頁面直接呼叫 Chat API。

![用 Chat API 做的後台聊天頁：對話清單、訊息與上線狀態。](https://hibira.io/portal/articles/filament-chat-zh-TW-light.webp)

前端可以用 [@hibira-io/chat-ui](https://hibira.io/zh-tw/guides/chat-ui)，它提供現成的對話畫面，包含已讀標記、表情回應、檔案與內部備註：

```js
import { createChatClient } from '@hibira-io/chat-ui/hibira';
import { Chat, useChatConversation } from '@hibira-io/chat-ui/react';

const client = createChatClient({ appId: 'your-app-id', tokenUrl: '/hibira/token' });
const conversation = useChatConversation(client, 'trip-1', { pusher, me: userId });
return <Chat conversation={conversation} me={userId} />;
```

API 位於 `/apps/{app_id}/chat`：對話與成員、用 `after` 補齊的訊息、已讀標記、含未讀數的使用者收件匣、搜尋、附件、使用者 Token、內容管理與本月用量。每則新訊息也可以觸發你的 `chat_message` Webhook。所有請求、事件與限制請見[參考文件](https://hibira.io/zh-tw/chat-api)。

## 方案

| 方案 | 價格 | 每月活躍使用者 | 檔案空間 | 適合 |
| --- | --- | --- | --- | --- |
| 免費 | 0 美元 | 500 | 1 GB | 開發並上線聊天功能 |
| Chat 1K | 每月 49 美元 | 1,000 | 5 GB | 成長中的社群或交易平台 |
| Chat 5K | 每月 149 美元 | 5,000 | 25 GB | 每天都會聊天的 App |
| Chat 20K | 每月 349 美元 | 20,000 | 100 GB | 大型社群與客服團隊 |
| Chat 60K | 每月 799 美元 | 60,000 | 300 GB | 大規模聊天 |

每個帳號不論即時方案都含每月 500 位活躍使用者，Chat 加購與方案分開計費。年繳可免費 2 個月。使用者在一個月內傳送訊息或標記已讀就算活躍，跨你所有 App 合計；只收訊息的人不計入。查看[所有價格](https://hibira.io/zh-tw/pricing#chat-api)。訊息數量沒有硬性上限：方案以平均每位活躍使用者每月約 500 則訊息規劃，若用量遠高於此，我們會先與你聯繫再做任何調整。檔案空間用滿後，新附件會被拒絕，直到刪除舊對話或改選更大的方案。

## 適用你的技術棧

- **React 與原生 JavaScript**：[@hibira-io/chat-ui](https://hibira.io/zh-tw/guides/chat-ui) 的對話畫面與用戶端，建立在 pusher-js 上。
- **Laravel 與 Filament**：[Filament 外掛](https://hibira.io/zh-tw/use-cases/filament)提供現成的聊天頁與上線狀態。
- **任何後端**：請求的簽法和 Hibira HTTP API 其他部分相同，任何 Pusher 伺服器函式庫的簽章程式碼都能用。
- **iOS、Android 與 Flutter**：用即時 SDK 接收事件，App 關閉時的訊息由 Hibira Push 送達。

## 常見問題

### 什麼算每月活躍使用者？

在一個日曆月（UTC）內傳送訊息或標記對話已讀的使用者，跨你所有 App 只算一次。只收訊息、或打開 App 但沒有讀的人不計入。

### 用到方案的使用者上限會怎樣？

本月已計入的使用者照常使用。會超過方案的新使用者，在傳送和閱讀時會收到錯誤，直到下個月，或你改選更大的加購方案，改選後立即生效。

### 訊息會保存多久？

最近 30 天一定保留。有付費方案或 Chat 加購時，較舊的訊息會封存，API 照樣讀得到；免費方案且沒有加購時，30 天後刪除。

### 一定要有 Hibira 即時方案嗎？

不用。每個帳號都有每月 500 位活躍使用者，免費方案也一樣。Chat API 和你的即時功能共用同一個帳號、App 與連線。

### 可以用自己的聊天介面嗎？

可以。API 回傳一般的 JSON、送出一般的事件，任何介面都能用。想要現成的，可以用 [@hibira-io/chat-ui](https://hibira.io/zh-tw/guides/chat-ui)。

### 資料存在哪裡？

訊息存放在亞洲，超過 30 天的封存存放在香港。刪除對話會一併刪除它的訊息與封存。
