Pusher, RabbitMQ, Evolutionで学ぶ:モダンなWhatsApp連携APIの設計と実装


Pusher, RabbitMQ, Evolutionで学ぶ:モダンなWhatsApp連携APIの設計と実装

EvolutionAPI/evolution-api

2025-10-17

ご質問ありがとうございます!「EvolutionAPI/evolution-api」(以下、「エボリューションAPI」と呼びます)は、オープンソースのWhatsApp連携APIです。これがソフトウェアエンジニアの皆さんにどのように役立つのか、導入方法の概要、そしてサンプルコードのイメージまで、分かりやすくフレンドリーにご紹介しますね。

エボリューションAPIは、ソフトウェアエンジニアにとって、WhatsAppをビジネスプロセスやアプリケーションに組み込むための強力なツールとなります。

顧客エンゲージメントの強化

リアルタイム通知
注文確認、配送状況の更新、リマインダーなどを、顧客が日常的に使っているWhatsAppへ自動送信できます。これにより、メールよりも高い開封率と即時性が期待できます。

カスタマーサポートの自動化
チャットボットを統合し、基本的な質問への対応やFAQを自動化することで、サポートチームの負担を減らし、24時間365日の対応を可能にします。

オムニチャネル戦略の実現

Webサイト、モバイルアプリ、CRMなど、他のプラットフォームとWhatsAppを連携させ、一貫した顧客体験を提供できます。

内製化とカスタマイズの自由度

オープンソースであるため、特定のビジネスニーズに合わせて機能を深くカスタマイズしたり、既存のシステムに密接に統合したりする自由度があります。ライセンス費用を気にせず利用できるのも大きなメリットです。

技術スタックとの親和性

バックエンド技術として pusher (リアルタイム通知)、rabbitmq (メッセージキュー)、evolution (API本体) など、モダンな技術を採用しており、スケーラブルなシステム構築に役立ちます。

エボリューションAPIは、主にDockerを利用して簡単に環境を構築することが推奨されています。

前提条件の確認

DockerとDocker Composeが動作する環境(Linux、macOS、Windowsなど)が必要です。

リポジトリのクローン

GitHubからプロジェクトのソースコードをローカルにダウンロードします。

git clone https://github.com/EvolutionAPI/evolution-api.git
cd evolution-api

設定ファイルの準備

環境変数や設定ファイル(例
.envファイル)を編集し、ポート番号やデータベース接続情報などを設定します。

Docker Composeで起動

docker-compose up -d コマンドを実行し、必要な全コンポーネント(API本体、RabbitMQ、Redisなど)を一度に起動します。

WhatsApp接続

APIのエンドポイントにアクセスし、QRコードを取得します。

自身のWhatsAppアカウントでそのQRコードをスキャンすることで、APIとWhatsAppが連携されます。

APIの利用開始

Swagger UIやPostmanコレクションを利用して、APIのエンドポイントをテストし、アプリケーションに組み込みます。

エボリューションAPIはRESTful APIとして提供されているため、どんなプログラミング言語からでもHTTPリクエストを送るだけで利用できます。ここでは、Node.js (JavaScript) を使った簡単なメッセージ送信の例をイメージしてみましょう。

これは、顧客への自動通知(例
注文が確定しました)などに使えます。

const axios = require('axios'); // HTTPリクエストライブラリ(Node.jsの場合)

// 設定情報
const EVOLUTION_API_URL = 'http://localhost:8080/message/sendText'; // 環境に合わせて変更
const INSTANCE_NAME = 'my-instance-name'; // API起動時に設定したインスタンス名
const API_TOKEN = 'your-secret-token';   // API起動時に設定したトークン

// 送信するメッセージ情報
const recipientNumber = '5511999998888'; // 例: 送信先のWhatsApp番号(国コードから)
const messageText = 'ご注文ありがとうございます!商品の発送準備が完了しました。';

async function sendWhatsAppMessage() {
  try {
    const response = await axios.post(
      `${EVOLUTION_API_URL}/${INSTANCE_NAME}`,
      {
        number: recipientNumber,
        options: {
          delay: 1200, // 任意の遅延時間(ミリ秒)
        },
        textMessage: {
          text: messageText,
        },
      },
      {
        headers: {
          'Content-Type': 'application/json',
          'apikey': API_TOKEN, // 認証用のAPIキー
        },
      }
    );

    console.log('メッセージ送信成功:', response.data);
  } catch (error) {
    console.error('メッセージ送信エラー:', error.response ? error.response.data : error.message);
  }
}

sendWhatsAppMessage();

RESTful API
APIへのアクセスはHTTPのPOSTリクエストで行います。

インスタンス名
APIに登録したWhatsAppアカウント(インスタンス)を指定します。

apikey
セキュリティのための認証トークンをヘッダーに含めます。

ペイロード
送信先の番号とメッセージの内容をJSON形式でボディに含めます。


EvolutionAPI/evolution-api