Пробую реализовать такую схему Есть 2 сетевые карты. 1 карта [192.168.1.2] смотрит во внешний интернет, отвечает за регистрацию провайдеров (в частности мультифон) и внешних удаленных пользователей (используется профиль external) 2 карта [10.0.10.2] смотрит исключительно в локальную сеть, где сидят внутренние абоненты (шлюз VOIP-FXS) (используется профиль internal)
Хочу реализовать следующее: 1. Не должно быть разницы между локальным пользователем, сидящим на 2 карте и удаленным пользователям, подключенным через 1 карту. Т.е. исходящие звонки у них должны быть в одном контексте (default). 2. Входящие звонки попадают в IVR, в котором можно набрать внутренний номер и связаться либо с внешним пользователем, либо с внутренним.
Пока затруднение возникает в том, что FS не совсем понимает на каком домене тот или иной пользователей и не видит регистрацию у внешних пользователей. Внутренний пользователь имеет вид 1001@10.0.10.2 и спокойно находится через sofia_contact */1001 Внешний пользователь имеет вид 1003@192.168.1.2 и не находится через sofia_contact */1003, но виден через sofia_contact */1003@192.168.1.2
Соответственно, диалплан не отрабатывает звонок с 1001 на 1003, если прямо не указать 192.168.1.2 то выдает USER_NOT_REGISTERED
ВОПРОС. Как сделать так, чтобы FS сам находил на каком домене (профиле) тот или иной пользователь?
Код: <profile name="external"> <gateways> <X-PRE-PROCESS cmd="include" data="external/*.xml"/> </gateways> <aliases> </aliases>
<domains> <domain name="all" alias="false" parse="true"/> </domains>
<settings> <param name="debug" value="7"/> <param name="sip-trace" value="yes"/> <param name="sip-capture" value="yes"/> <param name="rfc2833-pt" value="101"/> <param name="sip-port" value="5060"/> <param name="dialplan" value="XML"/> <param name="context" value="public"/> <param name="dtmf-duration" value="2000"/> <param name="inbound-codec-prefs" value="$${global_codec_prefs}"/> <param name="outbound-codec-prefs" value="$${outbound_codec_prefs}"/> <param name="hold-music" value="$${hold_music}"/> <param name="rtp-timer-name" value="soft"/> <param name="local-network-acl" value="localnet.auto"/> <param name="manage-presence" value="false"/> <param name="presence-hosts" value="192.168.1.2"/> <param name="presence-privacy" value="$${presence_privacy}"/> <param name="inbound-codec-negotiation" value="generous"/> <param name="nonce-ttl" value="60"/> <param name="auth-calls" value="false"/> <param name="inbound-late-negotiation" value="false"/> <param name="inbound-zrtp-passthru" value="false"/> <param name="rtp-ip" value="192.168.1.2"/> <param name="sip-ip" value="192.168.1.2"/> <param name="ext-rtp-ip" value="192.168.1.2"/> <param name="ext-sip-ip" value="192.168.1.2"/> <param name="rtp-timeout-sec" value="300"/> <param name="rtp-hold-timeout-sec" value="1800"/> <param name="tls" value="$${external_ssl_enable}"/> <param name="tls-only" value="false"/> <param name="tls-bind-params" value="transport=tls"/> <param name="tls-sip-port" value="$${external_tls_port}"/> <param name="tls-cert-dir" value="$${external_ssl_dir}"/> <param name="tls-passphrase" value=""/> <param name="tls-verify-date" value="true"/> <param name="tls-verify-policy" value="none"/> <param name="tls-verify-depth" value="2"/> <param name="tls-verify-in-subjects" value=""/> <param name="tls-version" value="$${sip_tls_version}"/> </settings> </profile>
Код: <profile name="internal"> <aliases> </aliases>
<gateways> <X-PRE-PROCESS cmd="include" data="internal/*.xml"/> </gateways>
<domains> <domain name="all" alias="true" parse="false"/> </domains>
<settings>
<param name="debug" value="7"/> <param name="sip-trace" value="yes"/> <param name="sip-capture" value="yes"/>
<param name="watchdog-enabled" value="no"/> <param name="watchdog-step-timeout" value="30000"/> <param name="watchdog-event-timeout" value="30000"/> <param name="log-auth-failures" value="false"/> <param name="forward-unsolicited-mwi-notify" value="false"/> <param name="context" value="public"/> <param name="rfc2833-pt" value="101"/> <param name="sip-port" value="5060"/> <param name="dialplan" value="XML"/> <param name="dtmf-duration" value="2000"/> <param name="inbound-codec-prefs" value="$${global_codec_prefs}"/> <param name="outbound-codec-prefs" value="$${global_codec_prefs}"/> <param name="rtp-timer-name" value="soft"/> <param name="rtp-ip" value="10.0.10.2"/> <param name="sip-ip" value="10.0.10.2"/> <param name="hold-music" value="$${hold_music}"/> <param name="apply-nat-acl" value="nat.auto"/> <param name="apply-inbound-acl" value="domains"/> <param name="local-network-acl" value="localnet.auto"/> <param name="record-path" value="$${recordings_dir}"/> <param name="record-template" value="${caller_id_number}.${target_domain}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/> <param name="manage-presence" value="true"/> <param name="presence-hosts" value="10.0.10.2"/> <param name="presence-privacy" value="$${presence_privacy}"/> <param name="inbound-codec-negotiation" value="generous"/> <param name="tls" value="$${internal_ssl_enable}"/> <param name="tls-only" value="false"/> <param name="tls-bind-params" value="transport=tls"/> <param name="tls-sip-port" value="$${internal_tls_port}"/> <param name="tls-cert-dir" value="$${internal_ssl_dir}"/> <param name="tls-passphrase" value=""/> <param name="tls-verify-date" value="true"/> <param name="tls-verify-policy" value="none"/> <param name="tls-verify-depth" value="2"/> <param name="tls-verify-in-subjects" value=""/> <param name="tls-version" value="$${sip_tls_version}"/> <param name="inbound-late-negotiation" value="false"/> <param name="inbound-zrtp-passthru" value="false"/> <param name="nonce-ttl" value="60"/> <param name="auth-calls" value="$${internal_auth_calls}"/> <param name="inbound-reg-force-matching-username" value="true"/> <param name="auth-all-packets" value="false"/>
<param name="ext-rtp-ip" value="10.0.10.2"/> <param name="ext-sip-ip" value="10.0.10.2"/> <param name="rtp-timeout-sec" value="300"/> <param name="rtp-hold-timeout-sec" value="1800"/> <param name="challenge-realm" value="auto_from"/> </settings> </profile>
Код: <extension name="Local_Extension"> <condition field="destination_number" expression="^(100[0-9])$"> <action application="set" data="ringback=${us-ring}"/> <action application="set" data="transfer_ringback=$${hold_music}"/> <action application="set" data="call_timeout=30"/> <action application="set" data="hangup_after_bridge=true"/> <action application="bridge" data="${sofia_contact(*/$1)}"/> </condition> </extension>
[+] определение пользователей домена internal Код: <include> <domain name="10.0.10.2"> <params> <param name="dial-string" value="{^^:sip_invite_domain=${dialed_domain}:presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(*/${dialed_user}@${dialed_domain})}"/> </params>
<variables> <variable name="record_stereo" value="true"/> <variable name="default_gateway" value="$${default_provider}"/> <variable name="default_areacode" value="$${default_areacode}"/> <variable name="transfer_fallback_extension" value="operator"/> </variables>
<groups> <group name="default"> <users> <X-PRE-PROCESS cmd="include" data="default/*.xml"/> </users> </group> </groups> </domain> </include>
ПОЛЬЗОВАТЕЛЬ <include> <user id="1001"> <params> <param name="password" value="123"/> <param name="vm-password" value="1001"/> </params> <variables> <variable name="toll_allow" value="domestic,international,local"/> <variable name="accountcode" value="1001"/> <variable name="user_context" value="default"/> <variable name="effective_caller_id_name" value="1001"/> <variable name="effective_caller_id_number" value="1001"/> <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/> <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/> </variables> </user> </include>
[+] определение пользователей домена external Код: <include> <domain name="192.168.1.2"> <params> <param name="dial-string" value="{^^:sip_invite_domain=${dialed_domain}:presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(*/${dialed_user}@${dialed_domain})}"/> </params>
<variables> <variable name="record_stereo" value="true"/> <variable name="default_gateway" value="$${default_provider}"/> <variable name="default_areacode" value="$${default_areacode}"/> <variable name="transfer_fallback_extension" value="operator"/> </variables> <groups> <group name="extern"> <users> <X-PRE-PROCESS cmd="include" data="extern/*.xml"/> </users> </group> </groups> </domain> </include>
ПОЛЬЗОВАТЕЛЬ <include> <user id="1003"> <params> <param name="password" value="123"/> <param name="vm-password" value="1003"/> </params> <variables> <variable name="toll_allow" value="domestic,international,local"/> <variable name="accountcode" value="1003"/> <variable name="user_context" value="default"/> <variable name="effective_caller_id_name" value="1003"/> <variable name="effective_caller_id_number" value="1003"/> <variable name="outbound_caller_id_name" value="1003"/> <variable name="outbound_caller_id_number" value="1003"/> </variables> </user> </include>
|