# Chat API cho tính năng nhắn tin trong ứng dụng, có lưu lịch sử

> Thêm chat một-một và chat nhóm vào ứng dụng mà không cần tự xây kho tin nhắn. Có lịch sử, xác nhận đã đọc, số tin chưa đọc, thông báo đẩy cho người dùng ngoại tuyến và kiểm duyệt, miễn phí cho 500 người dùng hoạt động mỗi tháng, sau đó từ 49 USD/tháng.

Source: https://hibira.io/vi/chat

## Mọi thứ một tính năng chat cần

### Lưu lịch sử, luôn đúng thứ tự

Mỗi tin nhắn nhận số tiếp theo của cuộc trò chuyện trước khi ai đó được báo. Điện thoại vừa ngoại tuyến chỉ cần lấy mọi tin sau số cuối cùng nó có, nên không mất tin và không hiện trùng.

### Xác nhận đã đọc và số tin chưa đọc

Thành viên đánh dấu đã đọc đến đâu, mọi người trong cuộc trò chuyện đều thấy, và hộp thư của từng người liệt kê các cuộc trò chuyện kèm số tin chưa đọc.

### Đang gõ, sửa, thu hồi và thả cảm xúc

Hiện ai đang gõ, cho phép sửa hoặc thu hồi tin nhắn và thả emoji. Thay đổi đến mọi thành viên tức thì và được lưu cùng tin nhắn.

### Đẩy thông báo cho người vắng mặt

Tin nhắn mới được đẩy qua Hibira Push tới các thành viên không kết nối, trên web, iOS và Android, kèm tên người gửi và dòng đầu của nội dung.

### Tệp và hình ảnh

Mỗi tệp đính kèm tối đa 25 MB, tải thẳng lên kho lưu trữ bằng liên kết ngắn hạn, nên tệp lớn không đi qua máy chủ của bạn.

### Kiểm duyệt có sẵn

Bộ lọc từ dùng được cả với tiếng Trung và tiếng Nhật, chặn và tắt tiếng tự hết hạn, cùng báo cáo từ thành viên gom vào một danh sách cho nhóm của bạn.

### Tìm kiếm hiểu tiếng Trung, Nhật, Hàn

Tìm tin nhắn trong cuộc trò chuyện bằng bất kỳ phần nào của từ, không phân biệt hoa thường hay ký tự toàn độ rộng, nên dùng được cho tiếng Trung, Nhật, Hàn và tiếng Anh.

### Vai trò và ghi chú nội bộ

Gán vai trò cho thành viên, như nhân viên hỗ trợ hay người kiểm duyệt. Ghi chú có thể giới hạn cho một vai trò: chỉ những thành viên đó nhận được, và không tính là chưa đọc với người khác.

## Cách hoạt động

1. **Máy chủ của bạn tạo cuộc trò chuyện** và thành viên bằng yêu cầu có chữ ký, giống phần còn lại của Hibira HTTP API.
2. **Mỗi người dùng đăng nhập** trên kết nối thời gian thực mà ứng dụng vốn đã mở. Sự kiện chat đến kênh riêng của người dùng, nên không cần cấp quyền kênh cho từng cuộc trò chuyện.
3. **Tin nhắn được gửi tức thì và được lưu.** Máy chủ có thể gửi thay người dùng, hoặc cấp cho trang một token người dùng ngắn hạn để gọi Chat API trực tiếp.

![Trang chat trong trang quản trị xây bằng Chat API: danh sách cuộc trò chuyện, tin nhắn và trạng thái trực tuyến.](https://hibira.io/portal/articles/filament-chat-vi-light.webp)

Cho phần giao diện, [@hibira-io/chat-ui](https://hibira.io/vi/guides/chat-ui) có sẵn khung trò chuyện với dấu đã đọc, cảm xúc, tệp và ghi chú nội bộ:

```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 nằm dưới `/apps/{app_id}/chat`: cuộc trò chuyện và thành viên, tin nhắn với `after` để bắt kịp, dấu đã đọc, hộp thư người dùng kèm số chưa đọc, tìm kiếm, tệp đính kèm, token người dùng, kiểm duyệt và mức dùng tháng này. Mỗi tin nhắn mới cũng có thể gọi webhook `chat_message` của bạn. [Tài liệu tham khảo](https://hibira.io/vi/chat-api) liệt kê mọi yêu cầu, sự kiện và giới hạn.

## Các gói

| Gói | Giá | Người dùng hoạt động mỗi tháng | Dung lượng tệp | Phù hợp với |
| --- | --- | --- | --- | --- |
| Miễn phí | 0 USD | 500 | 1 GB | Phát triển và ra mắt tính năng chat |
| Chat 1K | 49 USD/tháng | 1.000 | 5 GB | Cộng đồng hoặc sàn giao dịch đang lớn |
| Chat 5K | 149 USD/tháng | 5.000 | 25 GB | Ứng dụng có người chat mỗi ngày |
| Chat 20K | 349 USD/tháng | 20.000 | 100 GB | Cộng đồng lớn và đội hỗ trợ |
| Chat 60K | 799 USD/tháng | 60.000 | 300 GB | Chat quy mô lớn |

Mọi tài khoản đều có 500 người dùng hoạt động mỗi tháng, dù dùng gói thời gian thực nào, và gói bổ sung Chat được tính phí riêng. Trả theo năm được miễn phí 2 tháng. Một người dùng được tính là hoạt động trong tháng khi gửi tin nhắn hoặc đánh dấu đã đọc, cộng dồn trên mọi ứng dụng của bạn; người chỉ nhận tin không được tính. Xem [mọi mức giá](https://hibira.io/vi/pricing#chat-api). Không có giới hạn cứng về số tin nhắn: các gói được tính cho trung bình khoảng 500 tin nhắn mỗi người dùng hoạt động mỗi tháng, và chúng tôi sẽ liên hệ trước khi thay đổi bất cứ điều gì nếu mức dùng của bạn vượt xa con số đó. Khi dung lượng tệp đầy, tệp đính kèm mới sẽ bị từ chối cho đến khi bạn xóa các cuộc trò chuyện cũ hoặc chọn gói lớn hơn.

## Dùng được với công nghệ của bạn

- **React và JavaScript thuần**: khung trò chuyện và client trong [@hibira-io/chat-ui](https://hibira.io/vi/guides/chat-ui), chạy trên pusher-js.
- **Laravel và Filament**: trang chat có sẵn kèm trạng thái trực tuyến trong [plugin Filament](https://hibira.io/vi/use-cases/filament).
- **Mọi backend**: yêu cầu được ký giống phần còn lại của Hibira HTTP API, nên mã ký của bất kỳ thư viện máy chủ Pusher nào cũng dùng được.
- **iOS, Android và Flutter**: SDK thời gian thực cho sự kiện, và Hibira Push cho tin nhắn đến khi ứng dụng đóng.

## Câu hỏi thường gặp

### Thế nào là người dùng hoạt động mỗi tháng?

Người dùng gửi tin nhắn hoặc đánh dấu một cuộc trò chuyện đã đọc trong một tháng dương lịch (UTC), chỉ tính một lần trên mọi ứng dụng của bạn. Người chỉ nhận tin hoặc mở ứng dụng mà không đọc thì không tính.

### Điều gì xảy ra khi chạm giới hạn người dùng của gói?

Người dùng đã được tính trong tháng vẫn dùng bình thường. Người dùng mới làm vượt gói sẽ nhận lỗi khi gửi và đọc cho đến tháng sau, hoặc đến khi bạn chọn gói bổ sung lớn hơn, có hiệu lực ngay.

### Tin nhắn được giữ bao lâu?

30 ngày gần nhất luôn được giữ. Khi có gói trả phí hoặc gói bổ sung Chat, tin cũ hơn được lưu trữ và API vẫn trả về như trước; ở gói Miễn phí không có gói bổ sung, tin bị xóa sau 30 ngày.

### Có cần gói thời gian thực của Hibira không?

Không. Mọi tài khoản, kể cả gói Miễn phí, đều có 500 người dùng hoạt động mỗi tháng. Chat API dùng chung tài khoản, ứng dụng và kết nối với các tính năng thời gian thực của bạn.

### Có thể dùng giao diện chat của riêng tôi không?

Có. API trả về JSON thông thường và gửi sự kiện thông thường, nên giao diện nào cũng dùng được. Nếu muốn có sẵn, đã có [@hibira-io/chat-ui](https://hibira.io/vi/guides/chat-ui).

### Dữ liệu được lưu ở đâu?

Tin nhắn được lưu ở châu Á, và bản lưu trữ cũ hơn 30 ngày được giữ ở Hồng Kông. Xóa một cuộc trò chuyện sẽ xóa cả tin nhắn và bản lưu trữ của nó.
