Какие особенности отправки и получения сообщений разных стран?#
Номера Российской Федерации
Все номера РФ должны иметь код страны 7, при указании в номере кода 8 сообщения отправленные через API будут отправлены на несуществующий аккаунт, проверять правильность номера можно используя запрос https://wa.me/70123456789. В итоге телефонный номер будет включать в себя 11 цифр: +7 XXX XXX XXXX.
При указании номера в телефонной книге 80123456789, WhatsApp автоматически будет перебрасывать на существующий аккаунт 70123456789. Метод checkWhatsapp будет выдавать "existsWhatsapp": true.
Требуемый номер для отправки сообщений 70123456789@c.us
Номера Мексики
Во всех мексиканских номерах между кодом страны «52» и кодом города должна быть вставлена цифра «1» (так же для оператора Nextel). Код «11» в начале должен быть удалён. В итоге телефонный номер будет включать в себя 13 цифр: +52 1 XXX XXX XXXX.
Исходный номер телефона +520123456789
Требуемый номер для отправки сообщений 5210123456789@c.us
Номера Аргентины
Во всех аргентинских телефонных номерах между кодом страны «54» и кодом города должна быть вставлена цифра 9. Код «15» в начале должен быть удалён. В итоге телефонный номер будет включать в себя 13 цифр: +54 9 XXX XXX XXXX.
Исходный номер телефона +540123456789
Требуемый номер для отправки сообщений 5490123456789@c.us
Номера Бразилии
В некоторых регионах Бразилии в номер телефона добавлена цифра 9, между местным номером телефона и кодом региона Бразилии. Список кодов региона к которым необходимо добавлять цифру 9: 11-19, 21, 22, 24, 27, 28. Для номеров Бразилии с другими кодами региона, необходимо убирать цифру 9.
В итоге телефонный номер может включать в себя 12 или 13 цифр +55 21 (9) XXXX XXXX, где 55 - код страны, 21 - код региона, ХХХХ ХХХХ - местный номер телефона.
Исходный номер телефона +552112345678
Требуемый номер для отправки сообщений 5521912345678@c.us
Пример кода на python
Install the package
pip install phonenumbers
import phonenumbers
# is the only areas that whatspp updated for 9h digit
UPDATED_AREA_CODE = {"55": ["11", "12", "13", "14", "15", "16", "17", "18", "19", "21", "22", "24", "27", "28"]}
def prepare_whatsapp_number(phone):
x = phonenumbers.parse(phone, None)
country_code = str(x.country_code)
area_code = str(x.national_number)[0:2]
phone = phone.replace('+','')
updated_area = UPDATED_AREA_CODE
if updated_area.get(country_code):
area_code_updated = updated_area[country_code]
# Remove or add the 9h digit for states that were not updated
if area_code not in area_code_updated:
if len(str(x.national_number)) == 11:
phone = '%s%s%s' % (country_code, area_code, str(x.national_number)[3:])
else:
if len(str(x.national_number)) == 10:
phone = '%s%s%s%s' % (country_code, area_code,"9", str(x.national_number)[2:])
return phone
print(prepare_whatsapp_number("+559212345678"))
print(prepare_whatsapp_number("+5592912345678")) #phone number not working