uname -a
Linux pbx.local 2.6.32-220.13.1.el6.i686 #1 SMP Tue Apr 17 22:09:08 BST 2012 i686 i686 i386 GNU/Linux
asterisk -V
Asterisk 1.8.12.0
I have a need to create some temporary/dynamic MeetMe conference rooms. My dial plan looks like this:
exten => 2,1,Background(custom/conf-room-creation-feature-password)
same => hang,1,Playback(vm-goodbye)
same => hang,n,Hangup
same => n,Set(LOOPCOUNT=0)
same => n(reset),Read(CREATE_PASSWORD,beep,6)
same => n,GotoIf($[ ${CREATE_PASSWORD} = 123456 ]?passed:failed)
same => n(passed),Playback(custom/five-digit-num-conf-to-create)
same => n,Read(NUM2CREATE,beep,5)
same => n,Playback(custom/conf-admin-pin)
same => n,Playback(custom/conf-admin-help)
same => n,Read(CONF_ADMIN_PIN,beep,5)
same => n,Playback(custom/conf-user-pin)
same => n,Playback(custom/conf-user-help)
same => n,Read(CONF_USER_PIN,beep,5)
[color=#4000BF]same => n,MeetMe(${NUM2CREATE},AcDirSTPx,${CONF_USER_PIN},${CONF_ADMIN_PIN})[/color]
same => n,Goto(gc-conf-bridge,s,2)
same => n(failed),SET(LOOPCOUNT=$[${LOOPCOUNT} + 1])
same => n,Playback(wrong-try-again-smarty)
same => n,GotoIf($[${LOOPCOUNT} > 3]?hang,1)
same => n,Goto(reset)
same => n,Hangup
The goal is for users who do not have a pre-configured, private MeetMe conference room already set up for them; to be able to create temporary ones. Eventually, all the users who need conference capabilities will have their own pre-configured rooms.
For office politics reasons, the temporary rooms need to have both an Admin PIN and a User PIN.
Based on reading online examples, the O’Reilly book (2nd edition (3rd edition on order)) and other research, I came up with the line highlighted above.
same => n,MeetMe(${NUM2CREATE},AcDirSTPx,${CONF_USER_PIN},${CONF_ADMIN_PIN})
Taking input from the user, I collect the number of the room they want to create (NUM2CREATE), the User PIN (CONF_USER_PIN) and the Admin PIN (CONF_ADMIN_PIN) and feed those items to the MeetMe() call, with the options:
a - Sets admin mode
A - Set Marked mode
c - Announce user count
d/D - Dynamically add conference (I’ve tried both ‘d’ and ‘D’)
i - Announce leave/join
P - Allow exit by pressing #
r - Record conference
S - Presents the menu
T - Talker Detection
x - Close conference when last marked user exits
Executing this section of dial plan, and supplying:
123456 - feature password
45678 - desired room number
1111 - Admin PIN
1234 - User PIN
results in being told that the PIN is invalid for this conference, no matter which PIN is supplied.
The log messages look like this:
[2012-06-05 20:17:15] VERBOSE[20765] pbx.c: == CDR updated on SIP/501-00000064
[2012-06-05 20:17:15] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:1] BackGround(“SIP/501-00000064”, “custom/conf-room-creation-feature-password”) in new stack
[2012-06-05 20:17:15] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘custom/conf-room-creation-feature-password.gsm’ (language ‘en’)
[2012-06-05 20:17:23] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:2] NoOp(“SIP/501-00000064”, "LOOPCOUNT AT TOP ********** is ") in new stack
[2012-06-05 20:17:23] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:3] Set(“SIP/501-00000064”, “LOOPCOUNT=0”) in new stack
[2012-06-05 20:17:23] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:4] Read(“SIP/501-00000064”, “CREATE_PASSWORD,beep,6”) in new stack
[2012-06-05 20:17:23] VERBOSE[20765] app_read.c: – Accepting a maximum of 6 digits.
[2012-06-05 20:17:23] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘beep.gsm’ (language ‘en’)
[2012-06-05 20:17:26] VERBOSE[20765] app_read.c: – User entered ‘123456’
[2012-06-05 20:17:26] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:5] GotoIf(“SIP/501-00000064”, “1?passed:failed”) in new stack
[2012-06-05 20:17:26] VERBOSE[20765] pbx.c: – Goto (gc-conf-bridge,2,6)
[2012-06-05 20:17:26] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:6] Playback(“SIP/501-00000064”, “custom/five-digit-num-conf-to-create”) in new stack
[2012-06-05 20:17:26] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘custom/five-digit-num-conf-to-create.gsm’ (language ‘en’)
[2012-06-05 20:17:31] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:7] Read(“SIP/501-00000064”, “NUM2CREATE,beep,5”) in new stack
[2012-06-05 20:17:31] VERBOSE[20765] app_read.c: – Accepting a maximum of 5 digits.
[2012-06-05 20:17:31] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘beep.gsm’ (language ‘en’)
[2012-06-05 20:17:34] VERBOSE[20765] app_read.c: – User entered ‘45678’
[2012-06-05 20:17:34] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:8] Playback(“SIP/501-00000064”, “custom/conf-admin-pin”) in new stack
[2012-06-05 20:17:34] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘custom/conf-admin-pin.gsm’ (language ‘en’)
[2012-06-05 20:17:37] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:9] Playback(“SIP/501-00000064”, “custom/conf-admin-help”) in new stack
[2012-06-05 20:17:37] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘custom/conf-admin-help.gsm’ (language ‘en’)
[2012-06-05 20:17:41] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:10] Read(“SIP/501-00000064”, “CONF_ADMIN_PIN,beep,5”) in new stack
[2012-06-05 20:17:41] VERBOSE[20765] app_read.c: – Accepting a maximum of 5 digits.
[2012-06-05 20:17:41] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘beep.gsm’ (language ‘en’)
[2012-06-05 20:17:49] VERBOSE[20765] app_read.c: – User entered ‘1111’
[2012-06-05 20:17:49] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:11] Playback(“SIP/501-00000064”, “custom/conf-user-pin”) in new stack
[2012-06-05 20:17:49] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘custom/conf-user-pin.gsm’ (language ‘en’)
[2012-06-05 20:17:52] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:12] Playback(“SIP/501-00000064”, “custom/conf-user-help”) in new stack
[2012-06-05 20:17:52] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘custom/conf-user-help.gsm’ (language ‘en’)
[2012-06-05 20:17:56] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:13] Read(“SIP/501-00000064”, “CONF_USER_PIN,beep,5”) in new stack
[2012-06-05 20:17:56] VERBOSE[20765] app_read.c: – Accepting a maximum of 5 digits.
[2012-06-05 20:17:56] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘beep.gsm’ (language ‘en’)
[2012-06-05 20:18:03] VERBOSE[20765] app_read.c: – User entered ‘1234’
[2012-06-05 20:18:03] VERBOSE[20765] pbx.c: – Executing [2@gc-conf-bridge:14] MeetMe(“SIP/501-00000064”, “45678,AcdirSTPx,1234,1111”) in new stack
[2012-06-05 20:18:03] VERBOSE[20765] app_meetme.c: – Created MeetMe conference 1023 for conference ‘45678’
[2012-06-05 20:18:03] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘conf-getpin.gsm’ (language ‘en’)
[2012-06-05 20:18:14] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘conf-invalidpin.gsm’ (language ‘en’)
[2012-06-05 20:18:17] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘conf-getpin.gsm’ (language ‘en’)
[2012-06-05 20:18:27] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘conf-invalidpin.gsm’ (language ‘en’)
[2012-06-05 20:18:30] VERBOSE[20765] file.c: – <SIP/501-00000064> Playing ‘conf-getpin.gsm’ (language ‘en’)
[2012-06-05 20:18:34] VERBOSE[20765] chan_dahdi.c: – Hungup ‘DAHDI/pseudo-143471029’
[2012-06-05 20:18:34] VERBOSE[20765] pbx.c: == Spawn extension (gc-conf-bridge, 2, 14) exited non-zero on ‘SIP/501-00000064’
[2012-06-05 20:18:34] VERBOSE[20765] pbx.c: – Executing [h@gc-conf-bridge:1] Hangup(“SIP/501-00000064”, “”) in new stack
[2012-06-05 20:18:34] VERBOSE[20765] pbx.c: == Spawn extension (gc-conf-bridge, h, 1) exited non-zero on ‘SIP/501-00000064’
With my current level of knowledge, it appears to me that I’m doing the right thing. Clearly the PBX thinks otherwise.
Any suggestions?