# 履歴を保存するアプリ内チャットの Chat API

> メッセージの保存基盤を作らずに、アプリに 1 対 1 とグループのチャットを追加できます。履歴、既読、未読数、オフライン時のプッシュ通知、モデレーションまで揃い、月間アクティブユーザー 500 人まで無料、その先は月 49 ドルから。

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

## チャット機能に必要なものが揃っています

### 保存された履歴、いつも正しい順序

すべてのメッセージは、誰かに通知される前に会話の次の番号を受け取ります。オフラインだった端末は手元の最後の番号以降を取りに行くだけなので、抜けも重複もありません。

### 既読と未読数

メンバーがどこまで読んだかを記録すると会話の全員に表示され、各ユーザーの受信箱には会話の一覧と未読数が並びます。

### 入力中、編集、取り消し、リアクション

誰が入力中かを表示し、メッセージの修正や取り消し、絵文字のリアクションもできます。変更は全メンバーにリアルタイムで届き、メッセージと一緒に保存されます。

### 離れている人にはプッシュ通知

新しいメッセージは、接続していないメンバーに Hibira Push で通知されます。Web、iOS、Android に対応し、送信者名と本文の 1 行目を表示します。

### ファイルと画像

添付は 1 件 25 MB まで。有効期限の短いリンクでストレージに直接アップロードするため、大きなファイルがあなたのサーバーを通りません。

### モデレーション機能つき

日本語や中国語にも効く NG ワードフィルター、期限で自動的に解除される BAN とミュート、メンバーからの通報をひとつの一覧でチームが確認できます。

### 日中韓に強い検索

単語の一部でも会話のメッセージを検索でき、大文字小文字や全角半角の違いも無視するため、日本語、中国語、韓国語、英語のどれでも使えます。

### ロールと社内メモ

メンバーにサポート担当やモデレーターなどのロールを付けられます。メモを特定のロールだけに限定でき、そのメンバーにだけ届き、ほかの人の未読にもなりません。

## しくみ

1. **あなたのサーバーが会話**とメンバーを作成します。署名付きリクエストで、署名方法は Hibira HTTP API のほかの部分と同じです。
2. **各ユーザーがサインイン**します。アプリがもともと開くリアルタイム接続を使い、チャットのイベントはユーザー自身のチャンネルに届くので、会話ごとのチャンネル認可は不要です。
3. **メッセージはリアルタイムに届き、保存されます。** サーバーがユーザーの代わりに送ることも、ページに短期のユーザートークンを渡して Chat API を直接呼ばせることもできます。

![Chat API で作った管理画面のチャットページ：会話一覧、メッセージ、オンライン状態。](https://hibira.io/portal/articles/filament-chat-ja-light.webp)

画面には [@hibira-io/chat-ui](https://hibira.io/ja/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` で追いつくためのメッセージ取得、既読、未読数つきのユーザー受信箱、検索、添付、ユーザートークン、モデレーション、今月の利用量。新しいメッセージごとに `chat_message` Webhook を呼ぶこともできます。 すべてのリクエスト、イベント、上限は[リファレンス](https://hibira.io/ja/chat-api)にあります。

## プラン

| プラン | 料金 | 月間アクティブユーザー | ファイル容量 | 向いている用途 |
| --- | --- | --- | --- | --- |
| 無料 | 0 ドル | 500 | 1 GB | チャット機能の開発とリリース |
| Chat 1K | 月 49 ドル | 1,000 | 5 GB | 成長中のコミュニティやマーケットプレイス |
| Chat 5K | 月 149 ドル | 5,000 | 25 GB | 毎日チャットが使われるアプリ |
| Chat 20K | 月 349 ドル | 20,000 | 100 GB | 大規模なコミュニティやサポートチーム |
| Chat 60K | 月 799 ドル | 60,000 | 300 GB | 大規模なチャット |

どのリアルタイムプランのアカウントにも月間アクティブユーザー 500 人が含まれ、Chat アドオンはプランとは別に課金されます。年払いなら 2 か月分無料です。ひと月の間にメッセージを送るか既読にしたユーザーがアクティブとして、すべてのアプリを通して数えられます。受け取るだけの人は数えません。[すべての料金](https://hibira.io/ja/pricing#chat-api)を見る。メッセージ数にハードな上限はありません。プランはアクティブユーザー 1 人あたり月平均約 500 件を想定しており、利用量がそれを大きく超える場合は、何かを変える前にご連絡します。ファイル容量がいっぱいになると、古い会話を削除するか上位プランを選ぶまで新しい添付ファイルは受け付けません。

## お使いの技術スタックで

- **React と素の JavaScript**：pusher-js の上で動く [@hibira-io/chat-ui](https://hibira.io/ja/guides/chat-ui) の会話ビューとクライアント。
- **Laravel と Filament**：[Filament プラグイン](https://hibira.io/ja/use-cases/filament)に、オンライン状態つきのチャットページが付属。
- **どのバックエンドでも**：リクエストの署名は Hibira HTTP API のほかの部分と同じなので、Pusher のサーバーライブラリの署名コードがそのまま使えます。
- **iOS、Android、Flutter**：イベントはリアルタイム SDK で、アプリを閉じている間のメッセージは Hibira Push で。

## よくある質問

### 月間アクティブユーザーとは？

暦月（UTC）の間にメッセージを送るか、会話を既読にしたユーザーです。すべてのアプリを通して 1 回だけ数えます。受け取るだけの人や、アプリを開いても読んでいない人は数えません。

### プランのユーザー数に達するとどうなりますか？

今月すでに数えられたユーザーはそのまま使えます。プランを超える新しいユーザーは、翌月になるか、より大きなアドオンを選ぶまで送信と既読でエラーになります。アドオンの変更はすぐに反映されます。

### メッセージはどれくらい保存されますか？

直近 30 日分は必ず保存されます。有料プランか Chat アドオンがあれば、それより古いメッセージはアーカイブされ、API からそのまま読めます。無料プランでアドオンがない場合は 30 日後に削除されます。

### Hibira のリアルタイムプランは必要ですか？

いいえ。無料プランを含むすべてのアカウントに月間アクティブユーザー 500 人が付きます。Chat API はリアルタイム機能と同じアカウント、アプリ、接続を使います。

### 自分のチャット画面を使えますか？

はい。API はふつうの JSON を返し、ふつうのイベントを送るので、どんな画面でも使えます。すぐ使える画面が欲しければ [@hibira-io/chat-ui](https://hibira.io/ja/guides/chat-ui) があります。

### データはどこに保存されますか？

メッセージはアジアに保存され、30 日より古いアーカイブは香港に保存されます。会話を削除すると、そのメッセージとアーカイブも削除されます。
