Receiving Whatsapp Messages From 2 different Numbers
currently I have a node js server which Listens for incoming messages and sending a response to the client based on his msg content .
- I have a Verified Business account, Whatsapp business account + phone number set and a webhook set for my node js server
I am now trying to expand it and to Listen for 2 whatsapp numbers . meta allows to set only one webhook per "app" which I think there is my problem . after creating a new app , and associated it to the same business account which has 2 whatsapp phone numbers , I still Can't listen to the 2nd number .
This is the current code which runs :
const RecievedMessage = (req,res)=> { try { var entry = (req.body["entry"])[0]; var changes = (entry["changes"])[0]; var value = changes["value"]; var messageObject = value["messages"]; if (typeof messageObject != "undefined"){ var messages = messageObject[0]; var number = messages["from"]; var msgid = messages["id"]; var text = getTextUser(messages); // getting the usr message if(text != ""){ processMessage.Process(text,number,msgid); } } myConsole.log(text); res.send("EVENT_RECEIVED") }catch(error) { myConsole.log(error); res.send("EVENT_RECEIVED") } }
for the webhooks I set 2 different endpoints one on each app: /whatsapp /whatsapp2
the verify function :
const VerifyToken = (req,res) => { try { const keyValuePairs = req._parsedOriginalUrl.query.split('&'); const parsedValues = {}; keyValuePairs.forEach(pair => { const [key, value] = pair.split('='); parsedValues[key] = value; }); var accessToken = 'token'; var token = parsedValues['hub.verify_token'];//req._parsedOriginalUrl.query["hub.verify_token"]; var challenge = parsedValues['hub.challenge'];//req._parsedOriginalUrl.query["hub.challenge"] if(challenge !=null && token != null && token == accessToken) { res.send(challenge); } else { res.status(400).send(); } } catch(error) { res.status(400).send(); } }
express routes
app.get('/whatsapp',async(req,res)=> { try { const keyValuePairs = req._parsedOriginalUrl.query.split('&'); const parsedValues = {}; keyValuePairs.forEach(pair => { const [key, value] = pair.split('='); parsedValues[key] = value; }); const hubMode = parsedValues['hub.mode']; const hubChallenge = parsedValues['hub.challenge']; const hubVerifyToken = parsedValues['hub.verify_token']; var accessToken = 'token'; var token = parsedValues['hub.verify_token']; var challenge = parsedValues['hub.challenge']; if(challenge !=null && token != null && token == accessToken) { res.send(challenge); } else { res.status(400).send(); } } catch(error) { res.status(400).send(); } })
app.get('/whatsapp2',async(req,res)=> { try { const keyValuePairs = req._parsedOriginalUrl.query.split('&'); const parsedValues = {}; keyValuePairs.forEach(pair => { const [key, value] = pair.split('='); parsedValues[key] = value; }); const hubMode = parsedValues['hub.mode']; const hubChallenge = parsedValues['hub.challenge']; const hubVerifyToken = parsedValues['hub.verify_token']; var accessToken = 'token'; var token = parsedValues['hub.verify_token']; var challenge = parsedValues['hub.challenge'];//req._parsedOriginalUrl.query["hub.challenge"] if(challenge !=null && token != null && token == accessToken) { res.send(challenge); } else { res.status(400).send(); } } catch(error) { res.status(400).send(); } })
I am sure I'm not the first one which need a multi-phone number setup for a Whatsapp chatbot Thanks everyone , cheers