Подключение WhatsApp к FreePBX (Asterisk) для приёма звонков

С июля 2025 года компания Meta предоставляет возможность приёма звонков из WhatsApp на любой сервер IP телефонии. В данной инструкции мы рассмотрим процесс подключения WhatsApp Calling к FreePBX 17, работающему на Asterisk версии 22.5

Подготовка сервера FreePBX

  1. Сервер FreePBX должен быть доступен из интернета по порту 5061 TCP
  2. Присвойте вашему серверу FreePBX доменное имя, например pbx.example.com
  3. На странице Admin > Certificate Management создайте или загрузите сертификат для вашего домена

Screenshot from 2025-08-17 13-11-47
  • На странице Settings - Asterisk SIP Settings вкладка SIP Settings [chan_pjsip]
    - в блоке TLS/SSL/SRTP Settings выберите ваш сертификат
    - SSL Method - tlsv1_2
    - Verify Client - No
    - Verify Server - No
    - в блоке Transports активируйте tls
    - в блоке 0.0.0.0 (tls) значение парметра Port to Listen On - 5061
    Сохрание настройки

Screenshot from 2025-08-17 13-16-48

Проверка настроек сервера IP-телефонии Asterisk

С внешнего сервера проверьте корректность подключения командой

openssl s_client -quiet -verify_hostname {hostname} -connect {hostname}:{port}

Результат успешной проверки будет выглядеть примерно так:

$ openssl s_client -quiet -verify_hostname pbx.example.com -connect pbx.example.com:5061
Connecting to 64:ff9b::68f8:b0b8
depth=2 C=US, ST=New Jersey, L=Jersey City, O=The USERTRUST Network, CN=USERTrust RSA Certification Authority
verify return:1
depth=1 C=AT, O=ZeroSSL, CN=ZeroSSL RSA Domain Secure Site CA
verify return:1
depth=0 CN=example.com
verify return:1

Создание SIP транка для подключения WhatsApp Calling

  • Connectivity > Trunks > Add PJSIP Trunk
  • Trunk Name - meta
  • pjsip Settings > General
    Authentication - None
    Registration - None
    SIP Server - wa.meta.vc
    Transport - 0.0.0.0-tls

Screenshot from 2025-08-17 13-29-40
  • pjsip Settings > Advanced
    Match (Permit) - 69.171.251.0/255.255.255.0
    Media Encryption - SRTP via in-SDP
Screenshot from 2025-08-17 13-31-42

Соххраните настройки транка и создайте входящий маршрут где в качестве DID укажаите номер вашего WhatsApp с которого планируете принимать звонки в формате +77776665544

Screenshot from 2025-08-17 13-34-13

Активация WhatsApp Calling на вашем номере

  1. Подключите ваш номер к WhatsApp Cloud API на этой странице
  2. Перейдите в настройки номера, кликнув по нему в общем сипске подключенных номеров
  3. Поле "Звонки" - Enabled, поля домен и порт заполните значениями, соответствующими вашему серверу
  4. Нажмите "Отправить"

Screenshot from 2025-08-17 13-44-20

  • Открройте в приложении WhatsApp номер, который подключили и проверьте что в его профиле появилась кнопка "Call". Попробуйте совершить звонок
  • Если кнопка не появилась, снова перейдите в настройки номера и проверьте код в поле "Ошибка" . Расшифровка кодов ошибок доступна здесь.

Пример настроек Asterisk без FreepPBX

# pjsip.transports.conf
[0.0.0.0-tls]
type=transport
protocol=tls
bind=0.0.0.0:5061
external_media_address=123.123.123.123
external_signaling_address=123.123.123.123
ca_list_file=/etc/ssl/certs/ca-certificates.crt
cert_file=/etc/asterisk/keys/example.com-fullchain.crt
priv_key_file=/etc/asterisk/keys/example.com.key
method=tlsv1_2
verify_client=no
verify_server=no
allow_reload=no
tos=cs3
cos=3
local_net=10.8.0.0/24


# pjsip.conf
[wa.meta.vc]
type=aor
qualify_frequency=60
contact=sip:wa.meta.vc

[wa.meta.vc]
type=endpoint
transport=0.0.0.0-tls
context=from-meta
disallow=all
allow=opus
aors=wa.meta.vc
send_connected_line=no
rtp_keepalive=0
language=en
user_eq_phone=no
t38_udptl=no
t38_udptl_ec=none
fax_detect=no
trust_id_inbound=no
t38_udptl_nat=no
direct_media=no
media_encryption=sdes
rtp_symmetric=yes
dtmf_mode=auto

[wa.meta.vc]
type=identify
endpoint=wa.meta.vc
match=69.171.251.0/255.255.255.0