Posts tagged with whatsapp

I have tried ngrok urls. But they are not getting validated.

Then I deployed my code on render.com with the GET and POST request having /webhook endpoint. When I try to configure it, the webhook does get verified ( as per RENDER logs) but still its shows unable to validate the url in meta console.

Servio.net is down.

I have a multi-tenant application where each tenant (client) can manage their products and interact with their customers through WhatsApp. Here’s my setup and the problem I’m facing:

  • I have 70 tenants in my application, and each tenant needs their own WhatsApp bot to communicate with customers.
  • Each bot requires a unique phone number to function.
  • I am using the WhatsApp Business Cloud API and have an account named XYZ.
  • I was able to add two phone numbers to the XYZ account, but I encountered a limitation when trying to add more numbers.
  • Each bot needs to send and receive messages independently, and I also need to process webhook events for each bot separately to handle tenant-specific logic.

Questions:

  1. How can I support 70 tenants, each with a unique phone number and WhatsApp bot, using the WhatsApp Business Cloud API?
  2. Is there a way to overcome the limitation of adding multiple phone numbers to a single WhatsApp Business Account?
  3. How can I set up and handle webhook events efficiently for each tenant in a multi-tenant architecture?

What I’ve Tried:

  • Adding multiple phone numbers to the XYZ account but encountered a limit after two numbers.
  • Researching WhatsApp’s documentation and community forums but couldn’t find a clear solution for this type of multi-tenant setup.

What I Need:

I’m looking for a scalable solution that:

  • Allows each tenant to have their own bot and unique phone number.
  • Ensures webhook events are processed correctly for each tenant, considering their specific logic.

I'm trying to make a GET request to the Facebook Graph API to fetch analytics for a WhatsApp Business Account using Postman. The request is structured as follows:

https://graph.facebook.com/v21.0/{whatsapp-business-account-ID}?fields=analytics.start(1732672800).end(1732932000).granularity(DAY)&access_token={access-token} 

What I've Tried: Set the request type to GET. Added all the required query parameters (fields, start_time, end_time, granularity, access_token) in Postman. Checked that the access_token is valid with the right permissions (whatsapp_business_management). Problem: When I send the request, I get an error response:

json Copy code

{     "error": {         "message": "(#100) Tried accessing nonexisting field (analytics) on node type (WhatsAppBusinessPhoneNumber)",         "type": "OAuthException",         "code": 100,         "fbtrace_id": "XXXXXXXXXXXX"     } } 

What I Need:

Clarification on whether analytics is a valid field for a WhatsApp Business Account. How to set up this request correctly in Postman or any potential troubleshooting steps. Any additional permissions or API version considerations to make this work.

Additional Details:

Access token: Valid and has whatsapp_business_management permission. API version: v21.0 (can switch to another version if necessary). End goal: Retrieve analytics for a specific date range with daily granularity.

I'm experiencing an issue with WhatsApp webhook messages events not being triggered, despite other webhook tests working correctly (like flows \ security \ account_alerts.

Environment:

  • Using WhatsApp Business API
  • Tested on Facebook's webhook test page
  • Facebook app in Live mode

Problem Details:

  • All webhook tests received successfully EXCEPT message webhooks
  • No webhooks are triggered when:
    1. Sending messages from the Facebook webhook test page
    2. Sending messages directly to the registered WhatsApp number

Code/Configuration Attempts:

// Simplified webhook handler (example) app.post('/webhook', (req, res) => {   const body = req.body;   console.log('Webhook received:', body);      if (body.entry && body.entry[0].changes) {     // Webhook processing logic   }      res.sendStatus(200); });