Parent Directory
|
Revision Log
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 |