AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

features.conf в asterisk 1.8.4.1

Newbies/FAQ Forum 22 сообщений 19.08.2011 12:02 - 30.07.2018 13:55
#1 19.08.2011 12:02

features.conf в asterisk 1.8.4.1


Доброго времени суток.
Не получается настроить в features.conf что бы по определн\енному нажатию клавиш (допустим **) запускался макрос прописанный в плане набора.
[applicationmap]
nway-start => **,caller,Macro,nway-start
nway-inv => *5,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok

все это делалось, что бы организовать человеческую конференцию - что бы во время разговора нажать пару кнопок и оказаться в конференции, + еще несколько кнопок и еще один нужный чел там же.
идею брал отсюда http://www.voip-info.org/wiki/view/Asterisk+n-way+call+HOWTO (ссылка что то глючит, ниже оригинальный текст)
How this works
While you speak with another party you can press *0, and the macro nway-start is executed.
The current party is immediately transferred to a free conference, whereas you get a dialtone
to enter the number of the other party you also would like to invite. After the call has been
established and you talk to third user, you can press ** to direct him to the conference, or *# to hangup
the current call and return to the conference yourself. From within the conference any user can invite another person by pressing 0 (all other steps are same as for *0).

Dialplan
Here is dialplan example:

[default]
exten => _XXX,1,Set(DYNAMIC_FEATURES=nway-start)
exten => _XXX,n,Dial(SIP/${EXTEN})

[dynamic-nway]
exten => _XXX,1,Answer
exten => _XXX,n,Set(CONFNO=${EXTEN})
exten => _XXX,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _XXX,n,Set(DYNAMIC_FEATURES=)
exten => _XXX,n,MeetMe(${CONFNO},pdMX)
exten => _XXX,n,Hangup

[dynamic-nway-invite]
exten => 0,1,Read(DEST,dial,,i)
exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => 0,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => 0,n,Set(DYNAMIC_FEATURES=)
exten => 0,n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)

[dynamic-nway-dest]
exten => _XXX,1,Dial(SIP/${EXTEN})

[macro-nway-start]
exten => s,1,Set(CONFNO=${FindFreeConf()})
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => s,n,Set(DYNAMIC_FEATURES=)
exten => s,n,Goto(dynamic-nway,${CONFNO},1)

[macro-nway-ok]
exten => s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)

[macro-nway-notok]
exten => s,1,SoftHangup(${BRIDGEPEER})

Note, You need to provide FindFreeConf() function (or any other way) to get free Conference number.

And, to make all this work, here is features.conf:

[applicationmap]
nway-start => *0,caller,Macro,nway-start
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok


мой вариант
[dynamic-nway]
exten => _.,1,Answer()
exten => _.,n,Set(CONFNO=&{EXTEN})
exten => _.,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _.,n,Set(DYNAMIC_FEATURES=)
exten => _.,n,MeetMe(${CONFNO},pdMX)
exten => _.,n,Hangup

[dynamic-nway-invite]
exten => 0,1,Read(DEST,dial,,i)
exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => 0,n,Dial(Local/&{DEST}@dynamic-nway-dest,,g)
exten => 0,n,Set(DYNAMIC_FEATURES=)
exten => 0,n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)

[dynamic-nway-dest]
exten => _.,1,Dial(SIP/${EXTEN})

[macro-nway-start]
exten => s,1,Set(CONFNO=${FindFreeConf()})
exten => s,n,Set(post=___Macros_nway_START_SDELAL_START___)
exten => s,n,NoOp(${post}) ;для отладки
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => s,n,Set(DYNAMIC_FEATURES=)
exten => s,n,Goto(dynamic-nway,${CONFNO},1)

[macro-nway-ok]
exten => s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)

[macro-nway-notok]
exten => s,1,SoftHangup(${BRIDGEPEER})
#2 19.08.2011 17:33

DYNAMIC_FEATURES в том екстеншене куда звоните прописан?
#3 22.08.2011 08:18

DYNAMIC_FEATURES в глобальные параметры в extensions.conf. и закоментил все Set (которые переопределяют его). В таком виде как бы заработало - конференция создается, но при этом нельзя кого либо позвать в нее по ** и номер.
#4 22.08.2011 09:50

1. http://samael28.blogspot.com/2011/03/ast ... -call.html
2.
Код:
exten => s,1,Set(CONFNO=${FindFreeConf()})

FindFreeConf - это заглушка. Тут лучше прописать номер действительной конференции.

_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#5 22.08.2011 10:50

Насчет FindFreeConf уже нагуглил, что так не бывает... попробовал сделать так -

[dynamic-nway]
exten => _.,1,Answer()
exten => _.,n,Set(CONFNO=${EXTEN})
exten => _.,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _.,n,Set(DYNAMIC_FEATURES=)
exten => _.,n,MeetMe(${CONFNO},pdMX)
exten => _.,n,Hangup

[dynamic-nway-invite]
exten => 0,1,Read(DEST,dial,,i)
exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => 0,n,Dial(Local/&{DEST}@dynamic-nway-dest,,g)
exten => 0,n,Set(DYNAMIC_FEATURES=)
exten => 0,n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)

[dynamic-nway-dest]
exten => _XXX,1,Dial(SIP/${EXTEN})

[macro-nway-start]
;exten => s,1,Set(CONFNO=${FindFreeConf()}) ;было бы 3,14здато если бы это работало

exten => s,1,GotoIf($[${conf_1}=busy]?cn2:cn1) ;делаем FindFreeConf вручную
exten => s,n(cn1),Set(conf_1=busy) ;
exten => s,n,Set(CONFNO=100)
exten => s,n,Goto(start)

exten => s,n(cn2),GotoIf($[${conf_2}=busy]?cn3:)
exten => s,n,Set(conf_2=busy)
exten => s,n,Set(CONFNO=200)
exten => s,n,Goto(start)

exten => s,n(cn3),Hangup() ; пока если обе конференции заняты, то трубка кладется


exten => s,n(start),Set(post=___Macros_nway_START_SDELAL_START___)
exten => s,n,NoOp(${post}) ;для отладки
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest)
;exten => s,n,Set(DYNAMIC_FEATURES=)
;exten => s,n,Goto(dynamic-nway,${CONFNO},1)

[macro-nway-ok]
exten => s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,2,Set(DYNAMIC_FEATURES=)
exten => s,3,Goto(dynamic-nway,${CONFNO},1)

[macro-nway-notok]
exten => s,1,SoftHangup(${BRIDGEPEER})
exten => s,2,Set(DYNAMIC_FEATURES=)
exten => s,3,Goto(dynamic-nway,${CONFNO},1)


попробовал скрестить это с http://samael28.blogspot.com/2011/03/ast ... -call.html

что бы по человечески сделалось. А то когда все таки создается конференция, инициатор вываливает и как то не очень понятно как в нее попасть.
В итоге получается так - при наборе *0 создается конференция, тот с кем был диалог в нее отправляется, а инициатор вываливается совсем (дисконнект). Астериск пишет следующее:

выдает [Aug 22 17:45:07] NOTICE[24750]: chan_local.c:826 local_call: No such extension/context @dynamic-nway-dest while calling Local channel
#6 22.08.2011 12:01

у меня сделано так

[dynamic-nway]
exten => _600X,1,NoOp("Context dynamic-nway")
exten => _600X,n,Answer()
exten => _600X,n,Set(CONFNO=${EXTEN})
exten => _600X,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _600X,n,Set(DYNAMIC_FEATURES=)
exten => _600X,n,MeetMe(${CONFNO},dMX)
exten => _600X,n,HangUp()

[dynamic-nway-invite]
exten => 0,1,NoOp("Context dynamic-nway-invite")
exten => 0,n,Read(DEST,dial,,i)
exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => 0,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => 0,n,Set(DYNAMIC_FEATURES=)
exten => 0,n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)

[dynamic-nway-dest]
exten => _X.,1,NoOp("Context dynamic-nway-dest")
exten => _X.,n,Dial(SIP/${EXTEN},50)

[macro-nway-start]
exten => s,1,NoOp("Macro macro-nway-start")
exten => s,n,MeetMeCount(6009,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6009)
exten => s,n,MeetMeCount(6008,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6008)
exten => s,n,MeetMeCount(6007,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6007)
exten => s,n,MeetMeCount(6006,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6006)
exten => s,n,MeetMeCount(6005,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6005)
exten => s,n,MeetMeCount(6004,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6004)
exten => s,n,MeetMeCount(6003,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6003)
exten => s,n,MeetMeCount(6002,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6002)
exten => s,n,MeetMeCount(6001,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6001)
exten => s,n,MeetMeCount(6000,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6000)
exten => s,n,NoOp("Number conference is ${CONFNO}")
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => s,n,Set(DYNAMIC_FEATURES=)
exten => s,n,ChannelRedirect(${CDR(channel)},dynamic-nway,${CONFNO},1)
exten => s,n,Goto(dynamic-nway,${CONFNO},1)

[macro-nway-ok]
exten => s,1,NoOp("Macro macro-nway-ok")
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)

[macro-nway-notok]
exten => s,1,NoOp("Macro macro-nway-notok")
exten => s,n,SoftHangUp(${BRIDGEPEER})


в целом мало отличий от образца тока выбор свободной конференции и принудительный заброс инициатора конференции, разбираться было некогда Smile но работает
#7 22.08.2011 12:44

2 tipadima
Благодарю! хотя почему мой код корректно не работает не ясно, но попробую твой. В нем все вроде прозрачно.
#8 23.08.2011 12:20

2 tipadima
Код работает, БЛАГОДАРЮ! только один вопрос остался, не очень очевидно как попасть самому в конференцию в которую отравляешь людей. У меня астериск сам возвращает меня в конференцию спустя какой то тайм аут.
#9 23.08.2011 12:55

хммм.... у мя все работает как описано в примере
нажав *0 вызываем макрос nway-start
при этом с кем разгваривал сразу падает в свободную конференцию, а ты донабираешь номер
после соединения нажимаешь ** (вызывая макрос nway-ok) для отправления нового участника в конференцию и падаешь туда сам или нажимаешь *# (вызываешь макрос nway-notok) для того чтобы превать разговор с новым участником и вернуться к разговору с первым
для еще новых участников нажимаем 0 и по той же схеме

если что то не так, то показывай логи
#10 24.08.2011 10:16

Благодарю, все работает. еще раз внимательнее все пересмотрел.
#11 21.09.2011 14:51

Не заводится шарманка с вашим кодом, не подскажите в чём может быть проблема ? DTMF коды понимает всё ок.
Код:
Core debug was 0 and is now 5
== Using SIP RTP CoS mark 5
-- Executing [101@default:1] Set("SIP/100-00000000", "DYNAMIC_FEATURES=nway-start") in new stack
-- Executing [101@default:2] Dial("SIP/100-00000000", "SIP/101,,tT") in new stack
== Using SIP RTP CoS mark 5
-- Called 101
-- SIP/101-00000001 is ringing
-- SIP/101-00000001 answered SIP/100-00000000
-- Feature Found: nway-start exten: nway-start
-- Executing [s@macro-nway-start:1] NoOp("SIP/100-00000000", ""Macro macro-nway-start"") in new stack
-- Executing [s@macro-nway-start:2] MeetMeCount("SIP/100-00000000", "6009,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:3] ExecIf("SIP/100-00000000", "1,Set,CONFNO=6009") in new stack
[Sep 21 12:58:23] WARNING[4329]: app_exec.c:222 execif_exec: Deprecated syntax found. Please upgrade to using ExecIf(?Set (CONFNO=6009))
-- Executing [s@macro-nway-start:4] MeetMeCount("SIP/100-00000000", "6008,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:5] ExecIf("SIP/100-00000000", "1,Set,CONFNO=6008") in new stack
[Sep 21 12:58:23] WARNING[4329]: app_exec.c:222 execif_exec: Deprecated syntax found. Please upgrade to using ExecIf(?Set (CONFNO=6008))
-- Executing [s@macro-nway-start:6] MeetMeCount("SIP/100-00000000", "6007,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:7] ExecIf("SIP/100-00000000", "1,Set,CONFNO=6007") in new stack
[Sep 21 12:58:23] WARNING[4329]: app_exec.c:222 execif_exec: Deprecated syntax found. Please upgrade to using ExecIf(?Set (CONFNO=6007))
-- Executing [s@macro-nway-start:8] MeetMeCount("SIP/100-00000000", "6006,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:9] ExecIf("SIP/100-00000000", "1,Set,CONFNO=6006") in new stack
[Sep 21 12:58:23] WARNING[4329]: app_exec.c:222 execif_exec: Deprecated syntax found. Please upgrade to using ExecIf(?Set (CONFNO=6006))
-- Executing [s@macro-nway-start:10] MeetMeCount("SIP/100-00000000", "6005,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:11] ExecIf("SIP/100-00000000", "1,Set,CONFNO=6005") in new stack
[Sep 21 12:58:23] WARNING[4329]: app_exec.c:222 execif_exec: Deprecated syntax found. Please upgrade to using ExecIf(?Set (CONFNO=6005))
-- Executing [s@macro-nway-start:12] MeetMeCount("SIP/100-00000000", "6004,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:13] ExecIf("SIP/100-00000000", "1,Set,CONFNO=6004") in new stack
[Sep 21 12:58:23] WARNING[4329]: app_exec.c:222 execif_exec: Deprecated syntax found. Please upgrade to using ExecIf(?Set (CONFNO=6004))
-- Executing [s@macro-nway-start:14] MeetMeCount("SIP/100-00000000", "6003,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:15] ExecIf("SIP/100-00000000", "1,Set,CONFNO=6003") in new stack
[Sep 21 12:58:23] WARNING[4329]: app_exec.c:222 execif_exec: Deprecated syntax found. Please upgrade to using ExecIf(?Set (CONFNO=6003))
-- Executing [s@macro-nway-start:16] MeetMeCount("SIP/100-00000000", "6002,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:17] ExecIf("SIP/100-00000000", "1,Set,CONFNO=6002") in new stack
[Sep 21 12:58:23] WARNING[4329]: app_exec.c:222 execif_exec: Deprecated syntax found. Please upgrade to using ExecIf(?Set (CONFNO=6002))
-- Executing [s@macro-nway-start:18] MeetMeCount("SIP/100-00000000", "6001,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:19] ExecIf("SIP/100-00000000", "1,Set,CONFNO=6001") in new stack
[Sep 21 12:58:23] WARNING[4329]: app_exec.c:222 execif_exec: Deprecated syntax found. Please upgrade to using ExecIf(?Set (CONFNO=6001))
-- Executing [s@macro-nway-start:20] MeetMeCount("SIP/100-00000000", "6000,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:21] ExecIf("SIP/100-00000000", "1,Set,CONFNO=6000") in new stack
[Sep 21 12:58:23] WARNING[4329]: app_exec.c:222 execif_exec: Deprecated syntax found. Please upgrade to using ExecIf(?Set (CONFNO=6000))
-- Executing [s@macro-nway-start:22] NoOp("SIP/100-00000000", ""Number conference is 6000"") in new stack
-- Executing [s@macro-nway-start:23] ChannelRedirect("SIP/100-00000000", "SIP/101-00000001,dynamic-nway,6000,1") in new stac k
-- Executing [s@macro-nway-start:24] Read("SIP/100-00000000", "DEST,dial,,i") in new stack
== Starting SIP/101-00000001 at dynamic-nway,6000,1 failed so falling back to exten 's'
== Starting SIP/101-00000001 at dynamic-nway,s,1 still failed so falling back to context 'default'
[Sep 21 12:58:23] WARNING[4331]: pbx.c:4370 __ast_pbx_run: Channel 'SIP/101-00000001' sent into invalid extension 's' in context 'default', but no invalid handler
-- User entered nothing.
-- Executing [s@macro-nway-start:25] Set("SIP/100-00000000", "DYNAMIC_FEATURES=nway-inv#nway-noinv") in new stack
-- Executing [s@macro-nway-start:26] Dial("SIP/100-00000000", "Local/@dynamic-nway-dest,,g") in new stack
[Sep 21 12:58:33] NOTICE[4329]: chan_local.c:538 local_call: No such extension/context @dynamic-nway-dest while calling Local ch annel
-- Couldn't call @dynamic-nway-dest
== Everyone is busy/congested at this time (0:0/0/0)
-- Executing [s@macro-nway-start:27] Set("SIP/100-00000000", "DYNAMIC_FEATURES=") in new stack
-- Executing [s@macro-nway-start:28] ChannelRedirect("SIP/100-00000000", "SIP/100-00000000,dynamic-nway,6000,1") in new stac k
== Channel 'SIP/100-00000000' jumping out of macro 'nway-start'
== Spawn extension (dynamic-nway, 6000, 1) exited non-zero on 'SIP/100-00000000'
[Sep 21 12:58:33] WARNING[4329]: pbx.c:4370 __ast_pbx_run: Channel 'SIP/100-00000000' sent into invalid extension '6000' in cont ext 'dynamic-nway', but no invalid handler
#12 22.09.2011 05:21

== Starting SIP/101-00000001 at dynamic-nway,6000,1 failed so falling back to exten 's'
что у вас в экстене dynamic-nway?
тфу, контескте

и что он у вас ругается на
[Sep 21 12:58:23] WARNING[4329]: app_exec.c:222 execif_exec: Deprecated syntax found. Please upgrade to using ExecIf(?Set (CONFNO=6000))
какая версия астера, как используете ExecIf?
http://www.voip-info.org/wiki/view/Asterisk+cmd+ExecIf
#13 19.12.2011 14:19

Некропостинг, но вдруг кто из понимающих подписан на эту тему.

Попытался реализовать тоже самое в trixbox, но он не разпознает *0.

Подробнее здесь http://asteriskforum.ru/viewtopic.php?t= ... highlight=

Очень нужна консультация.
#14 03.02.2012 10:54

В общем не все так хорошо. Прикрутил к астериску Linksys spa3102. Завел в нее городскую линию. Подключил аппарат к ней. Все работает в плене - звонок из города идет в астериск и далее орабатывает так как должен (звонят соответствующие телефоны, софтфоны), звонок в город тоже прекрасно проходит. Перенаправление вызывав городских и пр тоже работает. Но с выше обсуждаемой конференцией опять проблемы -
звонок из города. Отвечаем на вызов, *0 отправляем в конференцию, но на том конце провода (в городе) тишина. Хотя должна играть музыка и сообщение что вы сейчас в конференции один и т.д. Так же есть глюки когда остаются активные диалоги, хотя все участники уже давно положили трубки.
[globals]; можно указывать различные глобальные (доступные для всех контекстов) переменные
DYNAMIC_FEATURES=nway-start#nway-inv#nway-noinv

;конфиг лист
[dynamic-nway]
exten => _600X,1,NoOp("ZAPUSCHEN_DYNAMIC-NWAY")
exten => _600X,n,Answer()
exten => _600X,n,Set(CONFNO=${EXTEN})
exten => _600X,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _600X,n,Set(DYNAMIC_FEATURES=)
exten => _600X,n,MeetMe(${CONFNO},dMX)
exten => _600X,n,Hangup()

[dynamic-nway-invite]
exten => *1,1,NoOp("ZAPUSCHEN_DYNAMIC-NWAY-INVITE")
exten => *1,n,Read(DEST,dial,,i)
exten => *1,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => *1,n,Dial(Local/&{DEST}@dynamic-nway-dest,,g)
exten => *1,n,Set(DYNAMIC_FEATURES=)
exten => *1,n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)

[dynamic-nway-dest]
exten => _X.,1,NoOp("ZAPUSCHEN_DYNAMIC-NWAY-DEST")
exten => _X.,2,Dial(SIP/${EXTEN},50)

[macro-nway-start]

exten => s,1(start),Set(post=___Macros_nway_START_SDELAL_START___)
exten => s,n,NoOp(${post}) ;для отладки


exten => s,n,MeetMeCount(6009,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6009)
exten => s,n,MeetMeCount(6008,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6008)
exten => s,n,MeetMeCount(6007,COUNT)
exten => s,n,ExecIf($[${COUNT}=0],Set,CONFNO=6007)

exten => s,n,NoOp("NOMER_CONFERA-${CONFNO}")


exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => s,n,Set(DYNAMIC_FEATURES=)
exten => s,n,ChannelRedirect(${CDR(Channel)},dynamic-nway,${CONFNO},1)
exten => s,n,Goto(dynamic-nway,${CONFNO},1)

[macro-nway-ok]
exten => s,1,NoOp("MACROS_NWAY-OK")
exten => s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
;exten => s,2,Set(DYNAMIC_FEATURES=)
;exten => s,3,Goto(dynamic-nway,${CONFNO},1)

[office]

exten => 198,1,Macro(ats1,198,SIP/198)

exten => 100,1,Macro(ats1,100,SIP/100)

exten => 103,1,Macro(ats1,103,SIP/103)

exten => 102,1,Macro(ats1,102,SIP/102)

exten => 105,1,Macro(ats1,105,SIP/105)

exten => 106,1,Macro(ats1,106,SIP/106)

exten => 107,1,Macro(ats1,107,SIP/107)

exten => 108,1,Macro(ats1,108,SIP/108)

exten => 202,1,Macro(ats1,202,SIP/202)

exten => _9.,1,Dial(SIP/pstn/${EXTEN:1},,t);выход на город с префиксо 9
exten => _9.,n,NoOp(${EXTEN:1})
exten => _9.,n,Hangup()

exten => 223,1,Dial(SIP/198&SIP/100,10,tT);из города в офис
exten => 223,n,Hangup()


[macro-ats1]
exten => s,1,Set(VOLUME(TX)=6)
exten => s,n,Set(VOLUME(RX)=6)
exten => s,n,Dial(${ARG2},25,tT)

exten => s,n,Hangup()

Added after 3 minutes:

То что в консоли при этом всем

== Using SIP RTP CoS mark 5
-- Executing [223@office:1] Dial("SIP/pstn-00000002", "SIP/198&SIP/100,10,tT") in new stack
== Using SIP RTP CoS mark 5
-- Called 198
[Feb 3 13:33:43] WARNING[9101]: app_dial.c:2041 dial_exec_full: Unable to create channel of type 'SIP' (cau se 20 - Unknown)
-- SIP/198-00000003 is ringing
-- SIP/198-00000003 answered SIP/pstn-00000002
-- Feature Found: nway-start exten: nway-start
-- Executing [s@macro-nway-start:1] Set("SIP/198-00000003", "post=___Macros_nway_START_SDELAL_START___") in new stack
-- Executing [s@macro-nway-start:2] NoOp("SIP/198-00000003", "___Macros_nway_START_SDELAL_START___") in new stack
-- Executing [s@macro-nway-start:3] MeetMeCount("SIP/198-00000003", "6009,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:4] ExecIf("SIP/198-00000003", "1,Set,CONFNO=6009") in new stack
[Feb 3 13:34:02] WARNING[9101]: app_exec.c:228 execif_exec: Deprecated syntax found. Please upgrade to usi ng ExecIf(?Set(CONFNO=6009))
-- Executing [s@macro-nway-start:5] MeetMeCount("SIP/198-00000003", "6008,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:6] ExecIf("SIP/198-00000003", "1,Set,CONFNO=6008") in new stack
[Feb 3 13:34:02] WARNING[9101]: app_exec.c:228 execif_exec: Deprecated syntax found. Please upgrade to usi ng ExecIf(?Set(CONFNO=6008))
-- Executing [s@macro-nway-start:7] MeetMeCount("SIP/198-00000003", "6007,COUNT") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Executing [s@macro-nway-start:8] ExecIf("SIP/198-00000003", "1,Set,CONFNO=6007") in new stack
[Feb 3 13:34:02] WARNING[9101]: app_exec.c:228 execif_exec: Deprecated syntax found. Please upgrade to usi ng ExecIf(?Set(CONFNO=6007))
-- Executing [s@macro-nway-start:9] NoOp("SIP/198-00000003", ""NOMER_CONFERA-6007"") in new stack
-- Executing [s@macro-nway-start:10] ChannelRedirect("SIP/198-00000003", "SIP/pstn-00000002,dynamic-nway ,6007,1") in new stack
-- Executing [s@macro-nway-start:11] Read("SIP/198-00000003", "DEST,dial,,i") in new stack
-- User entered '105'
-- Executing [s@macro-nway-start:12] Set("SIP/198-00000003", "DYNAMIC_FEATURES=nway-inv#nway-noinv") in new stack
-- Executing [s@macro-nway-start:13] Dial("SIP/198-00000003", "Local/105@dynamic-nway-dest,,g") in new s tack
-- Called 105@dynamic-nway-dest
-- Executing [105@dynamic-nway-dest:1] NoOp("Local/105@dynamic-nway-dest-e03c;2", ""ZAPUSCHEN_DYNAMIC-NW AY-DEST"") in new stack
-- Executing [105@dynamic-nway-dest:2] Dial("Local/105@dynamic-nway-dest-e03c;2", "SIP/105,50") in new s tack
== Using SIP RTP CoS mark 5
-- Called 105
-- SIP/105-00000004 is ringing
-- Local/105@dynamic-nway-dest-e03c;1 is ringing
-- SIP/105-00000004 answered Local/105@dynamic-nway-dest-e03c;2
-- Local/105@dynamic-nway-dest-e03c;1 answered SIP/198-00000003
== Spawn extension (dynamic-nway-dest, 105, 2) exited non-zero on 'Local/105@dynamic-nway-dest-e03c;2'
-- Feature Found: nway-inv exten: nway-inv
-- Executing [s@macro-nway-ok:1] NoOp("SIP/198-00000003", ""MACROS_NWAY-OK"") in new stack
== Spawn extension (macro-nway-start, s, 13) exited non-zero on 'SIP/198-00000003' in macro 'nway-start'
-- Executing [6007@dynamic-nway:1] NoOp("SIP/pstn-00000002", ""ZAPUSCHEN_DYNAMIC-NWAY"") in new stack


Непонятно где косяк у меня...
#15 10.02.2012 11:51

Подправил диалплан. При нажатии *1 он не дает набрать номер того кого хочешь подключить к конференции. В процессе выдает вот такое.


-- Couldn't call 1@dynamic-nway-dest
== Everyone is busy/congested at this time (0:0/0/0)

У меня он выглядит так
[dynamic-nway-dest]
exten => _X.,1,NoOp("ZAPUSCHEN_DYNAMIC-NWAY-DEST")
exten => _X.,2,Dial(SIP/${EXTEN},50)


Лог целиком с момента нажатия *1
Код:

-- Executing [*@dynamic-nway-invite:1] NoOp("SIP/105-00000000", ""ZAPUSCHEN_DYNAMIC-NWAY-INVITE"") in new stack
-- Executing [*@dynamic-nway-invite:2] Read("SIP/105-00000000", "DEST,,1,,,1") in new stack
-- Accepting a maximum of 1 digits.
-- Started music on hold, class 'default', on SIP/202-00000001
-- Stopped music on hold on SIP/202-00000001
-- User entered '1'
-- Executing [*@dynamic-nway-invite:3] ExecIf("SIP/105-00000000", "0?Goto(return)") in new stack
-- Executing [*@dynamic-nway-invite:4] NoOp("SIP/105-00000000", "1") in new stack
-- Executing [*@dynamic-nway-invite:5] Dial("SIP/105-00000000", "Local/1@dynamic-nway-dest,,g") in new stack
[Feb 10 14:31:04] NOTICE[6190]: chan_local.c:826 local_call: No such extension/context 1@dynamic-nway-dest while calling Local channel
-- Couldn't call 1@dynamic-nway-dest
== Everyone is busy/congested at this time (0:0/0/0)
-- Executing [*@dynamic-nway-invite:6] Set("SIP/105-00000000", "DYNAMIC_FEATURES=") in new stack
-- Executing [*@dynamic-nway-invite:7] Goto("SIP/105-00000000", "dynamic-nway,6007,1") in new stack
-- Goto (dynamic-nway,6007,1)
-- Executing [6007@dynamic-nway:1] NoOp("SIP/105-00000000", ""ZAPUSCHEN_DYNAMIC-NWAY"") in new stack
-- Executing [6007@dynamic-nway:2] Answer("SIP/105-00000000", "") in new stack
-- Executing [6007@dynamic-nway:3] Set("SIP/105-00000000", "CONFNO=6007") in new stack
-- Executing [6007@dynamic-nway:4] Set("SIP/105-00000000", "MEETME_EXIT_CONTEXT=dynamic-nway-invite") in new stack
-- Executing [6007@dynamic-nway:5] Set("SIP/105-00000000", "DYNAMIC_FEATURES=") in new stack
-- Executing [6007@dynamic-nway:6] MeetMe("SIP/105-00000000", "6007,dMX") in new stack


Код:

[globals];
DYNAMIC_FEATURES=nway-start#nway-inv#nway-noinv

;конфиг лист
[dynamic-nway]
exten => _600X,1,NoOp("ZAPUSCHEN_DYNAMIC-NWAY")
exten => _600X,n,Answer()
exten => _600X,n,Set(CONFNO=${EXTEN})
exten => _600X,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _600X,n,Set(DYNAMIC_FEATURES=)
exten => _600X,n,MeetMe(${CONFNO},dMX)
exten => _600X,n,Hangup()

[dynamic-nway-invite]
exten => _*,1,NoOp("ZAPUSCHEN_DYNAMIC-NWAY-INVITE")
exten => _*,n,Read(DEST,,1,,,1)
exten => _*,n,ExecIf($[${DEST}!=1]?Goto(return))
exten => _*,n,NoOp(${DEST})
;exten => _*1,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => _*,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => _*,n,Set(DYNAMIC_FEATURES=)
exten => _*,n(return),Goto(dynamic-nway,${CONFNO},1)
;exten => i,1,Goto(dynamic-nway,${CONFNO},1)

[dynamic-nway-dest]
exten => _X.,1,NoOp("ZAPUSCHEN_DYNAMIC-NWAY-DEST")
exten => _X.,2,Dial(SIP/${EXTEN},50)

[macro-nway-start]
exten => s,1(start),Set(post=___Macros_nway_START_SDELAL_START___)
exten => s,n,NoOp(${post}) ;для отладки


exten => s,n,MeetMeCount(6009,COUNT) ;в переменную count кладется число учасник$
exten => s,n,ExecIf($[${COUNT}=0]?Set(CONFNO=6009)) ;если в 6009 ноль учасников то confno рав$
exten => s,n,MeetMeCount(6008,COUNT)
exten => s,n,ExecIf($[${COUNT}=0]?Set(CONFNO=6008)) ;синтаксис надо проверить
exten => s,n,MeetMeCount(6007,COUNT)
exten => s,n,ExecIf($[${COUNT}=0]?Set(CONFNO=6007))

exten => s,n,NoOp("NOMER_CONFERA-${CONFNO}")

exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => s,n,Set(DYNAMIC_FEATURES=)
exten => s,n,ChannelRedirect(${CDR(Channel)},dynamic-nway,${CONFNO},1)
exten => s,n,Goto(dynamic-nway,${CONFNO},1)

[macro-nway-ok]
exten => s,1,NoOp("MACROS_NWAY-OK")
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
;exten => s,2,Set(DYNAMIC_FEATURES=)
;exten => s,3,Goto(dynamic-nway,${CONFNO},1)

[macro-nway-notok]
exten => s,1,NoOp("MACROS_NWAY-NOTOK")
exten => s,n,SoftHangup(${BRIDGEPEER})
#16 16.02.2012 10:23

"Семен Семеныч..."(с) Да, что то ступил)))
#17 29.03.2012 11:47

Странная вещь - после набора *0 - конференция создается, собеседник туда отправляется. В трубке гудок. Набираю номер... и почемуто в переменную DEST номер записывается без первой цифры... очень непонятно где она пропадает.
_________________
Debian + Asterisk 1.8.11.1 + spa3102 + spa8000
#18 11.04.2014 09:14

Здравсвуйте!
Да бы не создавать новый топип. Пишу тут.
Создал по Вашим конфигам динамическую конференцию, всё работает отлично в рамках того контекста, в котором находится пир создающий конференцию.
Т.е. если 102 создаёт конференцию со 105, и может добавить туда дюбого абонегта из 1ХХ
А Вот как сделать, чтобы сюда добавить внешнего абонента.
Вот кусок диалплана, через который я вахожу в город.

Код:

[local-phones]
include => gorod
exten => _[1]XX,1,Dial(SIP/${EXTEN},90,t)
same => n,Hangup

exten => _[1]XX,hint,SIP/${EXTEN}


[gorod]
exten => _98XXXXXXXXXX,1,Dial(SIP/sipnet/9${EXTEN:1})
same => n,Hangup


Вот что в консоли получается:
-- Created MeetMe nwayerence 1023 for nwayerence '6000'
-- Playing 'nway-onlyperson.gsm' (language 'ru')
-- Started music on hold, class 'default', on SIP/sipnet-00000017
-- Stopped music on hold on SIP/sipnet-00000017
-- Started music on hold, class 'default', on SIP/sipnet-00000017
-- User entered '89120000000'
-- Executing [s@macro-nway-start] Set("SIP/102-00000016", "DYNAMIC_FEATURES=nway-inv#nway-noinv") in new stack
-- Executing [s@macro-nway-start] Dial("SIP/102-00000016", "Local/89120000000@dynamic-nway-dest,,g") in new stack
-- Called Local/89120000000@dynamic-nway-dest
-- Executing [89120000000@dynamic-nway-dest] NoOp("Local/89120000000@dynamic-nway-dest-0000000c;2", ""Context dynamic-nway-dest"") in new stack
-- Executing [89120000000@dynamic-nway-dest] Dial("Local/89120000000@dynamic-nway-dest-0000000c;2", "SIP/89120000000,50") in new stack
[Apr 11 10] WARNING[20639]: chan_sip.c:5824 create_addr: Purely numeric hostname (89120000000), and not a peer--rejecting!
[Apr 11 10] WARNING[20639]: app_dial.c:2345 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)

== Everyone is busy/congested at this time (1:0/0/1)
-- Auto fallthrough, channel 'Local/89120000000@dynamic-nway-dest-0000000c;2' status is 'CHANUNAVAIL'
-- Local/89120000000@dynamic-nway-dest-0000000c;1 is circuit-busy
== Everyone is busy/congested at this time (1:0/1/0)

Added after 1 hours 14 minutes:

Разобрался.
Нужно сделать так:
Код:

[dynamic-nway-dest]
exten => _[1]XX,1,Dial(SIP/${EXTEN})
exten => _98XXXXXXXXXX,1,Dial(SIP/sipnet/9${EXTEN:1})
#19 04.07.2014 10:02

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


Привет!
Сразу прошу не пинать, если пишу не то и не там.
По работе возникла необходимость организовать сип-телефонию. Был установлен Elastix 2.4.0 на виртуальную машину. Настройка вся проводилась через web-интерфейс, т.к. я не программист. В результате работает созвон абонентов один-на-один и работают конференции посредством создания комнат на сервере. Участники конференции созваниваются на определенный номер, вводят пин-код и беседуют и т.д. ... Теперь необходимо реализовать возможность создания конференций самому звонящему, и, путем нажатия какой-либо комбинации клавиш добавлять нужных абонентов к конференции. Поскольку я не программист, вопрос таков: есть ли уже готовые коды для реализации данного функционала? Или же придется всё-таки писать самому?

Заранее благодарен!
#20 27.07.2018 08:07

Re: features.conf в asterisk 1.8.4.1

есть ли уже готовые коды для реализации данного функционала? Или же придется всё-таки писать самому?
Прошу прощения, а можно чуть подробней расписать это:
add features.conf:

[applicationmap]
nway-start => *0,caller,Macro,nway-start
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok

add extensions.conf и так далее
..................................
Это на странице https://awsswa.livejournal.com/11103.html
А именно не понятно, в какие конфигурационные файлы вносить изменения?
#21 28.07.2018 06:30

Re: features.conf в asterisk 1.8.4.1

Если features.conf и extensions.conf вам ни о чем не говорят, то завязывайте с попытками администрировать Астериск и займитесь свои делом, т.к. это дело точно не ваше.
#22 30.07.2018 13:55

Re: features.conf в asterisk 1.8.4.1

Я наверно вопрос неконкретно задал.
Вопрос по FreePbx, в котором есть features.conf
Он содержит:

[general]
#include features_general_additional.conf
#include features_general_custom.conf

[applicationmap]
#include features_applicationmap_additional.conf
#include features_applicationmap_custom.conf

[featuremap]
#include features_featuremap_additional.conf
#include features_featuremap_custom.conf

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

features_applicationmap_custom.conf
и
extensions_custom.conf

Но что прописать и где, чтобы стартовал nway-start?
Переадресовка, например, стартует по коду atxfer=*2 в файле features_featuremap_additional.conf

Добавить код в features_general_custom.conf или features_featuremap_custom.conf ?
и какой код? Что сделать, чтобы цепочка срослась?

Спасибо.