このドキュメントでは、本番環境でWhatsApp Business APIクライアントの単一インスタンスを設定する方法を示します。
開発者マシンでWhatsApp Business APIクライアントの単一インスタンスを設定していない場合は、「開発者セットアップ: 単一インスタンス」の手順に沿ってインスタンスを設定し、セットアップをテストしたうえで、このドキュメントに従って本番環境でWhatsApp Business APIクライアントを設定することをおすすめします。
開発者セットアップをすでに実行済みで、本番環境で同じ電話番号を再利用する場合は、このガイドの続きに進む前にマイグレーションガイドを参照してください。
このドキュメントの内容は、新しい電話番号を使用するフレッシュインストールを前提としています。
以下が必要です。
MySQL 5.7.xxまたはPostgreSQL 10.6/9.6.x/9.5.xが必要です。
データベースのパスワードには?{}&~!()^=のいずれの文字も使用できません。
これらのいずれかの文字を使用すると、設定が失敗する可能性があります。
また、MySQL 8との既知の互換性の問題もあります。現時点では、最新バージョンの使用は避けてください。現在修正に取り組んでおります。
biz
ディレクトリを作成するWhatsApp Business APIクライアント用に選択した場所で次のコマンドを実行します。
mkdir ~/biz; cd ~/biz;
WhatsApp-Business-API-Setup-Scripts GithubリポジトリのInstallationディレクトリにあるprod-docker-compose.yml
およびdb.env
構成ファイルのクローンを、ステップ1で作成した~/biz
ディレクトリに作成します。
WA_API_VERSION
環境変数を設定する次のコマンドを使用して、WA_API_VERSION
環境変数を現在のバージョンに設定します。
export WA_API_VERSION=current-whatsapp-version
~/biz
ディレクトリにあるdb.env
ファイル内のデータベース環境変数を変更して、使用しているMySQL/PostgreSQL構成を反映させます。
WA_DB_ENGINE=MYSQL | PGSQL WA_DB_HOSTNAME=your-database-server WA_DB_PORT=your-database-server-port WA_DB_USERNAME=your-database-username WA_DB_PASSWORD=your-database-password
prod-docker-compose.yml
ファイルで定義されているローカルメディアボリューム(デフォルトではwhatsappMedia:/usr/local/wamedia
)は、メディアファイルを格納するために使用されます。デフォルトでは、このボリュームはDockerマシンのディレクトリにマウントされます。代わりに、メディアボリュームをホストディレクトリにマウントすることを選択できます。メディアボリュームのマウントポイントを変更するには、services
セクション内のボリューム定義を、whatsappMedia
から使用しているホストディレクトリのパスに変更します。
services: wacore: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ... waweb: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ...
1つのWebappコンテナと1つのCoreappコンテナでWhatsApp Business APIクライアントを起動するには、次のコマンドを実行します。
docker-compose -f prod-docker-compose.yml up -d
結果の出力は次のようになります。
Creating biz_wacore_1 ... done Creating biz_waweb_1 ... done
次のコマンドを実行して、すべてのコンテナの状態がUPであることを確認します。
docker-compose -f prod-docker-compose.yml ps
結果の出力は次のようになります。
Name Command State Ports ------------------------------------------------------------------------------------------------- biz_wacore_1 /opt/whatsapp/bin/wait_on_ ... Up 6250/tcp, 6251/tcp, 6252/tcp, 6253/tcp biz_waweb_1 /opt/whatsapp/bin/wait_on_ ... Up 0.0.0.0:9090->443/tcp
デフォルトでは、Webappコンテナはポート9090
で実行されます。
FacebookのPostmanコレクションをダウンロードして構成すると、コマンドラインを使用せずにWhatsApp Business APIを操作できます。
WhatsApp Business APIクライアントにヘルスチェックを実行するには、health
ノードへのAPI呼び出しを使用します。
結果の出力は次のようになります。
{ "health": { "gateway_status": "unregistered" } }
WhatsApp Business APIクライアントがまだ登録されていないので、応答にはgateway_status
としてunregistered
のgateway_status
が表示されます。
WhatsApp Business APIクライアントを登録するには、account
ノードに対するAPI呼び出しを使用します。
登録の完了後、health
ノードへのAPI呼び出しを使用して、WhatsApp Business APIクライアントにもう一度ヘルスチェックを実行します。
結果の出力は次のようになります。
{ "health": { "gateway_status": "connected" } }
gateway_status
がconnected
の場合は、Coreappコンテナが連絡先チェックやメッセージ送信のためにWhatsAppサーバーに接続可能であることを意味しています。
本番環境のWhatsApp Business APIクライアントのモニタリングを設定することをおすすめします。
アップグレード処理中はダウンタイムが発生します。
アップグレードする前に、現在のアプリの設定をバックアップして、すぐに復旧して実行できるようにすることを強くおすすめします。「バックアップと復元」のドキュメントをご覧ください。
アップグレードは常に最も忙しくない時間帯に実行することをおすすめします。
WA_API_VERSION
環境変数を新規バージョンに変更する次のコマンドを使用して、WA_API_VERSION
環境変数を新しいバージョン番号に更新します。
export WA_API_VERSION=new-whatsapp-version
次のコマンドを実行して、Dockerコンテナを再起動します。
docker-compose -f prod-docker-compose.yml up -d
v2.23.x
以上にアップグレードする場合ダウンタイムを回避するため、アプリの実行中にデータベースをアップグレードできるデータベースアップグレードサービスが利用可能になりました。
dbupgrade-compose.ymlファイルには、コンテナのバージョンを示すフィールドがあります。
例:
services: dbupgrade: image: docker.whatsapp.biz/coreapp:v${WA_API_VERSION:-2.21.3}
インストール環境をアップグレードするには、次のようにWA_API_VERSION
環境変数を最新バージョンに設定して、dbupgrade-serviceコンテナを起動します。
WA_API_VERSION=new-whatsapp-version docker-compose -f dbupgrade-compose.yml up -d
注: 終了時に終了コードにかかわらずコンテナを再起動するオーケストレーションを使用している場合は、EXIT_ON_SUCCESS
環境変数をFALSE
に設定してサービスを開始し、終了コードが0
のときにコンテナが終了しないようにします。
データベースのアップグレードが成功すると、コンテナはコード0
で終了します。次のDockerコマンドを使用して、ステータスをトラッキングできます。
docker wait your-database-upgrade-container-name
このコマンドにより、dbupgrade-serviceコンテナの終了コードが出力されます。
次のようにWA_API_VERSION
環境変数を最新バージョンに設定して、CoreappとWebappのDockerコンテナを再起動します。
WA_API_VERSION=new-whatsapp-version docker-compose -f prod-docker-compose.yml up -d
2.29.3
以上にアップグレードする場合v2.29.1
、v2.29.2
からアップグレードしている場合、またはそれらのバージョンにアップグレード中に問題が発生したためにロールバックして安定性を確保することが必要になった場合は、v2.29.3
にアップグレードしてからWebapp Dockerコンテナに対して次のコマンドを実行することをおすすめします。
chown -R root your-media-directory/incoming your-media-directory/outgoing your-media-directory/shared
デフォルトのメディアディレクトリは、変更していなければ/usr/local/wamedia
です。
注:
v2.29.1
およびv2.29.2
における後方互換性の問題を修正するための、1回限りのアップグレードパスです。アンインストールする前に、現在のアプリの設定をバックアップすることを強くおすすめします。「バックアップと復元」のドキュメントをご覧ください。
すべてのコンテナを削除して開発環境をリセットする必要がある場合は、prod-docker-compose.yml
ファイルを配置したディレクトリから次のコマンドを実行します。
docker-compose -f prod-docker-compose.yml down
結果の出力は次のようになります。
Stopping biz_waweb_1 ... done Stopping biz_wacore_1 ... done Removing biz_waweb_1 ... done Removing biz_wacore_1 ... done
コンテナに加え、prod-docker-compose.yml
ファイルで定義されているすべてのボリュームも削除する場合は、-v
パラメーターを指定してdown
コマンドを実行します。
docker-compose -f prod-docker-compose.yml down -v
より効果的なトラブルシューティングを行うには、WADebugの使用をおすすめします。WADebugは、WhatsApp Business APIセットアップの潜在的な問題を検出し、より効率的にWhatsAppサポートにヘルプをリクエストできるようにするコマンドラインツールです。
WADebugを使用できない場合、または実行するとエラーが返される場合は、次のコマンドを実行してすべてのコンテナのログを収集してください。
docker-compose -f prod-docker-compose.yml logs > debug_output.txt
特定のサービスのログを収集するには、次のように、サービス名(waweb
またはwacore
)をdocker-compose logs
コマンドの末尾に追加します。
docker-compose -f prod-docker-compose.yml logs waweb > debug_output.txt
ログは、現在のディレクトリのdebug_output.txt
ファイルに作成されます。
このソフトウェアでは、LGPLv2.1でライセンス付与されているFFmpegのコードを使用しています。ソースはこちらからダウンロードできます。