All, Thank you in advance for any help. I have a customer in need of a conferencing system. A requirement is for users to each have their own PIN for the same bridge. So, I put the list of users, PINs bridges into a MYSQL DB and used an ODBC connector to parse the table. Asterisk is connected and reads the rows as expected. The problem is that if a user enters a PIN that is NOT in the table, asterisk goes crazy and continues to loop forever. Please have a look and tell me where I went so wrong. Func_odbc.conf looks like this: [PIN] dsn=BRIDGE mode=multirow readsql=SELECT pin from users WHERE confid='${SQL_ESC(${CONF_ID})}' extensions.conf section: [infromhost] ;Host dials 8888 over SIP trunk exten=8888,1,Answer exten=8888,n,Background(conf-getconfno) exten=8888,n,WaitExten(10) exten=8888,n,Hangup exten=_XXXXXX,1,Set(GLOBAL(CONF_ID)=${EXTEN}) exten=_XXXXXX,n,GoTo(rooms,${EXTEN},1) ; [rooms] exten=_XXXXXX,1,Set(CONF_ID=${EXTEN}) exten=_XXXXXX,n,Background(conf-getpin) exten=_XXXXXX,n,WaitExten(5) exten=_XXXXXX,n,Hangup exten=_1XXXXX,1,Goto(getpin,${EXTEN},1) exten=_2XXXXX,1,Goto(getpin,${EXTEN},1) exten=_3XXXXX,1,Goto(getpin,${EXTEN},1) exten=_4XXXXX,1,Goto(getpin,${EXTEN},1) exten=_5XXXXX,1,Goto(getpin,${EXTEN},1) exten=_6XXXXX,1,Goto(getpin,${EXTEN},1) exten=_7XXXXX,1,Goto(getpin,${EXTEN},1) exten=_8XXXXX,1,Goto(getpin,${EXTEN},1) exten=_9XXXXX,1,Goto(getpin,${EXTEN},1) exten=i,1,Goto(getpin,${CONF_PIN},1) ; [getpin] exten=_XXXXXX,1,Set(GLOBAL(CONF_PIN)=${EXTEN}) exten=_XXXXXX,n,Set(ODBC_ID=${ODBC_PIN(1)}) exten=_XXXXXX,n(loop_start),NoOp() exten=_XXXXXX,n,Set(ROW_RESULT=${ODBC_FETCH(${ODBC_ID})}) exten=_XXXXXX,n,GotoIf($["${ODBC_FETCH}" = "FAILURE"]?cleanup,1) exten=_XXXXXX,n,GotoIf($["${ROW_RESULT}" = "${CONF_PIN}"]?good_exten,1) exten=_XXXXXX,n,Goto(loop_start) ; exten=cleanup,1,Verbose(1,Finish up) same=n,Verbose(1,PIN not found) same=n,ODBCFinish(${ODBC_ID}) same=n,playback(conf-invalidpin) same=n,Goto(rooms,${CONF_ID}1) same=n,Hangup() ; exten=good_exten,1,Verbose(1,The PIN is available) same=n,ODBCFinish(${ODBC_ID}) same=n,Verbose(1,Drop Caller into the bridge) same=n,Set(CONFBRIDGE(user,template)=default_user) same=n,ConfBridge(${CONF_ID},default_bridge,,sample_user_menu) same=n,Hangup() ; The log shows the 3 existing DB table rows are found but continues to cycle indefinitely if the PIN is NOT found. First few rows of the console log: ======================================================================== Connected to Asterisk 11.3.0 currently running on atpconf001 (pid = 1695) atpconf001*CLI> == Using SIP RTP CoS mark 5 atpconf001*CLI> -- Executing [067740 at default:1] Set("SIP/testbridge2-00000021", "GLOBAL(CONF_ID)=067740") in new stack == Setting global variable 'CONF_ID' to '067740' -- Executing [067740 at default:2] Goto("SIP/testbridge2-00000021", "rooms,067740,1") in new stack atpconf001*CLI> -- Goto (rooms,067740,1) -- Executing [067740 at rooms:1] Set("SIP/testbridge2-00000021", "CONF_ID=067740") in new stack -- Executing [067740 at rooms:2] BackGround("SIP/testbridge2-00000021", "conf-getpin") in new stack atpconf001*CLI> -- <SIP/testbridge2-00000021> Playing 'conf-getpin.slin' (language 'en') atpconf001*CLI> -- Executing [067740 at rooms:3] WaitExten("SIP/testbridge2-00000021", "5") in new stack atpconf001*CLI> == CDR updated on SIP/testbridge2-00000021 -- Executing [444999 at rooms:1] Goto("SIP/testbridge2-00000021", "getpin,444999,1") in new stack -- Goto (getpin,444999,1) -- Executing [444999 at getpin:1] Set("SIP/testbridge2-00000021", "GLOBAL(CONF_PIN)=444999") in new stack == Setting global variable 'CONF_PIN' to '444999' atpconf001*CLI> -- Executing [444999 at getpin:2] Set("SIP/testbridge2-00000021", "ODBC_ID=32") in new stack -- Executing [444999 at getpin:3] NoOp("SIP/testbridge2-00000021", "") in new stack -- Executing [444999 at getpin:4] Set("SIP/testbridge2-00000021", "ROW_RESULT=112233") in new stack atpconf001*CLI> -- Executing [444999 at getpin:5] GotoIf("SIP/testbridge2-00000021", "0?cleanup,1") in new stack -- Executing [444999 at getpin:6] GotoIf("SIP/testbridge2-00000021", "0?good_exten,1") in new stack -- Executing [444999 at getpin:7] Goto("SIP/testbridge2-00000021", "loop_start") in new stack -- Goto (getpin,444999,3) -- Executing [444999 at getpin:3] NoOp("SIP/testbridge2-00000021", "") in new stack -- Executing [444999 at getpin:4] Set("SIP/testbridge2-00000021", "ROW_RESULT=333333") in new stack -- Executing [444999 at getpin:5] GotoIf("SIP/testbridge2-00000021", "0?cleanup,1") in new stack -- Executing [444999 at getpin:6] GotoIf("SIP/testbridge2-00000021", "0?good_exten,1") in new stack -- Executing [444999 at getpin:7] Goto("SIP/testbridge2-00000021", "loop_start") in new stack -- Goto (getpin,444999,3) -- Executing [444999 at getpin:3] NoOp("SIP/testbridge2-00000021", "") in new stack -- Executing [444999 at getpin:4] Set("SIP/testbridge2-00000021", "ROW_RESULT=135792") in new stack //LAST GOOD RESULT!!! atpconf001*CLI> -- Executing [444999 at getpin:5] GotoIf("SIP/testbridge2-00000021", "0?cleanup,1") in new stack -- Executing [444999 at getpin:6] GotoIf("SIP/testbridge2-00000021", "0?good_exten,1") in new stack -- Executing [444999 at getpin:7] Goto("SIP/testbridge2-00000021", "loop_start") in new stack atpconf001*CLI> -- Goto (getpin,444999,3) -- Executing [444999 at getpin:3] NoOp("SIP/testbridge2-00000021", "") in new stack atpconf001*CLI> -- Executing [444999 at getpin:4] Set("SIP/testbridge2-00000021", "ROW_RESULT=") in new stack //BAD RESULTS FOREVER!!! atpconf001*CLI> -- Executing [444999 at getpin:5] GotoIf("SIP/testbridge2-00000021", "0?cleanup,1") in new stack atpconf001*CLI> -- Executing [444999 at getpin:6] GotoIf("SIP/testbridge2-00000021", "0?good_exten,1") in new stack atpconf001*CLI> -- Executing [444999 at getpin:7] Goto("SIP/testbridge2-00000021", "loop_start") in new stack -- Goto (getpin,444999,3) -- Executing [444999 at getpin:3] NoOp("SIP/testbridge2-00000021", "") in new stack //AND SO ON........ Thank you!! Pat Collins... -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20130418/c310e030/attachment.htm>
>> The problem is that if a user enters a PIN that is NOT in the table, asterisk goes crazy and continues to loop forever.Why don't you use read instead? This is what I have: exten => s,n,Answer(500) exten => s,n,Read(get-room-num,conf-getconfno) ; ********************************************************* ; Get conference room number, if number entered is 99999 ** ; jump to verify. ** ; ********************************************************* exten => s,n,NoOP(${conf-getchannel}) Do some mysql magic here exten => s,n,GotoIf($["${conference.room}" != ""]?s-process,1:s-notexist,1) Doug -- Ben Franklin quote: "Those who would give up Essential Liberty to purchase a little Temporary Safety, deserve neither Liberty nor Safety." -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20130418/da880a48/attachment.htm>
I think there is no problem with asterisk. exten=_XXXXXX,n,GotoIf($["${ODBC_FETCH}" = "FAILURE"]?cleanup,1) exten=_XXXXXX,n,GotoIf($["${ROW_RESULT}" = "${CONF_PIN}"]?good_exten,1) It should be, exten=_XXXXXX,n,GotoIf($["${ODBC_FETCH}" = "FAILURE"]?getpin,cleanup,1) exten=_XXXXXX,n,GotoIf($["${ROW_RESULT}" "${CONF_PIN}"]?getpin,good_exten,1) Hope it helps, Regards, Bharat Lalcheta On Thu, Apr 18, 2013 at 4:45 PM, Pat Collins <drdialtone at optonline.net>wrote:> All,**** > > Thank you in advance for any help.**** > > I have a customer in need of a conferencing system. A requirement is for > users to each have their own PIN for the same bridge.**** > > So, I put the list of users, PINs bridges into a MYSQL DB and used an ODBC > connector to parse the table.**** > > Asterisk is connected and reads the rows as expected. The problem is that > if a user enters a PIN that is NOT in the table, asterisk goes crazy and > continues to loop forever.**** > > Please have a look and tell me where I went so wrong.**** > > Func_odbc.conf looks like this:**** > > [PIN]**** > > dsn=BRIDGE**** > > mode=multirow**** > > readsql=SELECT pin from users WHERE confid='${SQL_ESC(${CONF_ID})}'**** > > ** ** > > extensions.conf section:**** > > [infromhost] ;Host dials 8888 over SIP trunk exten=8888,1,Answer**** > > exten=8888,n,Background(conf-getconfno)**** > > exten=8888,n,WaitExten(10)**** > > exten=8888,n,Hangup**** > > exten=_XXXXXX,1,Set(GLOBAL(CONF_ID)=${EXTEN})**** > > exten=_XXXXXX,n,GoTo(rooms,${EXTEN},1)**** > > ;**** > > [rooms]**** > > exten=_XXXXXX,1,Set(CONF_ID=${EXTEN})**** > > exten=_XXXXXX,n,Background(conf-getpin)**** > > exten=_XXXXXX,n,WaitExten(5)**** > > exten=_XXXXXX,n,Hangup**** > > exten=_1XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_2XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_3XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_4XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_5XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_6XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_7XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_8XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_9XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=i,1,Goto(getpin,${CONF_PIN},1)**** > > ;**** > > [getpin]**** > > exten=_XXXXXX,1,Set(GLOBAL(CONF_PIN)=${EXTEN})**** > > exten=_XXXXXX,n,Set(ODBC_ID=${ODBC_PIN(1)})**** > > exten=_XXXXXX,n(loop_start),NoOp()**** > > exten=_XXXXXX,n,Set(ROW_RESULT=${ODBC_FETCH(${ODBC_ID})})**** > > exten=_XXXXXX,n,GotoIf($["${ODBC_FETCH}" = "FAILURE"]?cleanup,1) **** > > exten=_XXXXXX,n,GotoIf($["${ROW_RESULT}" = "${CONF_PIN}"]?good_exten,1)*** > * > > exten=_XXXXXX,n,Goto(loop_start)**** > > ;**** > > exten=cleanup,1,Verbose(1,Finish up)**** > > same=n,Verbose(1,PIN not found)**** > > same=n,ODBCFinish(${ODBC_ID})**** > > same=n,playback(conf-invalidpin)**** > > same=n,Goto(rooms,${CONF_ID}1)**** > > same=n,Hangup()**** > > ;**** > > exten=good_exten,1,Verbose(1,The PIN is available)**** > > same=n,ODBCFinish(${ODBC_ID})**** > > same=n,Verbose(1,Drop Caller into the bridge)**** > > same=n,Set(CONFBRIDGE(user,template)=default_user)**** > > same=n,ConfBridge(${CONF_ID},default_bridge,,sample_user_menu)**** > > same=n,Hangup()**** > > ;**** > > ** ** > > The log shows the 3 existing DB table rows are found but continues to > cycle indefinitely if the PIN is NOT found.**** > > First few rows of the console log:**** > > =========================================================================* > *** > > Connected to Asterisk 11.3.0 currently running on atpconf001 (pid = 1695) > atpconf001*CLI>**** > > == Using SIP RTP CoS mark 5**** > > ** ** > > atpconf001*CLI> **** > > -- Executing [067740 at default:1] Set("SIP/testbridge2-00000021", > "GLOBAL(CONF_ID)=067740") in new stack**** > > == Setting global variable 'CONF_ID' to '067740'**** > > -- Executing [067740 at default:2] Goto("SIP/testbridge2-00000021", > "rooms,067740,1") in new stack**** > > ** ** > > atpconf001*CLI> **** > > -- Goto (rooms,067740,1)**** > > -- Executing [067740 at rooms:1] Set("SIP/testbridge2-00000021", > "CONF_ID=067740") in new stack**** > > -- Executing [067740 at rooms:2] BackGround("SIP/testbridge2-00000021", > "conf-getpin") in new stack**** > > ** ** > > atpconf001*CLI> **** > > -- <SIP/testbridge2-00000021> Playing 'conf-getpin.slin' (language > 'en')**** > > ** ** > > atpconf001*CLI> **** > > -- Executing [067740 at rooms:3] WaitExten("SIP/testbridge2-00000021", > "5") in new stack**** > > ** ** > > atpconf001*CLI>**** > > == CDR updated on SIP/testbridge2-00000021**** > > -- Executing [444999 at rooms:1] Goto("SIP/testbridge2-00000021", > "getpin,444999,1") in new stack**** > > -- Goto (getpin,444999,1)**** > > -- Executing [444999 at getpin:1] Set("SIP/testbridge2-00000021", > "GLOBAL(CONF_PIN)=444999") in new stack**** > > == Setting global variable 'CONF_PIN' to '444999'**** > > ** ** > > atpconf001*CLI> **** > > -- Executing [444999 at getpin:2] Set("SIP/testbridge2-00000021", > "ODBC_ID=32") in new stack**** > > -- Executing [444999 at getpin:3] NoOp("SIP/testbridge2-00000021", "") > in new stack**** > > -- Executing [444999 at getpin:4] Set("SIP/testbridge2-00000021", > "ROW_RESULT=112233") in new stack**** > > ** ** > > atpconf001*CLI> **** > > -- Executing [444999 at getpin:5] GotoIf("SIP/testbridge2-00000021", > "0?cleanup,1") in new stack**** > > -- Executing [444999 at getpin:6] GotoIf("SIP/testbridge2-00000021", > "0?good_exten,1") in new stack**** > > -- Executing [444999 at getpin:7] Goto("SIP/testbridge2-00000021", > "loop_start") in new stack**** > > -- Goto (getpin,444999,3)**** > > -- Executing [444999 at getpin:3] NoOp("SIP/testbridge2-00000021", "") > in new stack**** > > -- Executing [444999 at getpin:4] Set("SIP/testbridge2-00000021", > "ROW_RESULT=333333") in new stack**** > > -- Executing [444999 at getpin:5] GotoIf("SIP/testbridge2-00000021", > "0?cleanup,1") in new stack**** > > -- Executing [444999 at getpin:6] GotoIf("SIP/testbridge2-00000021", > "0?good_exten,1") in new stack**** > > -- Executing [444999 at getpin:7] Goto("SIP/testbridge2-00000021", > "loop_start") in new stack**** > > -- Goto (getpin,444999,3)**** > > -- Executing [444999 at getpin:3] NoOp("SIP/testbridge2-00000021", "") > in new stack**** > > -- Executing [444999 at getpin:4] Set("SIP/testbridge2-00000021", > "ROW_RESULT=135792") in new stack //LAST GOOD RESULT!!!**** > > ** ** > > atpconf001*CLI> **** > > -- Executing [444999 at getpin:5] GotoIf("SIP/testbridge2-00000021", > "0?cleanup,1") in new stack**** > > -- Executing [444999 at getpin:6] GotoIf("SIP/testbridge2-00000021", > "0?good_exten,1") in new stack**** > > -- Executing [444999 at getpin:7] Goto("SIP/testbridge2-00000021", > "loop_start") in new stack**** > > ** ** > > atpconf001*CLI> **** > > -- Goto (getpin,444999,3)**** > > -- Executing [444999 at getpin:3] NoOp("SIP/testbridge2-00000021", "") > in new stack**** > > ** ** > > atpconf001*CLI> **** > > -- Executing [444999 at getpin:4] Set("SIP/testbridge2-00000021", > "ROW_RESULT=") in new stack //BAD RESULTS FOREVER!!!**** > > ** ** > > atpconf001*CLI> **** > > -- Executing [444999 at getpin:5] GotoIf("SIP/testbridge2-00000021", > "0?cleanup,1") in new stack**** > > ** ** > > atpconf001*CLI> **** > > -- Executing [444999 at getpin:6] GotoIf("SIP/testbridge2-00000021", > "0?good_exten,1") in new stack**** > > ** ** > > atpconf001*CLI> **** > > -- Executing [444999 at getpin:7] Goto("SIP/testbridge2-00000021", > "loop_start") in new stack**** > > -- Goto (getpin,444999,3)**** > > -- Executing [444999 at getpin:3] NoOp("SIP/testbridge2-00000021", "") > in new stack //AND SO ON........**** > > ** ** > > Thank you!!**** > > Pat Collins...**** > > ** ** > > ** ** > > ** ** > > -- > _____________________________________________________________________ > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > New to Asterisk? Join us for a live introductory webinar every Thurs: > http://www.asterisk.org/hello > > asterisk-users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users >-- Bharat Lalcheta -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20130418/35c08247/attachment.htm>
Hi Pat! The book "Asterisk: The Definitive Guide" contains an example implementation of exactly what you need (search for hotdesk). There used to be a free online access to the book (but the link seems to be dead now). The basis difference is, that the authors used the "Read" command instead of "Background". jg
On 04/18/2013 07:41 AM, jg wrote:> Hi Pat! > > The book "Asterisk: The Definitive Guide" contains an example > implementation of exactly what you need (search for hotdesk). There used > to be a free online access to the book (but the link seems to be dead now).http://asteriskdocs.org/ Works for me :-) -- Matthew Jordan Digium, Inc. | Engineering Manager 445 Jan Davis Drive NW - Huntsville, AL 35806 - USA Check us out at: http://digium.com & http://asterisk.org
On Thu, Apr 18, 2013 at 4:45 PM, Pat Collins <drdialtone at optonline.net>wrote:> All,**** > > Thank you in advance for any help.**** > > I have a customer in need of a conferencing system. A requirement is for > users to each have their own PIN for the same bridge.**** > > So, I put the list of users, PINs bridges into a MYSQL DB and used an ODBC > connector to parse the table.**** > > Asterisk is connected and reads the rows as expected. The problem is that > if a user enters a PIN that is NOT in the table, asterisk goes crazy and > continues to loop forever.**** > > Please have a look and tell me where I went so wrong.**** > > Func_odbc.conf looks like this:**** > > [PIN]**** > > dsn=BRIDGE**** > > mode=multirow**** > > readsql=SELECT pin from users WHERE confid='${SQL_ESC(${CONF_ID})}'**** > > ** ** > > extensions.conf section:**** > > [infromhost] ;Host dials 8888 over SIP trunk exten=8888,1,Answer**** > > exten=8888,n,Background(conf-getconfno)**** > > exten=8888,n,WaitExten(10)**** > > exten=8888,n,Hangup**** > > exten=_XXXXXX,1,Set(GLOBAL(CONF_ID)=${EXTEN})**** > > exten=_XXXXXX,n,GoTo(rooms,${EXTEN},1)**** > > ;**** > > [rooms]**** > > exten=_XXXXXX,1,Set(CONF_ID=${EXTEN})**** > > exten=_XXXXXX,n,Background(conf-getpin)**** > > exten=_XXXXXX,n,WaitExten(5)**** > > exten=_XXXXXX,n,Hangup**** > > exten=_1XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_2XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_3XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_4XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_5XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_6XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_7XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_8XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=_9XXXXX,1,Goto(getpin,${EXTEN},1)**** > > exten=i,1,Goto(getpin,${CONF_PIN},1)**** > > ;**** > > [getpin]**** > > exten=_XXXXXX,1,Set(GLOBAL(CONF_PIN)=${EXTEN})**** > > exten=_XXXXXX,n,Set(ODBC_ID=${ODBC_PIN(1)})**** > > exten=_XXXXXX,n(loop_start),NoOp()**** > > exten=_XXXXXX,n,Set(ROW_RESULT=${ODBC_FETCH(${ODBC_ID})})**** > > exten=_XXXXXX,n,GotoIf($["${ODBC_FETCH}" = "FAILURE"]?cleanup,1) **** > > exten=_XXXXXX,n,GotoIf($["${ROW_RESULT}" = "${CONF_PIN}"]?good_exten,1)*** > * > > exten=_XXXXXX,n,Goto(loop_start)**** > > ;**** > > exten=cleanup,1,Verbose(1,Finish up)**** > > same=n,Verbose(1,PIN not found)**** > > same=n,ODBCFinish(${ODBC_ID})**** > > same=n,playback(conf-invalidpin)**** > > same=n,Goto(rooms,${CONF_ID}1)**** > > same=n,Hangup()**** > > ;**** > > exten=good_exten,1,Verbose(1,The PIN is available)**** > > same=n,ODBCFinish(${ODBC_ID})**** > > same=n,Verbose(1,Drop Caller into the bridge)**** > > same=n,Set(CONFBRIDGE(user,template)=default_user)**** > > same=n,ConfBridge(${CONF_ID},default_bridge,,sample_user_menu)**** > > same=n,Hangup()**** > > > > ** > > Thank you!!**** > > Pat Collins...**** > > > ** > > ** >Change you [getpin] as below exten=>_XXXXXX,1,Set(GLOBAL(CONF_PIN)=${EXTEN}) exten=>_XXXXXX,n,Set(ODBC_ID=${ODBC_PIN(1)}) exten=>_XXXXXX,GotoIf($[${ODBCROWS} < 1]?cleanup,1) exten=>_XXXXXX,,Set(COUNTER=1) exten=>_XXXXXX,While($[${COUNTER} <= ${ODBCROWS}]) exten=>_XXXXXX,n,Set(ROW_RESULT=${ODBC_FETCH(${ODBC_ID})}) exten=>_XXXXXX,n,GotoIf($["${ODBC_FETCH}" = "FAILURE"]?cleanup,1) exten=>_XXXXXX,n,GotoIf($["${ROW_RESULT}" = "${CONF_PIN}"]?good_exten,1) exten=>_XXXXXX,n,Set(COUNTER=$[${COUNTER + 1]) exten=>_XXXXXX,n,EndWhile() exten=>_XXXXXX,n,ODBCFinish() exten=>_XXXXXX,n,Goto(cleanup,1) exten=>cleanup,1,Verbose(1,Finish up) same=>n,Verbose(1,PIN not found) same=>n,ODBCFinish(${ODBC_ID}) same=>n,playback(conf-invalidpin) same=>n,Goto(rooms,${CONF_ID}1) exten=>good_exten,1,Verbose(1,The PIN is available) same=>n,ODBCFinish(${ODBC_ID}) same=>n,Verbose(1,Drop Caller into the bridge) same=>n,Set(CONFBRIDGE(user,template)=default_user) same=>n,ConfBridge(${CONF_ID},default_bridge,,sample_user_menu) same=>n,Hangup() Further your readsql should be like this. readsql=SELECT pin from users WHERE confid='${SQL_ESC(${ARG1})}' You should have ${ARG1} instead of ${CONF_ID} Hope this helps --Satish Barot Ahmedabad, India -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20130419/37841c09/attachment.htm>