このプロジェクトについて
OpenWAは、Metaの公式Cloud APIに依存せずにWhatsAppメッセージを送受信するためのHTTPエンドポイントとWebhookを提供する、無料のオープンソースWhatsApp APIゲートウェイです。NestJS、TypeScript、Reactダッシュボードで構築されており、Dockerネイティブで簡単にデプロイできます。
アーキテクチャ
OpenWAはプラグイン可能なアーキテクチャを採用しています。データベースバックエンドはSQLite(ゼロ設定)またはPostgreSQLを選択でき、ストレージとマイグレーションはローカルファイルシステムまたはS3互換サービスを使用し、キャッシュはRedisによるオプションです。メディアファイルは自動的にストレージに保存されるのではなく、APIおよびWebhookのコンシューマーにインラインで返されます。
エンジン
2つのWhatsAppエンジンが利用可能で、それぞれに異なるトレードオフがあります。
- whatsapp-web.js:実際のヘッドレスChromiumインスタンスを駆動し、本物のWhatsApp Webトラフィックを模倣するため、BANリスクは低くなりますが、RAM使用量が多くなります(セッションあたり約300~500 MB)。
- Baileys:マルチデバイスWebSocketプロトコルを直接話し、メモリ消費が少なくなります(セッションあたり約30~80 MB)が、フィンガープリンティングが容易なためBANリスクが高くなります。
主な機能
- マルチセッション管理:1つのインスタンスで複数のWhatsAppアカウントを同時に実行できます。
- メッセージング:テキスト、メディア(画像、動画、音声、ドキュメント)、リアクション、メッセージ編集の送受信が可能。一括メッセージングにも対応。
- グループとチャンネル:グループの作成、参加、設定。ラベルの管理。WhatsAppチャンネル/ニュースレターのサポート。
- Webhook:HMAC署名検証とオプションのディスパッチ前フィルターを備えたリアルタイムイベント。
- API認証:オペレーターとビューアーのトークンによる、セッションスコープおよびチャットスコープのアクセス制御。これにより、統合を特定のセッションや個別のチャットに限定できます。
- 通話処理:call.receivedイベントとセッションごとの自動拒否(Baileysのみ)。
- インフラストラクチャ:Kubernetes用のヘルスチェック、バックエンド間のデータマイグレーション、セッションごとのプロキシサポート、設定可能なレート制限、CIDRホワイトリスト。
セキュリティ
本番用Dockerスタックは、dumb-initとgosuを介してNodeプロセスを非rootユーザーで実行し、ボリュームの所有権修正後に権限を降格させ、Dockerソケットへのアクセスはソケットを直接マウントするのではなく専用のプロキシサイドカーを経由してルーティングします。セキュリティに関するドキュメントはSECURITY.mdで提供されています。
統合
サンドボックス化された統合ファブリックを通じてChatwootとTypebot用の公式プラグインが利用可能で、n8nワークフロー自動化用のコミュニティノードも存在します。ioBrokerなどのサードパーティアダプターもサポートされています。
警告
OpenWAはMetaの公式APIではなくリバースエンジニアリングされたクライアントを通じて接続するため、アカウント制限やBANのリスクは常にゼロではありません。メンテナーは、失っても構わない専用の番号を使用すること、新しいアカウントを徐々にウォームアップすること、レート制限を尊重すること、重要なフローにはSMSやメールをフォールバックとして用意することを推奨しています。規制環境(医療、金融、EU/GDPRの文脈)では、代わりに公式のWhatsApp Cloud APIを使用すべきです。
はじめに
最も簡単な方法はDocker Composeです。リポジトリをクローンし、docker compose -f docker-compose.dev.yml up -dを実行してから、http://localhost:2785でダッシュボードとAPIにアクセスします。本番デプロイでは、composeプロファイルを介してPostgreSQL、Redis、MinIOを追加できます。有効にすると、/api/docsでインタラクティブなSwaggerエンドポイントが利用可能です。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.