Configurazione di produzione: singola istanza

Questo documento mostra come configurare una singola istanza del client dell'API di WhatsApp Business in produzione.

Se non lo hai già fatto, è consigliabile configurare una singola istanza del client dell'API di WhatsApp Business su una macchina per sviluppatori seguendo le istruzioni in Configurazione sviluppatore: singola istanza per testare la tua configurazione prima di seguire questo documento per configurare il client dell'API di WhatsApp Business in produzione.

Per completare la configurazione iniziale, controlla i nostri requisiti e segui questi passaggi:

  1. Creazione di una directory biz per gli script di configurazione
  2. Acquisisci i file di configurazione del client dell'API di WhatsApp Business
  3. Imposta la variabile ambientale WA_API_VERSION
  4. Impostazione delle variabili ambientali del database
  5. Configurazione del volume dei contenuti multimediali locali
  6. Avvio del client dell'API di WhatsApp Business
  7. Verifica dell'esecuzione dei contenitori
  8. Esecuzione di un controllo integrità
  9. Registrazione del client dell'API di WhatsApp Business
  10. Esecuzione di un secondo controllo integrità

Dopo aver configurato completamente l'istanza, puoi scegliere di aggiornarla. Per disinstallare il client, segui questi passaggi.

Prima di iniziare

Se hai già eseguito una configurazione per sviluppatori e desideri riutilizzare il numero di telefono in produzione, consulta la Guida alla migrazione prima di proseguire con le sezioni rimanenti di questo documento.

Il contenuto di questo documento si basa sul presupposto di una nuova installazione con un nuovo numero di telefono.

Ecco cosa ti servirà:

È richiesto MySQL 5.7.xx oppure PostgreSQL 13.x/12.x/11.x.

La password del database non deve contenere alcuno di questi caratteri: ?{}&~!()^=

Il mancato rispetto di queste indicazioni potrebbe determinare l'esito negativo della configurazione.

Esiste anche un noto problema di compatibilità con MySQL 8. Evita di usare l'ultima versione per ora, stiamo lavorando attivamente per implementare una correzione.

Install Docker Desktop

To install Docker Desktop on your developer machine:

  1. Navigate to the Docker website.
  2. If you do not have an existing Docker account, create one by clicking on Sign Up.
  3. After you have created your account, you will be directed to the Docker download page.
  4. Download Docker Desktop based on your OS (This should be automatically detected and presented as the default option).

The remaining steps are based on macOS and should be very similar for Linux or Windows 10.

To install Docker using macOS:

  1. Install the package (docker.dmg for macOS).
  2. After extraction, Finder will pop-up and you will be presented with a dialog that instructs you to drag the Docker icon to Applications. Drag Docker icon to the Application folder in Finder.
  3. In Applications launch Docker and then click the Open button.
  4. You may be prompted to enter your password Docker needs priviledged/administrator access.
  5. Docker will present you with a tutorial, you can click Start to launch a tutorial or you can click Skip Tutorial to start using Docker.

Verify Docker Compose is installed

Docker Compose is a plugin that is bundled with Docker Desktop and should have installed automatically. For more information about using or Docker Compose, see Overview of Docker Compose. If for some reason Docker Compose was not installed, you can install it by following the instructions located at Install Docker Compose.

Configurazione iniziale del client dell'API di WhatsApp Business

Passaggio 1: creazione di una directory biz per gli script di configurazione

Esegui il codice seguente nella posizione che preferisci per il client dell'API di WhatsApp Business:

mkdir ~/biz; cd ~/biz;

Passaggio 2: acquisizione dei file di configurazione del client dell'API di WhatsApp Business

Clona i file di configurazione prod-docker-compose.yml e db.env dalla directory Installazione del repository GitHub WhatsApp-Business-API-Setup-Scripts nella directory ~/biz che hai creato nel Passaggio 1.

Passaggio 3: impostazione della variabile ambientale WA_API_VERSION

La variabile ambientale WA_API_VERSION deve essere impostata sulla versione corrente mediante:

export WA_API_VERSION=current-whatsapp-version

Passaggio 4: impostazione delle variabili ambientali del database

Modifica le variabili ambientali del database nel file db.env nella directory ~/biz per riflettere la tua configurazione 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

Passaggio 5: configurazione del volume dei contenuti multimediali locali

Il volume dei contenuti multimediali locali (whatsappMedia:/usr/local/wamedia per impostazione predefinita) definito nel file prod-docker-compose.yml viene utilizzato per la memorizzazione dei file multimediali. Per impostazione predefinita, il volume viene montato su una directory nella macchina Docker. In alternativa, puoi scegliere di montare il volume dei contenuti multimediali su una directory host. Per modificare il punto di montaggio del volume dei contenuti multimediali, modifica la definizione di volume all'interno della sezione services da whatsappMedia al percorso della directory host utilizzata.

services:
  wacore:
    ...
    volumes:
      - /your-local-media-volume-path:/usr/local/wamedia
    ...          
  waweb:
    ...
    volumes:
      - /your-local-media-volume-path:/usr/local/wamedia
    ... 

Passaggio 6: avvio del client dell'API di WhatsApp Business

Per avviare il client dell'API di WhatsApp Business con 1 contenitore Webapp e 1 contenitore Coreapp, esegui il seguente comando:

docker-compose -f prod-docker-compose.yml up -d

L'output risultante dovrebbe essere simile al seguente:

Creating biz_wacore_1 ... done
Creating biz_waweb_1  ... done

Passaggio 7: verifica dell'esecuzione dei contenitori

Puoi controllare che tutti i contenitori abbiano uno stato UP eseguendo il seguente comando:

docker-compose -f prod-docker-compose.yml  ps

L'output risultante dovrebbe essere simile al seguente:

     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

Per impostazione predefinita, il contenitore Webapp verrà eseguito sulla porta 9090.

Passaggio 8: esecuzione di un controllo integrità

Puoi scaricare e configurare la nostra raccolta Postman per interagire con l'API di WhatsApp Business se non desideri utilizzare la riga di comando.

Puoi eseguire un controllo integrità sul client dell'API di WhatsApp Business mediante una chiamata API al nodo health.

L'output risultante dovrebbe essere simile al seguente:

{
    "health": {
        "gateway_status": "unregistered"
    }
}

La risposta mostra un gateway_statusunregistered come gateway_status perché il client dell'API di WhatsApp Business non è ancora stato registrato.

Passaggio 9: registrazione del client dell'API di WhatsApp Business

Puoi registrare il tuo client dell'API di WhatsApp Business mediante una chiamata API al nodo account.

Passaggio 10: esecuzione di un secondo controllo integrità

Esegui un altro controllo integrità sul client dell'API di WhatsApp Business mediante una chiamata all'API al nodo health dopo il completamento della registrazione.

L'output risultante dovrebbe essere simile al seguente:

{
    "health": {
        "gateway_status": "connected"
    }
}

Il valore connected del gateway_status indica che il contenitore Coreapp è in grado di connettersi al server WhatsApp per la verifica dei contatti e l'invio di messaggi.

È consigliabile configurare il monitoraggio per il client dell'API di WhatsApp Business di produzione.

Aggiornamento del client dell'API di WhatsApp Business

Si verificherà un tempo di inattività durante il processo di aggiornamento.

Si consiglia vivamente di eseguire il backup delle impostazioni correnti dell'app prima dell'aggiornamento per assicurarsi che il processo sia rapido ed efficace. Segui la documentazione su backup e ripristino.

È sempre consigliabile eseguire gli aggiornamenti negli orari di minor attività.

Passaggio 1: modifica della variabile ambientale WA_API_VERSION alla nuova versione

La variabile ambientale WA_API_VERSION deve essere aggiornata al nuovo numero di versione mediante:

export WA_API_VERSION=new-whatsapp-version

Passaggio 2: riavvio dei contenitori Docker

Riavvia i contenitori Docker eseguendo il seguente comando:

docker-compose -f prod-docker-compose.yml up -d

Per gli utenti del database MySQL che eseguono l'aggiornamento alla versione v2.23.x e successive

Ora puoi avvalerti di un servizio di aggiornamento database per aggiornare il tuo database mentre l'app è ancora in esecuzione, evitando così tempi di inattività.

Passaggio 1: download del file di configurazione

Il file dbupgrade-compose.yml contiene dei campi indicanti la versione dei contenitori.

Esempio:

services:
  dbupgrade:
    image: docker.whatsapp.biz/coreapp:v${WA_API_VERSION:-2.21.3}

Passaggio 2: avvio del contenitore

Per aggiornare un'installazione, avvia il contenitore dbupgrade-service con la variabile ambientale WA_API_VERSION impostata sull'ultima versione:

WA_API_VERSION=new-whatsapp-version docker-compose -f dbupgrade-compose.yml up -d

Nota: se utilizzi un'orchestrazione che riavvia il contenitore dopo l'uscita verificatasi indipendentemente dal codice di uscita, avvia il servizio con la variabile ambientale EXIT_ON_SUCCESS impostata su FALSE per impedire l'uscita dal contenitore quando il codice di uscita è 0.

Passaggio 3: attesa della conclusione dell'aggiornamento

Se l'aggiornamento del database è avvenuto correttamente, il contenitore uscirà con codice 0. Puoi usare il comando Docker seguente per monitorare lo stato:

docker wait your-database-upgrade-container-name

Questa operazione genererà il codice di uscita del contenitore dbupgrade-service.

Passaggio 4: riavvio dei contenitori Coreapp e Webapp

Riavvia i contenitori Docker Coreapp e Webapp con la variabile ambientale WA_API_VERSION impostata sull'ultima versione:

WA_API_VERSION=new-whatsapp-version docker-compose -f prod-docker-compose.yml up -d

Per gli utenti del client dell'API di WhatsApp Business che eseguono l'aggiornamento alla versione 2.29.3 e successive

Se stai eseguendo l'aggiornamento dalla versione v2.29.1, v2.29.2o hai riscontrato problemi durante l'aggiornamento a quelle versioni e hai dovuto eseguire il ripristino per la stabilità, è consigliabile eseguire l'aggiornamento alla versione v2.29.3, quindi eseguire il seguente comando nel contenitore Docker Webapp:

chown -R root your-media-directory/incoming your-media-directory/outgoing your-media-directory/shared

A meno che tu non abbia modificato la directory dei contenuti multimediali, quella predefinita è /usr/local/wamedia.

Nota:

  • Poiché il completamento di questo comando può richiedere del tempo in base alle dimensioni del volume dei contenuti multimediali preesistenti, è consigliabile avviare questo comando non appena si esegue l'aggiornamento durante la finestra di manutenzione.
  • Questo comando modifica solo la proprietà dei volumi dei contenuti multimediali in background (non è previsto alcun impatto/tempo di inattività per operazioni multimediali o latenza/prestazioni durante l'esecuzione).
  • Questo è un percorso di aggiornamento unico per risolvere i problemi di compatibilità con le versioni precedenti in v2.29.1 e v2.29.2.

Disinstallazione del client dell'API di WhatsApp Business

Si consiglia vivamente di eseguire il backup delle impostazioni correnti dell'app prima della disinstallazione. Segui la documentazione su backup e ripristino.

Se è necessario reimpostare l'ambiente di sviluppo rimuovendo tutti i contenitori, esegui il seguente comando dalla directory che contiene il file prod-docker-compose.yml:

docker-compose -f prod-docker-compose.yml down

L'output risultante dovrebbe essere simile al seguente:

Stopping biz_waweb_1  ... done
Stopping biz_wacore_1 ... done
Removing biz_waweb_1  ... done
Removing biz_wacore_1 ... done

Per eliminare tutti i volumi definiti nel file prod-docker-compose.yml in aggiunta ai contenitori, esegui il comando down con il parametro -v:

docker-compose -f prod-docker-compose.yml down -v

Risoluzione dei problemi

Per una risoluzione dei problemi più efficace, è consigliabile usare WADebug. WADebug è uno strumento da riga di comando che consente di trovare potenziali problemi con la configurazione dell'API di WhatsApp Business e di rendere le richieste all'assistenza di WhatsApp più efficaci.

In casi in cui non è possibile utilizzare WADebug o l'esecuzione dello strumento restituisce degli errori, esegui il comando seguente per raccogliere i registri da tutti i contenitori:

docker-compose -f prod-docker-compose.yml logs > debug_output.txt

Per raccogliere i registri di un determinato servizio, aggiungi il nome del servizio (waweb o wacore) al comando docker-compose logs:

docker-compose -f prod-docker-compose.yml logs waweb > debug_output.txt

I registri sono disponibili nel file debug_output.txt nella directory corrente.


Questo software utilizza il codice di FFmpeg concesso in licenza ai sensi della LGPLv2.1 e il relativo codice sorgente può essere scaricato qui.