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

Annotation of /trunk/publicdemo/asterisk/extensions-conference-demo.conf

Parent Directory Parent Directory | Revision Log Revision Log


Revision 75 - (view) (download)

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

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