Сегодня я покажу, как произвести настройку softphone клиента в лице MicroSIP (бесплатного) с Windows 10 Pro на изучаемый сервис АТС связки Ubuntu 24.04 LTS Server + Asterisk 22 ("Поднимаем дома Asterisk 22 на Ubuntu 24.04 Server"). У меня сейчас идет этап, когда я погрузился в адаптацию всех своих наработок и задумок, а поэтому стараюсь все записать в виде пошаговых заметок от и до дабы при новом ссылаться на заметки, т.е. все идет от и до.
Что предполагается, что уже сделано.
- Развернута связка
Ubuntu 24.04 LTS Server + Asterisk 22. - Развернута виртуальная машина с осью
Windows 10 Pro. - В система с осью
Windows 10 Proу Вас есть учетная запись с правами Администратора. - С системы
Windows 10 Proу Вас есть выход в интернет для скачиванияsoftphoneклиента. - через
pjsip_wizard.confсоздан номер2002, 2001(это дляAndroidв приложенииGS Wave)
На заметку: Если на боевой рабочей станции устанавливать приложение, то следует продумать как к системе будет подключен микрофон и динамик, иначе при совершении звонка вы получите сообщение вида: "Требуются динамики и микрофон. Для совершения звонков в вашей системе должны быть устройства ввод и вывода звука".
Шаг №1: Авторизуюсь на Windows 10 Pro либо через консоль, либо подключившись к ней по RDP.
Шаг №2: С официального сайта www.microsip.org скачиваю клиент MicroSIP, на момент составления данной заметки версия 3.22.3 (https://www.microsip.org/download/MicroSIP-3.22.3.exe?1)
установка выполняется в каталог: C:\Users\ekzorchik\AppData\Local\MicroSIP
запускаю приложение MicroSIP через ярлык с рабочего стола
нажимаю на стрелочку вниз в правой части и выбираю "Общие настройки"
Активные кодеки: ставлю порядок G.711 u-law, G.711 A-lawПроверять обновления: НикогдаАвтозагрузка при старте системы: Отмечаю галочкой
и нажимаю "Сохранить".
На заметку: С учетом увиденного как устанавливает приложение можно сделать вывод что права локального администратора не особо то и нужны.
Шаг №3: Перехожу к этапу добавления аккаунта:
запускаю приложение MicroSIP через ярлык с рабочего стола
нажимаю на стрелочку вниз в правой части и выбираю "Добавить аккаунт"
Название аккаунта: 2002SIP-сервер: 172.33.33.11Имя пользователя: 2002Домен: 172.33.33.11Логин: 2002Пароль: Aa1234567aAОтображаемое имя: 2002Шифрование медиа: ОтключеноТранспорт: UDPПубличный адрес: АвтоОбновить регистр…: 300Проверка доступн.: 15
и нажимаю "Сохранить", вижу, что каких-либо проблем с регистрацией клиента на Windows 10 Pro не возникло

Шаг №4: Смотрю, что на открытой консоли Asterisk CLI в момент, когда я нажал "Сохранить" после ввода всех параметров добавления аккаунта в приложения MicroSIP на Windows 10 Pro:
ekzorchik@srv-s2404a:~$ sudo asterisk -rvvv
Asterisk 22.8.2, Copyright (C) 1999 - 2025, Sangoma Technologies Corporation and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Running as user 'asterisk'
Running under group 'asterisk'
Connected to Asterisk 22.8.2 currently running on srv-s2404a (pid = 1604)
-- Added contact 'sip:2002@172.33.33.10:59842;ob' to AOR '2002' with expiration of 300 seconds
== Endpoint 2002 is now Reachable
srv-s2404a*CLI> srv-s2404a*CLI> pjsip show endpoints
Endpoint: 2002 Not in use 0 of inf
InAuth: 2002-iauth/2002
Aor: 2002 1
Contact: 2002/sip:2002@172.33.33.10:59842;ob 6b2cd645d7 NonQual nan
Transport: transport-udp udp 0 0 172.33.33.11:5060
Objects found: 2
Шаг №5: Можно получить более расширенную информацию по ENDPOINT, в текущем примере это по номеру 2002:
srv-s2404a*CLI> pjsip show endpoint 2002
Endpoint: <Endpoint/CID.....................................> <State.....> <Channels.>
I/OAuth: <AuthId/UserName...........................................................>
Aor: <Aor............................................> <MaxContact>
Contact: <Aor/ContactUri..........................> <Hash....> <Status> <RTT(ms)..>
Transport: <TransportId........> <Type> <cos> <tos> <BindAddress..................>
Identify: <Identify/Endpoint.........................................................>
Match: <criteria.........................>
Channel: <ChannelId......................................> <State.....> <Time.....>
Exten: <DialedExten...........> CLCID: <ConnectedLineCID.......>
==========================================================================================
Endpoint: 2002 Not in use 0 of inf
InAuth: 2002-iauth/2002
Aor: 2002 1
Contact: 2002/sip:2002@172.33.33.10:59842;ob 6b2cd645d7 NonQual nan
Transport: transport-udp udp 0 0 172.33.33.11:5060
ParameterName : ParameterValue
===================================================================================================
100rel : yes
@pjsip_wizard : 2002
accept_multiple_sdp_answers : false
accountcode :
acl :
aggregate_mwi : true
allow : (ulaw|alaw)
allow_overlap : true
allow_subscribe : true
allow_transfer : true
allow_unauthenticated_options : false
aors : 2002
asymmetric_rtp_codec : false
auth : 2002-iauth
bind_rtp_to_media_address : false
bundle : false
call_group :
callerid : <unknown>
callerid_privacy : allowed_not_screened
callerid_tag :
codec_prefs_incoming_answer : prefer:pending, operation:intersect, keep:all, transcode:allow
codec_prefs_incoming_offer : prefer:pending, operation:intersect, keep:all, transcode:allow
codec_prefs_outgoing_answer : prefer:pending, operation:intersect, keep:all, transcode:allow
codec_prefs_outgoing_offer : prefer:pending, operation:union, keep:all, transcode:allow
connected_line_method : invite
contact_acl :
context : internal
cos_audio : 0
cos_video : 0
device_state_busy_at : 0
direct_media : true
direct_media_glare_mitigation : none
direct_media_method : invite
disable_direct_media_on_nat : false
dtls_auto_generate_cert : No
dtls_ca_file :
dtls_ca_path :
dtls_cert_file :
dtls_cipher :
dtls_fingerprint : SHA-256
dtls_private_key :
dtls_rekey : 0
dtls_setup : active
dtls_verify : No
dtmf_mode : rfc4733
fax_detect : false
fax_detect_timeout : 0
follow_early_media_fork : true
follow_redirect_methods :
force_avp : false
force_rport : true
from_domain :
from_user :
g726_non_standard : false
geoloc_incoming_call_profile :
geoloc_outgoing_call_profile :
ice_support : false
identify_by : username,ip
ignore_183_without_sdp : false
inband_progress : false
incoming_call_offer_pref : local
incoming_mwi_mailbox :
language :
mailboxes :
max_audio_streams : 1
max_video_streams : 1
media_address :
media_encryption : no
media_encryption_optimistic : false
media_use_received_transport : false
message_context :
moh_passthrough : false
moh_suggest : default
mwi_from_user :
mwi_subscribe_replaces_unsolicited : no
named_call_group :
named_pickup_group :
notify_early_inuse_ringing : false
one_touch_recording : false
outbound_auth :
outbound_proxy :
outgoing_call_offer_pref : remote_merge
overlap_context :
pickup_group :
preferred_codec_only : false
record_off_feature : automixmon
record_on_feature : automixmon
redirect_method : user
refer_blind_progress : true
rewrite_contact : false
rpid_immediate : false
rtcp_mux : false
rtp_engine : asterisk
rtp_ipv6 : false
rtp_keepalive : 0
rtp_symmetric : false
rtp_timeout : 0
rtp_timeout_hold : 0
sdp_owner : -
sdp_session : Asterisk
security_negotiation : no
send_aoc : false
send_connected_line : yes
send_diversion : true
send_history_info : false
send_pai : false
send_rpid : false
set_var :
srtp_tag_32 : false
stir_shaken : no
stir_shaken_profile :
sub_min_expiry : 0
subscribe_context :
suppress_moh_on_sendonly : false
suppress_q850_reason_headers : false
t38_bind_udptl_to_media_address : false
t38_udptl : false
t38_udptl_ec : none
t38_udptl_ipv6 : false
t38_udptl_maxdatagram : 0
t38_udptl_nat : false
tenantid :
timers : yes
timers_min_se : 90
timers_sess_expires : 1800
tone_zone :
tos_audio : 0
tos_video : 0
transport : transport-udp
trust_connected_line : yes
trust_id_inbound : false
trust_id_outbound : false
use_avpf : false
use_ptime : false
user_eq_phone : false
voicemail_extension :
webrtc : no
На заметку: к документируемости данного вывода я еще вернусь, это же интересно.
Итого, сейчас у меня есть два (2001 & 2002) зарегистрированных ENDPOINT на моем сервисе Asterisk 22.
Шаг №6: Пробую совершить звонок с 2002 на 2001 где установлено точно такое приложение, но получаю
Server Failure: 503 Сервис недоступен
2001
MicroSIP

в логах Asterisk cli
[Mar 10 14:26:45] ERROR[1628]: chan_pjsip.c:2697 request: Unable to create PJSIP channel - endpoint '{EXTEN}' was not found
[Mar 10 14:26:45] NOTICE[1918][C-00000004]: app_dial.c:2722 dial_exec_full: Unable to create channel of type 'PJSIP' (cause 3 - No route to destination)
== Everyone is busy/congested at this time (1:0/0/1)
-- Auto fallthrough, channel 'PJSIP/2002-00000003' status is 'CHANUNAVAIL'
srv-s2404a*CLI>
Внимательно проанализировав вывод и встроенные файлы примеров выявил, что в Asterisk переменные должны использовать синтаксис ${EXTEN}, а не {EXTEN} или Dial(PJSIP/'{EXTEN}'). У меня в extensions.conf было прописано:
ekzorchik@srv-s2404a:~$ sudo nano /etc/asterisk/extensions.conf
[internal]
exten => _20XX,1,Dial(PJSIP/{EXTEN})
и Asterisk читая воспринимает {EXTEN} как текст, ищет ENDPOINT с именем {EXTEN} которого нет, изменив на ${EXTEN}, а после сохранив внесенные изменения, перечитав содержимое extensions.conf:
srv-s2404a*CLI> dialplan reload
Шаг №7: Пробую совершить звонок с 2002 на 2001 и вызов инициируется:
-- Executing [2001@internal:1] Dial("PJSIP/2002-00000004", "PJSIP/2001") in new stack
-- Called PJSIP/2001
-- PJSIP/2001-00000005 is ringing
-- PJSIP/2001-00000005 answered PJSIP/2002-00000004

На заметку: Два окна я получил, т.к. в приложении настроено поверх всех окон, с 2002 я позвонил на 2001 и после нажал принять вызов.
Также если с приложения GS Wave на Android (номер 2001) совершить звонок на 2002 (Windows 10 Pro) вызов проходит и соединение удается принять.
Если совершить звонок с 2002 (Windows 10 Pro) на 2001 (Android) то вызов не проходит, по всей видимости всему виной что номер 2001 через OpenVPN туннель и используется NAT до Asterisk - NAT (на смартфоне). Нужно разобраться как побороть.
Вот пока собственно и все в плане настройки SoftPhone на Windows 10 Pro, с уважением автор блога ekzorchik.