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.
| Код: |
| exten => s,1,Set(CONFNO=${FindFreeConf()}) |
FindFreeConf - это заглушка. Тут лучше прописать номер действительной конференции.
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
[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
[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})
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})
в целом мало отличий от образца тока выбор свободной конференции и принудительный заброс инициатора конференции, разбираться было некогда
Благодарю! хотя почему мой код корректно не работает не ясно, но попробую твой. В нем все вроде прозрачно.
Код работает, БЛАГОДАРЮ! только один вопрос остался, не очень очевидно как попасть самому в конференцию в которую отравляешь людей. У меня астериск сам возвращает меня в конференцию спустя какой то тайм аут.
нажав *0 вызываем макрос nway-start
при этом с кем разгваривал сразу падает в свободную конференцию, а ты донабираешь номер
после соединения нажимаешь ** (вызывая макрос nway-ok) для отправления нового участника в конференцию и падаешь туда сам или нажимаешь *# (вызываешь макрос nway-notok) для того чтобы превать разговор с новым участником и вернуться к разговору с первым
для еще новых участников нажимаем 0 и по той же схеме
если что то не так, то показывай логи
| Код: |
| 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 |
что у вас в экстене 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
Попытался реализовать тоже самое в trixbox, но он не разпознает *0.
Подробнее здесь http://asteriskforum.ru/viewtopic.php?t= ... highlight=
Очень нужна консультация.
звонок из города. Отвечаем на вызов, *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
Непонятно где косяк у меня...
-- 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}) |
_________________
Debian + Asterisk 1.8.11.1 + spa3102 + spa8000
Да бы не создавать новый топип. Пишу тут.
Создал по Вашим конфигам динамическую конференцию, всё работает отлично в рамках того контекста, в котором находится пир создающий конференцию.
Т.е. если 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}) |
Сразу прошу не пинать, если пишу не то и не там.
По работе возникла необходимость организовать сип-телефонию. Был установлен Elastix 2.4.0 на виртуальную машину. Настройка вся проводилась через web-интерфейс, т.к. я не программист. В результате работает созвон абонентов один-на-один и работают конференции посредством создания комнат на сервере. Участники конференции созваниваются на определенный номер, вводят пин-код и беседуют и т.д. ... Теперь необходимо реализовать возможность создания конференций самому звонящему, и, путем нажатия какой-либо комбинации клавиш добавлять нужных абонентов к конференции. Поскольку я не программист, вопрос таков: есть ли уже готовые коды для реализации данного функционала? Или же придется всё-таки писать самому?
Заранее благодарен!
Re: features.conf в asterisk 1.8.4.1
Прошу прощения, а можно чуть подробней расписать это:есть ли уже готовые коды для реализации данного функционала? Или же придется всё-таки писать самому?
Это на странице https://awsswa.livejournal.com/11103.htmladd 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 и так далее
..................................
А именно не понятно, в какие конфигурационные файлы вносить изменения?
Re: features.conf в asterisk 1.8.4.1
Если features.conf и extensions.conf вам ни о чем не говорят, то завязывайте с попытками администрировать Астериск и займитесь свои делом, т.к. это дело точно не ваше.
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 ?
и какой код? Что сделать, чтобы цепочка срослась?
Спасибо.
Вопрос по 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 ?
и какой код? Что сделать, чтобы цепочка срослась?
Спасибо.