Pusher, RabbitMQ, Evolutionで学ぶ:モダンなWhatsApp連携APIの設計と実装
ご質問ありがとうございます!「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形式でボディに含めます。