Tuesday, March 1, 2011

Немного подправленный Asterisk n-way call

Было найдено тут.

Немного копипасты:

http://www.voip-info.org/wiki/view/Asterisk+n-way+call+HOWTO
Надо просто немного подправить скрипт..
теперь инициатор собирает конференцию (и не вываливается!!!), все кто есть в конференции тоже могут приглашать народ, если остается один человек - ему играется музыка ождания и он может начать приглашать людей!

в extensions.conf
[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)
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) # добавляем


ну и в features.conf все, как в ссылке:
[applicationmap]
nway-start => *0,caller,Macro,nway-start
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok

6 comments:

  1. А откуда взяли FindFreeConf() ?

    ReplyDelete
    Replies
    1. Это заглушка. Я просто создал для каждого пользователя по комнате, и привязывался к экстеншену.

      Delete
    2. http://awsswa.livejournal.com/11103.html Еще один вариант

      Delete
  2. А после небольшой модификации можно и не только ".... инициатор собирает конференцию", а и ".... callee собирает конференцию" и не вываливается из неё.

    ReplyDelete
  3. Как это работает? Комментариев очень мало.

    ReplyDelete
    Replies
    1. http://www.voip-info.org/wiki/view/Asterisk+n-way+call+HOWTO

      Delete