[tools] / trunk / Video_Conferencing_Startup_Kit_Pkg_2 / asterisk / extensions-conference-demo.conf Repository:
ViewVC logotype

View of /trunk/Video_Conferencing_Startup_Kit_Pkg_2/asterisk/extensions-conference-demo.conf

Parent Directory Parent Directory | Revision Log Revision Log


Revision 89 - (download) (annotate)
Wed Sep 7 14:38:33 2011 UTC (20 months, 2 weeks ago) by jhermanski
File size: 19612 byte(s)
Add Video Demo Startup Kit
    1 ;-------------------------------------------------------------------------------
    2 
    3 ; Menu for all conference demos
    4 [conference_menu]
    5 exten => s,1,Set(CHANNEL(language)=en_US)
    6 exten => s,2,Set(OVERLAY=id=text_box&header=Video Conferencing&line1=1 Animal Conference&line2=2 PIN Conference&line3=3 Conference Record&line4=4 Controlled Conferencing&line5=5 Demo Menu&footer=PowerMedia)
    7 exten => s,3,Set(TIMEOUT_CNT=0)
    8 exten => s,4,WoomeraBackground(${APPNAME}/ConferenceMenu,${APPNAME}/black,${OVERLAY})
    9 exten => s,5,WaitExten(21)
   10 exten => 1,1,Goto(animal_conference,s,1)
   11 exten => 2,1,Goto(pin_conference,s,1)
   12 exten => 3,1,Goto(confrecord_menu,s,1)
   13 exten => 4,1,Goto(controlled_conf_menu,s,1)
   14 exten => 5,1,Goto(demo_intro,s,1)
   15 exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
   16 exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
   17 exten => t,n,WoomeraStop
   18 exten => t,n,Goto(conference_menu,s,4)
   19 exten => i,1,Goto(conference_menu,s,1)
   20 
   21 
   22 [pin_conference]
   23 ;
   24 ; A file-based DB keeps track of the allowed conferences and the number of participants
   25 ; in each.  The caller is asked if he wants to start a new conference, in which case an ID
   26 ; is supplied, the DB record updated accordingly and the caller is the first conferee in
   27 ; that conference.  He relays the ID to other people and they call in and enter the conference
   28 ; by supplying the ID.
   29 
   30 exten => s,1,Set(CHANNEL(language)=en_US)
   31 ;
   32 ; Query to ask if starting new conference or joining existing
   33 exten => s,2,Set(OVERLAY=id=text_box&header=PIN Conference&line1=1 Start New Conference&line2=2 Enter PIN Conference&line3=3 Demo Menu&footer=PowerMedia)
   34 exten => s,3,Set(TIMEOUT_CNT=0)
   35 exten => s,4,WoomeraBackground(${APPNAME}/PinConference,${APPNAME}/black,${OVERLAY})
   36 exten => s,5,WaitExten(20)
   37 exten => 1,1,Goto(new_pin_conference,s,1)
   38 exten => 2,1,Goto(get_existing_pin,s,1)
   39 exten => 3,1,Goto(demo_intro,s,1)
   40 exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
   41 exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
   42 exten => t,n,WoomeraStop
   43 exten => t,n,Goto(pin_conference,s,4)
   44 exten => i,1,Goto(pin_conference,s,1)
   45 
   46 [new_pin_conference]
   47 ;
   48 ; AGI script will check DB for next available conference ID and voice it to caller.
   49 ; Then we put him into that conference.  Conferencd ID returned in PIN_CONF_ID
   50 
   51 exten => s,1,Set(CHANNEL(language)=en_US)
   52 exten => s,2,Set(OVERLAY=id=text_box&header=PIN Conference&line1=     &line2=   Starting New&line3=   PIN Conference&footer=PowerMedia)
   53 exten => s,3,WoomeraBackground(${APPNAME}/NewPinConference,${APPNAME}/black,${OVERLAY})
   54 exten => s,4,WaitExten(10)
   55 exten => i,1,Goto(new_pin_conference,t,1)
   56 exten => t,1,WoomeraStop
   57 exten => t,2,AGI(enter_new_pin_conf.agi)
   58 ;
   59 ; Get either the next available ID or "NONE" - all conferences in use
   60 exten => t,3,GotoIf($["${PIN_CONF_ID}" = "NONE"]?all_confs_in_use,s,1)
   61 ; When done with the conference [remove_from_pin_conference] context will take care
   62 ; of DB update that marks a caller leaving the conference
   63 exten => t,4,Dial(WOOMERA/conf:${PIN_CONF_ID}/tiles=4,30,F(remove_from_pin_conf^s^1))
   64 
   65 [get_existing_pin]
   66 ;
   67 ; AGI script will check DB to validate conference ID.  If OK,
   68 ; we put him into that conference
   69 
   70 exten => s,1,Set(OVERLAY=id=text_box&header=PIN Conference&line1=Please enter your 3&line2=digit conference PIN&footer=PowerMedia)
   71 exten => s,2,Set(TIMEOUT_CNT=0)
   72 exten => s,3,WoomeraBackground(${APPNAME}/PinEntryPrompt,${APPNAME}/black,${OVERLAY})
   73 exten => s,4,WaitExten(10)
   74 ; 101-106 are valid entries
   75 exten => _XXX,1,AGI(validate_pin_conf.agi, ${EXTEN})
   76 exten => _XXX,n,Set(COLLECTED_PIN=${EXTEN})
   77 exten => _XXX,n,GotoIf($["${VALID_PIN}" = "T"]?join_existing_pin_conference,s,1)
   78 exten => _XXX,n,GotoIf($["${VALID_PIN}" = "F"]?bad_pin,s,1)
   79 exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
   80 exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
   81 exten => t,n,WoomeraStop
   82 exten => t,n,Goto(get_existing_pin,s,3)
   83 exten => i,1,Goto(get_existing_pin,s,1)
   84 
   85 [bad_pin]
   86 ;
   87 ; Deliver "Entered bad PIN" message and resolicit
   88 
   89 exten => s,1,Set(OVERLAY=id=text_box&header=PIN Conference&line1=Invalid PIN&line2=Please re-enter PIN&footer=PowerMedia)
   90 exten => s,n,WoomeraBackground(${APPNAME}/BadPin,${APPNAME}/black,${OVERLAY})
   91 exten => s,n,WaitExten(6)
   92 exten => t,1,WoomeraStop
   93 exten => t,n,Goto(get_existing_pin,s,1)
   94 
   95 
   96 [join_existing_pin_conference]
   97 ;
   98 ; Good conference PIN - can join
   99 exten => s,1,AGI(enter_existing_pin_conf.agi,${COLLECTED_PIN})
  100 ; When done with the conference [remove_from_pin_conference] context will take care
  101 ; of DB update that marks a caller leaving the conference
  102 exten => s,n,Dial(WOOMERA/conf:${PIN_CONF_ID}/tiles=4,30,F(remove_from_pin_conf^s^1))
  103 
  104 [remove_from_pin_conf]
  105 ;
  106 ; Land in this context when have left a pin conference.
  107 ; Use AGI to decrement the pin conference database for this particular conference
  108 exten => s,1,Set(CHANNEL(language)=en_US)
  109 exten => s,n,AGI(leave_pin_conf.agi,${CHANNEL:13:3})
  110 exten => s,n,Hangup
  111 
  112 [all_confs_in_use]
  113 ;
  114 ; No open conference IDs - deliver nice message and dump
  115 ;
  116 exten => s,1,Set(OVERLAY=id=text_box&header=Conferences Busy&line1=All Conference IDs&line2=are currently in use!&line3=Please try later&footer=PowerMedia)
  117 exten => s,n,WoomeraBackground(${APPNAME}/AllConferencesInUse,${APPNAME}/black,${OVERLAY})
  118 exten => s,n,WaitExten(10)
  119 exten => t,1,WoomeraStop
  120 exten => t,n,hangup
  121 
  122 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  123 ;
  124 ; Animal Conference
  125 ;
  126 ; Play an intro still with some voiceover, then kick off the 3 animals that
  127 ; come into the conference using SIPP plays
  128 ;
  129 [animal_conference]
  130 ;
  131 ; AGI script will check DB for next available animal conference ID.
  132 ; Then we put him into that conference.  Conferencd ID returned in ANIMAL_CONF_ID
  133 
  134 exten => s,1,Set(CHANNEL(language)=en_US)
  135 exten => s,n,WoomeraBackground(${APPNAME}/AnimalConference,${APPNAME}/AnimalConference)
  136 exten => s,n,WaitExten(5)
  137 exten => _[0123456789#*],1,Goto(start_animal_conference,s,1)
  138 exten => t,1,WoomeraStop
  139 exten => t,n,Goto(start_animal_conference,s,1)
  140 exten => i,1,Goto(start_animal_conference,s,1)
  141 
  142 [start_animal_conference]
  143 exten => s,1,AGI(get_new_animal_conf_id.agi)
  144 ; Get either the next available ID or "NONE" - all conferences in use
  145 exten => s,n,GotoIf($["${ANIMAL_CONF_ID}" = "NONE"]?all_confs_in_use,s,1)
  146 exten => s,n,System(${SIPP_LOC}/CIF/startanimalconf.sh ${ANIMAL_CONF_ID})
  147 exten => s,n,Dial(WOOMERA/conf:${ANIMAL_CONF_ID}/tiles=4,30,F(leave_animal_conf^s^1))
  148 
  149 
  150 [leave_animal_conf]
  151 ;
  152 ; Land in this context when have left an animal conference.
  153 ; Conference ID is embedded in the channel name
  154 ; Use AGI to decrement the pin conference database for this particular conference
  155 exten => s,1,Set(CHANNEL(language)=en_US)
  156 exten => s,n,AGI(leave_animal_conf.agi,${CHANNEL:13:3})
  157 exten => s,n,Hangup
  158 
  159 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  160 ;
  161 ; Conference Recording
  162 ;
  163 [confrecord_menu]
  164 exten => s,1,Set(CHANNEL(language)=en_US)
  165 exten => s,2,Set(OVERLAY=id=text_box&header=Conference Record&line1=1 Start/Record New&line2=   Conference&line3=2 Enter Existing Conference&line4=3 Replay Conference&line5=4 Demo Menu&footer=PowerMedia)
  166 exten => s,3,Set(TIMEOUT_CNT=0)
  167 exten => s,4,WoomeraBackground(${APPNAME}/ConferenceRecordMenu,${APPNAME}/black,${OVERLAY})
  168 exten => s,5,WaitExten(30)
  169 exten => 1,1,Goto(confrecord,1,1)
  170 exten => 2,1,Goto(confrecord,2,1)
  171 exten => 3,1,Goto(confrecord,3,1)
  172 exten => 4,1,Goto(demo_intro,s,1)
  173 exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
  174 exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
  175 exten => t,n,WoomeraStop
  176 exten => t,n,Goto(confrecord_menu,s,4)
  177 exten => i,1,Goto(confrecord_menu,s,1)
  178 
  179 [confrecord]
  180 ; This conferee enters the recorded conference, already knowing the conference PIN
  181 ; Recording is only started and stopped by the first person who generates the conferenc PIN
  182 ; This one enters and triggers recording
  183 ; And ends conference record on leaving
  184 exten => 1,1,Answer
  185 exten => 1,n,Set(CHANNEL(language)=en_US)
  186 exten => 1,n,AGI(enter_new_conf_record.agi)
  187 ; Get either the next available ID or "NONE" - all conferences in use
  188 exten => 1,n,GotoIf($["${CONF_RECORD_ID}" = "NONE"]?all_confs_in_use,s,1)
  189 exten => 1,n,System(${AMI_SCRIPT_LOC}/confrec_originate.sh ${CONF_RECORD_ID})
  190 exten => 1,n,Dial(WOOMERA/conf:${CONF_RECORD_ID}/tiles=2,30,F(done_with_recorded_conference^s^1))
  191 
  192 exten => 2,1,Answer
  193 exten => 2,n,Set(CHANNEL(language)=en_US)
  194 exten => 2,n,Goto(get_existing_recorded_pin,s,1)
  195 
  196 ; Conference recording playback -
  197 exten => 3,1,Answer
  198 exten => 3,n,Set(CHANNEL(language)=en_US)
  199 exten => 3,n,Verbose(Replay conference recording)
  200 exten => 3,n,Goto(get_pin_for_replay,s,1)
  201 
  202 ; Conexts to trigger conference recording.  Extension and recording file name
  203 ; corresponds to conference ID
  204 ; Recording terminates when the originator leaves the conference
  205 [conf_record_131]
  206 exten => s,1,Set(CHANNEL(language)=en_US)
  207 exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_131,${APPNAME}/conference_recording_131,${MAX_CONF_RECORD_TIME})
  208 exten => s,n,Hangup
  209 [conf_record_132]
  210 exten => s,1,Set(CHANNEL(language)=en_US)
  211 exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_132,${APPNAME}/conference_recording_132,${MAX_CONF_RECORD_TIME})
  212 exten => s,n,Hangup
  213 [conf_record_133]
  214 exten => s,1,Set(CHANNEL(language)=en_US)
  215 exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_133,${APPNAME}/conference_recording_133,${MAX_CONF_RECORD_TIME})
  216 exten => s,n,Hangup
  217 [conf_record_134]
  218 exten => s,1,Set(CHANNEL(language)=en_US)
  219 exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_134,${APPNAME}/conference_recording_134,${MAX_CONF_RECORD_TIME})
  220 exten => s,n,Hangup
  221 [conf_record_135]
  222 exten => s,1,Set(CHANNEL(language)=en_US)
  223 exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_135,${APPNAME}/conference_recording_135,${MAX_CONF_RECORD_TIME})
  224 exten => s,n,Hangup
  225 [conf_record_136]
  226 exten => s,1,Set(CHANNEL(language)=en_US)
  227 exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_136,${APPNAME}/conference_recording_136,${MAX_CONF_RECORD_TIME})
  228 exten => s,n,Hangup
  229 
  230 [done_with_recorded_conference]
  231 exten => s,1,Set(CHANNEL(language)=en_US)
  232 exten => s,n,AGI(leave_recorded_conf.agi, ${CHANNEL})
  233 exten => s,n,System(${AMI_SCRIPT_LOC}/confrec_hangup.sh ${CHANNEL})
  234 exten => s,n,Hangup
  235 
  236 ; Enter Existing Conference
  237 ;;;;;;;;;;;;;;;;;;;;;;;;;;;
  238 
  239 [get_existing_recorded_pin]
  240 ;
  241 ; AGI script will check DB to validate conference ID.  If OK,
  242 ; we put him into that conference
  243 
  244 exten => s,1,Set(OVERLAY=id=text_box&header=Conference Record&line1=Please enter your 3&line2=digit conference PIN&footer=PowerMedia)
  245 exten => s,2,Set(TIMEOUT_CNT=0)
  246 exten => s,3,WoomeraBackground(${APPNAME}/PinEntryPrompt,${APPNAME}/black,${OVERLAY})
  247 exten => s,4,WaitExten(10)
  248 ; 131-136 are valid entries
  249 exten => _XXX,1,AGI(validate_record_pin.agi, ${EXTEN})
  250 exten => _XXX,n,Set(COLLECTED_PIN=${EXTEN})
  251 exten => _XXX,n,GotoIf($["${VALID_RECORD_PIN}" = "T"]?join_existing_recorded_conference,s,1)
  252 exten => _XXX,n,GotoIf($["${VALID_RECORD_PIN}" = "F"]?bad_pin_for_recorded_conf,s,1)
  253 exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
  254 exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
  255 
  256 exten => t,n,WoomeraStop
  257 exten => t,n,Goto(get_existing_recorded_pin,s,3)
  258 exten => i,1,Goto(get_existing_recorded_pin,s,1)
  259 
  260 [bad_pin_for_recorded_conf]
  261 ;
  262 ; Deliver "Entered bad PIN" message and resolicit
  263 
  264 exten => s,1,Set(OVERLAY=id=text_box&header=Conference Record&line1=Invalid PIN&line2=Please re-enter PIN&footer=PowerMedia)
  265 exten => s,n,WoomeraBackground(${APPNAME}/BadPin,${APPNAME}/black,${OVERLAY})
  266 exten => s,n,WaitExten(6)
  267 exten => t,1,WoomeraStop
  268 exten => t,n,Goto(get_existing_recorded_pin,s,1)
  269 
  270 [join_existing_recorded_conference]
  271 ;
  272 ; Good conference PIN - can join recorded conference
  273 exten => s,1,AGI(enter_existing_recorded_conf.agi,${COLLECTED_PIN})
  274 ; When done with the conference [done_with_recorded_conference] context will take care
  275 ; of DB update that marks a caller leaving the conference
  276 exten => s,n,Dial(WOOMERA/conf:${COLLECTED_PIN}/tiles=4,30,F(done_with_recorded_conference^s^1))
  277 
  278 ; Replay
  279 ;;;;;;;;
  280 
  281 [get_pin_for_replay]
  282 exten => s,1,Set(OVERLAY=id=text_box&header=Conference Record&line1=Please enter the 3&line2=digit conference ID&line3=to replay&footer=PowerMedia)
  283 exten => s,n,WoomeraBackground(${APPNAME}/EnterReplayID,${APPNAME}/black,${OVERLAY})
  284 exten => s,n,WaitExten(15)
  285 ; 131-136 are valid entries
  286 exten => _XXX,1,AGI(validate_record_pin_for_replay.agi, ${EXTEN})
  287 exten => _XXX,n,Set(COLLECTED_PIN=${EXTEN})
  288 exten => _XXX,n,GotoIf($["${VALID_RECORD_PIN}" = "F"]?bad_record_pin,s,1)
  289 ;
  290 ; Play one of the recordings
  291 exten => _XXX,n,WoomeraPlayback(${APPNAME}/conference_recording_${COLLECTED_PIN},${APPNAME}/conference_recording_${COLLECTED_PIN})
  292 exten => _XXX,n,Hangup
  293 exten => t,1,WoomeraStop
  294 exten => t,n,Goto(get_pin_for_replay,s,1)
  295 exten => i,1,Goto(get_pin_for_replay,s,1)
  296 
  297 [bad_record_pin]
  298 ;
  299 ; Deliver "Entered bad PIN" message and resolicit
  300 exten => s,1,Set(OVERLAY=id=text_box&header=Conference Record&line1=Invalid PIN&line2=Please re-enter PIN&footer=PowerMedia)
  301 exten => s,n,WoomeraBackground(${APPNAME}/BadPin,${APPNAME}/black,${OVERLAY})
  302 exten => s,n,WaitExten(6)
  303 exten => t,1,WoomeraStop
  304 exten => t,n,Goto(get_pin_for_replay,s,1)
  305 
  306 
  307 
  308 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  309 ;
  310 ; Controlled Conference
  311 ; Assumes that conference ids used are configured with "mode = controlled" on DiaStar.
  312 ;
  313 ; The controller's connection in managed by the dialplan by passing the 'G'
  314 ; option to the Dial() application. This has been done to allow an image to be
  315 ; played to conference attendees at times when no presenters are connected. The
  316 ; controllers audio remains connected at all times and should be muted locally
  317 ; if necessary.
  318 ;
  319 
  320 [controlled_conf_menu]
  321 ;
  322 ; A file-based DB keeps track of the allowed conferences and the number of participants
  323 ; in each.  The caller is asked if he wants to start a new conference, in which case an ID
  324 ; is supplied, the DB record updated accordingly and the caller is the first conferee in
  325 ; that conference.  He relays the ID to other people and they call in and enter the conference
  326 ; by supplying the ID.
  327 
  328 exten => s,1,Set(CHANNEL(language)=en_US)
  329 exten => s,2,Set(OVERLAY=id=text_box&header=Controlled Conf&line1=1 Start New Conference&line2=   as Controller&line3=2 Enter as Presenter&line4=3 Enter as Atendee&line5=4 Demo Menu&footer=PowerMedia)
  330 exten => s,3,Set(TIMEOUT_CNT=0)
  331 exten => s,4,WoomeraBackground(${APPNAME}/ControlledConference,${APPNAME}/black,${OVERLAY})
  332 exten => s,5,WaitExten(40)
  333 exten => 1,1,Goto(controller,s,1)
  334 exten => 2,1,Set(CONFEREE_TYPE=presenter)
  335 exten => 2,n,Goto(get_controlled_pin,s,1)
  336 exten => 3,1,Set(CONFEREE_TYPE=attendee)
  337 exten => 3,n,Goto(get_controlled_pin,s,1)
  338 exten => 4,1,Goto(demo_intro,s,1)
  339 exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
  340 exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
  341 exten => t,n,WoomeraStop
  342 exten => t,n,Goto(controlled_conf_menu,s,4)
  343 exten => i,1,Goto(controlled_conf_menu,s,1)
  344 
  345 
  346 [controller]
  347 ; The conference controller dials into here.
  348 ; Setting the number of tiles to 0, overrides the configuration and allows for
  349 ; the number of tiles shown to grow and shrink dynamically along with the number
  350 ; of presenters.
  351 ;
  352 ;
  353 ; AGI script will check DB for next available conference ID and voice it to caller.
  354 ; Then we put him into that conference.  Conferencd ID returned in PIN_CONF_ID
  355 
  356 exten => s,1,Set(_PARENT=${CHANNEL})
  357 exten => s,2,Set(OVERLAY=id=text_box&header=Controlled Conf&line1=     &line2=   Starting New&line3=   Controlled Conference&footer=PowerMedia)
  358 exten => s,3,WoomeraBackground(${APPNAME}/NewControlledConference,${APPNAME}/black,${OVERLAY})
  359 exten => s,4,WaitExten(16)
  360 exten => i,1,Goto(controller,t,1)
  361 exten => t,1,WoomeraStop
  362 exten => t,2,AGI(enter_new_controlled_conf.agi)
  363 ;
  364 ; Get either the next available ID or "NONE" - all conferences in use
  365 exten => t,3,GotoIf($["${CONTROLLED_CONF_ID}" = "NONE"]?all_confs_in_use,s,1)
  366 exten => t,4,Dial(WOOMERA/${WOOMERA_PROFILE}/conf:${CONTROLLED_CONF_ID}/role=controller:tiles=0,30,G(cc_connected,s,1)))
  367 exten => t,5,Hangup
  368 
  369 [get_controlled_pin]
  370 ;
  371 ; AGI script will check DB to validate conference ID.  If OK,
  372 ; we put him into that conference
  373 
  374 exten => s,1,Set(OVERLAY=id=text_box&header=Controlled Conference&line1=Please enter your 3&line2=digit conference PIN&footer=PowerMedia)
  375 exten => s,2,Set(TIMEOUT_CNT=0)
  376 exten => s,3,WoomeraBackground(${APPNAME}/PinEntryPrompt,${APPNAME}/black,${OVERLAY})
  377 exten => s,4,WaitExten(10)
  378 ; 111-116 are valid entries
  379 exten => _XXX,1,AGI(validate_controlled_conf.agi, ${EXTEN})
  380 exten => _XXX,n,Set(COLLECTED_PIN=${EXTEN})
  381 exten => _XXX,n,GotoIf($["${VALID_PIN}" = "T"]?enter_existing_controlled_conf,s,1)
  382 exten => _XXX,n,GotoIf($["${VALID_PIN}" = "F"]?bad_controlled_pin,s,1)
  383 exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
  384 exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
  385 exten => t,n,WoomeraStop
  386 exten => t,n,Goto(get_controlled_pin,s,3)
  387 exten => i,1,Goto(get_controlled_pin,s,1)
  388 
  389 [bad_controlled_pin]
  390 ;
  391 ; Deliver "Entered bad PIN" message and resolicit
  392 
  393 exten => s,1,Set(OVERLAY=id=text_box&header=Controlled Conference&line1=Invalid PIN&line2=Please re-enter PIN&footer=PowerMedia)
  394 exten => s,n,WoomeraBackground(${APPNAME}/BadPin,${APPNAME}/black,${OVERLAY})
  395 exten => s,n,WaitExten(6)
  396 exten => t,1,WoomeraStop
  397 exten => t,n,Goto(get_controlled_pin,s,1)
  398 
  399 [enter_existing_controlled_conf]
  400 ; Presenters are full members of the conference whose
  401 ; media are included in the output.
  402 ;
  403 ; Attendees are passive observers of the conference whose
  404 ; own media are not included in the output.
  405 ;
  406 ; Both enter a conference here.
  407 exten => s,1,AGI(enter_existing_controlled_conf.agi,${CONTROLLED_CONF_ID})
  408 exten => s,n,Dial(WOOMERA/${WOOMERA_PROFILE}/conf:${CONTROLLED_CONF_ID}/role=${CONFEREE_TYPE},30)
  409 exten => s.n,Hangup
  410 
  411 [remove_from_controlled_conf]
  412 ; The conference controller lands in this context when he leaves a controlled conference.
  413 ; Extension matches conference ID to decrement.
  414 ; Use AGI to set the pin conference database to zer for this particular conference, since
  415 ; everyone will be tossed out when the controller leaves
  416 exten => s,1,Set(CHANNEL(language)=en_US)
  417 ; Conference ID is embedded in the channel name
  418 exten => s,n,AGI(leave_controlled_conf.agi,${CHANNEL:14:3})
  419 exten => s,n,Hangup
  420 
  421 [cc_connected]
  422 ; When the conference controller call connects to the conference, the Dial()
  423 ; application jumps to the context.
  424 ;
  425 exten => s,1,Goto(cc_caller,s,1)
  426 exten => s,2,Goto(cc_callee,s,1)
  427 
  428 ; Answer the original inbound call.
  429 ;
  430 [cc_caller]
  431 exten => s,1,Answer
  432 exten => t,1,NoOp
  433 exten => h,1,Hangup
  434 
  435 ; The controllers own video stream can be shown instead of the image file by
  436 ; removing the WoomeraBackround() application.
  437 ;
  438 [cc_callee]
  439 exten => s,1,Set(CHANNEL(language)=en_US)
  440 exten => s,n,WoomeraBackground(,${APPNAME}/dialogic-controlled-conf)
  441 exten => s,n,Bridge(${PARENT})
  442 ; After controller hangs up, we continue here and need to zero out the
  443 ; number of people in the conference
  444 exten => s,n,Goto(remove_from_controlled_conf,s,1)
  445 exten => s,n,Hangup
  446 ;-------------------------------------------------------------------------------
  447 
  448 

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.8