Freeswitch dialplan

571 views
Skip to first unread message

MAX

unread,
Feb 23, 2012, 12:18:10 PM2/23/12
to freeswitch-ru
Как я могу соеденить 2 каналы через диал план?
Имею слудующий диалплан:
<extension name="skype_uri">
<condition field="destination_number" expression="^(.*)$"/>
<action application="bridge" data="skypopen/interface3/$1"/>
</condition>
</extension>
Понятно, что через этот код синхронизируются 2 каналы:
1 - это лег от набирающего + какой-нить номер.
2 - это передача его на 3 интерфейс skypopen.
Как мне можно отследить инициатора лега 1 - в логах фрисвитча - sofia/
external/us...@127.0.0.1 ???
Какие параматре следует добавить, чтобы без проблем создался мост
между инициатором и конечным пунктом назначение.

slonik

unread,
Feb 24, 2012, 5:32:32 AM2/24/12
to freesw...@googlegroups.com
Я наверно тупой, ничего не понял, какая синхронизация, какие каналы с чем синхронизируются, что за мост "конечным пунктом назначение"?

MAX

unread,
Feb 24, 2012, 5:45:51 AM2/24/12
to freesw...@googlegroups.com
Давайте объясню что хочу сделать.
У меня есть 2 SIP профиля, которые соединяют FreeSwitch с Asterisk-ом (ну или наоборот).
Какая проблема сейчас - когда я с Астериска зевертаю номер на ФС, то номер попадает в контекст default, проверяется в этом куске хмл и далее выбирает интерфейс скайпа (skypopen/interface3/):

<extension name="skype_uri">
 <condition field="destination_number" expression="^(.*)$"/>
 <action application="bridge" data="skypopen/interface3/$1"/>
</condition>
</extension>

Но как разделить собственно эти 2 SIP профиля? Скажем 1 - 101, 2 -102.
По умолчанию даже если я заверну на астере 1 звонок в 101, а 2 в 102, то в конечном результате они оба обработаются в этом куске диалплана:

<extension name="skype_uri">
 <condition field="destination_number" expression="^(.*)$"/>
 <action application="bridge" data="skypopen/interface3/$1"/>
</condition>
</extension>

и будут направлены на 3 скайп аккаунт.
А я хочу, чтобы звонок с 101 -  ушел на 1 скайп аккаунт, а 102 - пускай на 3.

slonik

unread,
Feb 24, 2012, 6:27:46 AM2/24/12
to freesw...@googlegroups.com
может быть попробовать поиграть с переменной chan_name?
 <condition field="chan_name" expression="^(что-то)$"/>
что там приходит в вашем случае?

MAX

unread,
Feb 24, 2012, 6:44:18 AM2/24/12
to freesw...@googlegroups.com
да дело не в  ^(что-то)$...
В ^(что-то)$ попадает то что надо (номер который нужно надрать).
Как мне сказать что
канал sofia/external/2...@192.168.1.1 нужно переключить на  <action application="bridge" data="skypopen/interface3/$1"/
> так как имя его 2...@192.168.1.1.
А 2...@192.168.1.1 нужно переключить <action application="bridge" data="skypopen/interface1/$1"/ так как это другой канал...
chan_name как мне известно в другом формате используется...

slonik

unread,
Feb 24, 2012, 8:30:09 PM2/24/12
to freesw...@googlegroups.com
Да нет, дело именно в "что-то"!
Ведь в "что-то" будет не номер, который нужно набрать, а именно что-то типа sofia/external/2...@192.168.1.1
Обрати внимание, что в condition проверяемое поле не destination_number, а chan_name!!!
соответственно можно сделать два экстеншна:
<extension name="skype_uri_101">
<condition field="chan_name" expression="^(sofia/external/2...@192.168.1.1)$"/>
<action application="bridge" data="skypopen/interface3/${destination_number}"/>
</condition>
</extension>

<extension name="skype_uri_102">
<condition field="chan_name" expression="^(sofia/external/2...@192.168.1.1)$"/>
<action application="bridge" data="skypopen/interface1/${destination_number}"/>
</condition>
</extension>

Только надо по логам "что-то" уточнить, точно нужную строку подставить.

пятница, 24 февраля 2012 г. 17:44:18 UTC+6 пользователь MAX написал:
пятница, 24 февраля 2012 г. 17:44:18 UTC+6 пользователь MAX написал:

MAX

unread,
Mar 7, 2012, 8:27:03 AM3/7/12
to freesw...@googlegroups.com
Спасибо -  заработало!

А как настроить RR интерфейс, чтобы он понимал сигдал "занято" (user Busy).
Если я набираю номер, и он сбрасывает, то по умолчанию freeswitch начинает синхронизацию каналов заново и переводит на интерфейс+1.
Если какое-то решение данной проблемы?

четверг, 23 февраля 2012 г. 19:18:10 UTC+2 пользователь MAX написал:
четверг, 23 февраля 2012 г. 19:18:10 UTC+2 пользователь MAX написал:
четверг, 23 февраля 2012 г. 19:18:10 UTC+2 пользователь MAX написал:

slonik

unread,
Mar 9, 2012, 9:53:48 PM3/9/12
to freesw...@googlegroups.com
Черт его знает, я не связист, поэтому выражение "начать синхронизацию каналов заново" - для меня темный лес.
Я его нигде в документации на FreeSWITCH и не встречал.
Думаю, синхронизация тут ни при чем, скорее всего вы имели ввиду последовательный перебор шлюзов, что-то типа этого:

Implementing Failover

Failover for your outbound gateway is easy to implement at bridge time using the | separator:

 <action application="bridge" data="sofia/gateway/primary/dialstring|sofia/gateway/secondary/dialstring"/>

Using the ping parameter on the gateway will allow FreeSWITCH to determine a gateway has failed which allows the bridge to go to the secondary immediately rather than waiting for a timeout

взято из wiki: http://wiki.freeswitch.org/wiki/Misc._Dialplan_Tools_bridge

Максим Небот

unread,
Mar 10, 2012, 8:54:49 AM3/10/12
to freesw...@googlegroups.com
Да я тоже не связист... Скорее даже занялся изучением VoIP как хобби.
Админ я... В случаи из "|" фрисвитч действительно
Выбирает или 1 или 2 параметр.
А мне интересно сделать автомат, который был устойчивый к падениям 
Скайп акков. 

<action application="bridge" data="skypopen/RR"/>
RR - из одного описания, переберает все доступные
Интерфейсы скайпа, и выбирает первый свободный. 
Проблема в том, что он не понимает сигнал "занято" и продолжает 
Поиск свободного интерфейса далее... 
Если у меня 5 скайпов, то вызывающему приходится 5 раз 
Сбрасывать вызов...

Отправлено с iPhone

10.03.2012, в 4:53, slonik <valery....@gmail.com> написал(а):

--
Вы получили это сообщение, поскольку подписаны на группу freeswitch-ru.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msg/freeswitch-ru/-/GVD-SL6givYJ.
Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу freesw...@googlegroups.com.
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу freeswitch-r...@googlegroups.com.
О дополнительных функциях можно узнать в группе по адресу http://groups.google.com/group/freeswitch-ru?hl=ru.

slonik

unread,
Mar 10, 2012, 8:25:45 PM3/10/12
to freesw...@googlegroups.com
Ну так и надо использовать |.
В описании же ясно написано:

Failover for your outbound gateway is easy to implement at bridge time using the | separator:
Слово "Failover" ничего не говорит?
Пробуй!

Reply all
Reply to author
Forward
0 new messages