freeswitchforum.com

Форум поддержки FreeSWITCH

FreeSWITCH is a registered trademark of Anthony Minessale. Official FreeSWITCH site.

Текущее время: 29 мар 2024 12:25

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 19 дек 2013 05:46 

Зарегистрирован: 31 окт 2013 18:45
Сообщения: 18
Пробую реализовать такую схему
Есть 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 сам находил на каком домене (профиле) тот или иной пользователь?

[+] профиль external
Код:
<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>


[+] профиль internal
Код:
<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>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 дек 2013 08:54 
FreeSWITCH_GuRu

Зарегистрирован: 22 авг 2012 09:52
Сообщения: 1710
нужно заставить регаться в один домен
для этого выставить
https://wiki.freeswitch.org/wiki/Sofia. ... ter-domain
https://wiki.freeswitch.org/wiki/Sofia. ... -db-domain
https://wiki.freeswitch.org/wiki/Sofia. ... ion-domain

либо попробовать использовать aliases (как не знаю, но чую может сработать)

_________________
ЛС: @rostel
Сообщество: @ru_freeswitch


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 дек 2013 09:45 

Зарегистрирован: 31 окт 2013 18:45
Сообщения: 18
Выставил в профиле external (! только в нём)
Код:
<param name="force-register-domain" value="10.0.10.2"/>
<param name="force-register-db-domain" value="10.0.10.2"/>


Сбросил регистрации fs_cli> sofia profile external flush_inbound_reg
И всё заработало.
Теперь могу просто обратиться ${sofia_contact(*/1003)}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 дек 2013 09:58 
FreeSWITCH_GuRu

Зарегистрирован: 22 авг 2012 09:52
Сообщения: 1710
${sofia_contact(*/1003)} == user/1003

_________________
ЛС: @rostel
Сообщество: @ru_freeswitch


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 51


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB