devlikeapro / waha

WAHA - WhatsApp HTTP API (REST API) that you can configure in a click! Two engines: chromium-based WEBJS and pure-websocket NOWEB
https://waha.devlike.pro/
Apache License 2.0
831 stars 254 forks source link

[BUG][WEBJS] - Error sending text to half of Brazilian numbers (every number registered before 2012). #238

Closed arielpts closed 7 months ago

arielpts commented 7 months ago

Describe the bug

About 5 years ago, numbers in Brazil had the format 99 9999-9999. Due to the increasing number of numbers, a ninth digit was added and became 99 9 9999-9999.
If I use the api to send a message to a number with the new digit and the account was initially registered without the ninth digit, the message is not delivered. I send an image to exemplify.

Note in the image that if I send it to the new number with the ninth digit, the message is not delivered.
This creates a difficulty, as everyone passes the number with the ninth digit, but when sending the message using the api, it is not delivered.

It's impossible to know if the number was registered in WA with or without the 9th digit and via the current API. The mobile app (and the web version as well) translates to the correct user id automatically.

Version

{
  "version": "2023.12.1",
  "engine": "WEBJS",
  "tier": "CORE",
  "browser": "/usr/bin/chromium"
}

To Reproduce Steps to reproduce the behavior:

  1. Just find someone with an old Brazilian account (you can use mine, sent on Patreon messages). I will love to receive test messages and will read & reply to confirm. Just send a text "testing WhatsApp"or smth and I will understand.
  2. Try to send a message to the number with the new digit.
  3. The message will not arrive

Expected behavior

The message should be sent. A workaround can be applied in the /api/contacts/check-exists endpoint that can return the user id

Screenshots

Screenshot 2023-12-01 at 18 01 40

Additional context

allburov commented 7 months ago

Hi!

A workaround can be applied in the /api/contacts/check-exists endpoint that can return the user id

I love the suggested workaround, the fix is available in 2023.12.2 PLUS version (will be available in CORE in the next release). Checked it with provided phone number - it does add remove one 9 from the phone number.

GET /api/contacts/check-exists?phone=11231231231&session=default
{
  "numberExists": true,
  "chatId": "123123123@c.us"
}

Added a note about Brazilian phone numbers here:


Note for Brazilian Phone Numbers

You should use the GET /api/contacts/check-exists endpoint before sending a message to a new phone number to get the correct chatId because of the additional 9-digit number added after 2012.

It's fine to send the response to chatId for incoming messages, though - the payload already has the correct chatId.


<off-topic> About a year ago I wished to have detailed issues in the repo... My dream came true, it's a New Year gift! :laughing: https://github.com/devlikeapro/whatsapp-http-api/issues/27#issuecomment-1322080949

Thank you @arielpts for the such detailed issue, it's pleasure to see and fix that - you've done all work yourself, so it's safe to assume you've fixed the issue :+1: Obrigado! </off-topic>