freeswitchforum.com

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

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

Текущее время: 28 мар 2024 19:09

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: SIP Alias
СообщениеДобавлено: 20 авг 2019 17:54 

Зарегистрирован: 03 июн 2016 18:05
Сообщения: 25
Добрый день.
Подскажите, пожалуйста, как реализовать цифровой sip alias во FS?
Хотелось бы, чтобы до абонента могли дозвониться не только по его ID, но и по второму, "виртуальному" номеру, состоящему из цифр, только цифр.
В диалплане расписывать каждого занятие долгое и неблагодарное, есть ли какое изящное решение? Может строка в файле пользователя?

Нашел https://freeswitch.org/confluence/displ ... +Directory раздел Alphanumeric to Numeric User Mapping

Не уверен, что это то, что нужно. Может что-то еще более простое я проглядел?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SIP Alias
СообщениеДобавлено: 21 авг 2019 07:57 
FreeSWITCH_GuRu

Зарегистрирован: 22 авг 2012 09:52
Сообщения: 1710
да, это оно и есть

проще сразу давать логины в виде телефонных номеров
меньше путаницы будет

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SIP Alias
СообщениеДобавлено: 21 авг 2019 12:16 

Зарегистрирован: 03 июн 2016 18:05
Сообщения: 25
Vlad1983 писал(а):
проще сразу давать логины в виде телефонных номеров
меньше путаницы будет

Да, я не спорю. Но не понимаю, как быть, если исторически сложилось, что пользователь имеет два внутренних.
Скажем, 205 и 811.
205 я делаю его основным логином.
Как систему заставить направлять вызов на 205, если набрали 811?
По ссылке, что я привел не то.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SIP Alias
СообщениеДобавлено: 21 авг 2019 13:21 
FreeSWITCH_GuRu

Зарегистрирован: 22 авг 2012 09:52
Сообщения: 1710
Код:
<user id="205" number-alias="811">
    <params>
      <param name="password" value="gi3gmn3ibhn"/>
    </params>
   <variables>
...
   </variables>
</user>

Код:
<action application="bridge" data="user/${user_data(${destination_number}@${domain_name} attr id)}"/>

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SIP Alias
СообщениеДобавлено: 21 авг 2019 16:26 

Зарегистрирован: 03 июн 2016 18:05
Сообщения: 25
Да, понял. Не сразу, правда.

Добавляю в файл пользователя number-alias="811" и работает.
Но вот..

На FS вн. адрес. Домен, на котором все пользователи, по идее, должен работать с внешним ИП. Все порты проброшены, все ок.
Пользователи тестовые регистрируются с настройками внешнего IP, изнутри локалки и снаружи, без проблем.
Вызовы друг другу ходят.

Если звонить 205 - полет нормальный. Если набирать 811, FS почему то сваливается в дефолтный домен.
Все перерыл, кроме глобальных настроек нигде нет упоминания вн. IP адреса.


[+] кусок диалплана
<extension name="Local_Extension9">
<condition field="destination_number" expression="^(8[01][0-9])$">
<action application="export" data="dialed_extension=$1"/>
<action application="set" data="ringback=${ru-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="set" data="continue_on_fail=true"/>
<action application="bridge" data="user/${user_data(${dialed_extension}@внешний_IP attr id)}"/>
</condition>
</extension>


[+] часть лога вызова
Dialplan: sofia/internal/1001@внешний_IP Absolute Condition [global]
Dialplan: sofia/internal/1001@внешний_IP Action hash(insert/${domain_name}-spymap/${caller_id_number}/${uuid})
Dialplan: sofia/internal/1001@внешний_IP Action hash(insert/${domain_name}-last_dial/${caller_id_number}/${destination_number})
Dialplan: sofia/internal/1001@внешний_IP Action hash(insert/${domain_name}-last_dial/global/${uuid})
Dialplan: sofia/internal/1001@внешний_IP Action export(RFC2822_DATE=${strftime(%a, %d %b %Y %T %z)})
Dialplan: sofia/internal/1001@внешний_IP parsing [default->snom-demo-2] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (FAIL) [snom-demo-2] destination_number(811) =~ /^9001$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP parsing [default->snom-demo-1] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (FAIL) [snom-demo-1] destination_number(811) =~ /^9000$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP parsing [default->eavesdrop] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (FAIL) [eavesdrop] destination_number(811) =~ /^88(\d{4})$|^\*0(.*)$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP parsing [default->eavesdrop] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (FAIL) [eavesdrop] destination_number(811) =~ /^779$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP parsing [default->call_return] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (FAIL) [call_return] destination_number(811) =~ /^\*69$|^869$|^lcr$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP parsing [default->del-group] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (FAIL) [del-group] destination_number(811) =~ /^80(\d{2})$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP parsing [default->add-group] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (FAIL) [call-group-simo] destination_number(811) =~ /^82(\d{2})$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP parsing [default->call-group-order] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (FAIL) [call-group-order] destination_number(811) =~ /^83(\d{2})$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP parsing [default->extension-intercom] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (FAIL) [extension-intercom] destination_number(811) =~ /^8(10[01][0-9])$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP parsing [default->Local_Extension] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (FAIL) [Local_Extension] destination_number(811) =~ /^(10[01][0-9])$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP parsing [default->Local_Extension2] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (FAIL) [Local_Extension2] destination_number(811) =~ /^(\d{5})$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP parsing [default->Local_Extension9] continue=false
Dialplan: sofia/internal/1001@внешний_IP Regex (PASS) [Local_Extension9] destination_number(811) =~ /^(8[01][0-9])$/ break=on-false
Dialplan: sofia/internal/1001@внешний_IP Action export(dialed_extension=811)
Dialplan: sofia/internal/1001@внешний_IP Action set(ringback=${ru-ring})
Dialplan: sofia/internal/1001@внешний_IP Action set(transfer_ringback=local_stream://moh)
Dialplan: sofia/internal/1001@внешний_IP Action set(call_timeout=30)
Dialplan: sofia/internal/1001@внешний_IP Action set(hangup_after_bridge=true)
Dialplan: sofia/internal/1001@внешний_IP Action set(continue_on_fail=true)
Dialplan: sofia/internal/1001@внешний_IP Action bridge(user/${user_data(${dialed_extension}@внешний_IP attr id)})
2019-08-21 14:46:14.317054 [DEBUG] switch_core_state_machine.c:286 (sofia/internal/1001@внешний_IP) State Change CS_ROUTING -> CS_EXECUTE
2019-08-21 14:46:14.317054 [DEBUG] switch_core_state_machine.c:643 (sofia/internal/1001@внешний_IP) State ROUTING going to sleep
2019-08-21 14:46:14.317054 [DEBUG] switch_core_state_machine.c:584 (sofia/internal/1001@внешний_IP) Running State Change CS_EXECUTE (Cur 1 Tot 24)
2019-08-21 14:46:14.317054 [DEBUG] switch_core_state_machine.c:650 (sofia/internal/1001@внешний_IP) State EXECUTE
2019-08-21 14:46:14.317054 [DEBUG] mod_sofia.c:209 sofia/internal/1001@внешний_IP SOFIA EXECUTE
2019-08-21 14:46:14.317054 [DEBUG] switch_core_state_machine.c:328 sofia/internal/1001@внешний_IP Standard EXECUTE
EXECUTE sofia/internal/1001@внешний_IP set(open=true)
2019-08-21 14:46:14.317054 [DEBUG] mod_dptools.c:1598 SET sofia/internal/1001@внешний_IP [open]=[true]
EXECUTE sofia/internal/1001@внешний_IP hash(insert/10.133.40.51-spymap/1001/5c78986d-7eb6-4ae1-83b3-b8b5ace3458e)
EXECUTE sofia/internal/1001@внешний_IP hash(insert/10.133.40.51-last_dial/1001/811)
EXECUTE sofia/internal/1001@внешний_IP hash(insert/10.133.40.51-last_dial/global/5c78986d-7eb6-4ae1-83b3-b8b5ace3458e)
EXECUTE sofia/internal/1001@внешний_IP export(RFC2822_DATE=Wed, 21 Aug 2019 14:46:14 +0300)
2019-08-21 14:46:14.317054 [DEBUG] switch_channel.c:1296 EXPORT (export_vars) [RFC2822_DATE]=[Wed, 21 Aug 2019 14:46:14 +0300]
EXECUTE sofia/internal/1001@внешний_IP export(dialed_extension=811)
2019-08-21 14:46:14.317054 [DEBUG] switch_channel.c:1296 EXPORT (export_vars) [dialed_extension]=[811]
EXECUTE sofia/internal/1001@внешний_IP set(ringback=%(800,3200,425))
2019-08-21 14:46:14.317054 [DEBUG] mod_dptools.c:1598 SET sofia/internal/1001@внешний_IP [ringback]=[%(800,3200,425)]
EXECUTE sofia/internal/1001@внешний_IP set(transfer_ringback=local_stream://moh)
2019-08-21 14:46:14.317054 [DEBUG] mod_dptools.c:1598 SET sofia/internal/1001@внешний_IP [transfer_ringback]=[local_stream://moh]
EXECUTE sofia/internal/1001@внешний_IP set(call_timeout=30)
2019-08-21 14:46:14.317054 [DEBUG] mod_dptools.c:1598 SET sofia/internal/1001@внешний_IP [call_timeout]=[30]
EXECUTE sofia/internal/1001@внешний_IP set(hangup_after_bridge=true)
2019-08-21 14:46:14.317054 [DEBUG] mod_dptools.c:1598 SET sofia/internal/1001@внешний_IP [hangup_after_bridge]=[true]
EXECUTE sofia/internal/1001@внешний_IP set(continue_on_fail=true)
2019-08-21 14:46:14.317054 [DEBUG] mod_dptools.c:1598 SET sofia/internal/1001@внешний_IP [continue_on_fail]=[true]
EXECUTE sofia/internal/1001@внешний_IP bridge(user/205)
2019-08-21 14:46:14.317054 [DEBUG] switch_channel.c:1250 sofia/internal/1001@внешний_IP EXPORTING[export_vars] [RFC2822_DATE]=[Wed, 21 Aug 2019 14:46:14 +0300] to event
2019-08-21 14:46:14.317054 [DEBUG] switch_channel.c:1250 sofia/internal/1001@внешний_IP EXPORTING[export_vars] [RFC2822_DATE]=[Wed, 21 Aug 2019 14:46:14 +0300] to event
2019-08-21 14:46:14.317054 [DEBUG] switch_channel.c:1250 sofia/internal/1001@внешний_IP EXPORTING[export_vars] [dialed_extension]=[811] to event
2019-08-21 14:46:14.317054 [DEBUG] switch_ivr_originate.c:2204 Parsing global variables
2019-08-21 14:46:14.317054 [WARNING] mod_dptools.c:4268 Can't find user [205@10.10.10.10]
2019-08-21 14:46:14.317054 [NOTICE] switch_ivr_originate.c:2944 Cannot create outgoing channel of type [user] cause: [SUBSCRIBER_ABSENT]
2019-08-21 14:46:14.317054 [DEBUG] switch_ivr_originate.c:3941 Originate Resulted in Error Cause: 20 [SUBSCRIBER_ABSENT]
2019-08-21 14:46:14.317054 [INFO] mod_dptools.c:3518 Originate Failed. Cause: SUBSCRIBER_ABSENT

Зачем FS ломится в дефолтный домен? Ведь если набирать 205, то дозванивается нормально по настройкам правильного домена. Почему в случае алиаса уходит на дефолтный?
Не понимаю.
[+] 205.xml
<include>
<user id="205" number-alias="811">
<params>
<param name="password" value="iopjkl"/>
<param name="vm-password" value="205"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="205"/>
<variable name="effective_caller_id_name" value="Zink"/>
<variable name="effective_caller_id_number" value="205"/>
<variable name="outbound_caller_id_name" value="Zink"/>
<variable name="outbound_caller_id_number" value="205"/>
<variable name="callgroup" value="techsupport"/>
<variable name="rtp_secure_media" value="false"/>
</variables>
</user>
</include>


Заранее спасибо, если ткнете в ошибку.

p.s. - если 205.xml скопировать в /etc/freeswitch/directory/default то дозвониться по номеру 811 получается. Но это ж отвратительно (
Все еще не понимаю, почему в дефолтный домен уходит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SIP Alias
СообщениеДобавлено: 21 авг 2019 16:46 
FreeSWITCH_GuRu

Зарегистрирован: 22 авг 2012 09:52
Сообщения: 1710
попробовать добавить в directory домен, который тянет учетки из той же директории что и дефолтный
либо (если мультидоменность не нужна) выставить домен по умолчанию одинаковый во всех профилях

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SIP Alias
СообщениеДобавлено: 22 авг 2019 11:48 

Зарегистрирован: 03 июн 2016 18:05
Сообщения: 25
Vlad1983 писал(а):
попробовать добавить в directory домен, который тянет учетки из той же директории что и дефолтный
либо (если мультидоменность не нужна) выставить домен по умолчанию одинаковый во всех профилях

Да, для проверки сделал дефолтным домен с внешним IP адресом и заработало. Но хотелось бы понять, почему?

Vlad1983 писал(а):
попробовать добавить в directory домен, который тянет учетки из той же директории что и дефолтный


Этого не понял. У меня сейчас структура такая:
/etc/freeswitch/directory
- внешний_IP - файлы с пользователями
- default - папка с несколькими дефолтными пользователями.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SIP Alias
СообщениеДобавлено: 22 авг 2019 12:00 
FreeSWITCH_GuRu

Зарегистрирован: 22 авг 2012 09:52
Сообщения: 1710
посмотрите во внутрь directory/default.xml
сделать копий несколько
поправить
Код:
<domain name="$${domain}">
на нужный
полезут еще косяки отовсюду
править по ситуации

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


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

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


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

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


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

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