[asterisk-users] ODBC dialplan looping problem

Bharat Lalcheta bharatlalcheta at gmail.com
Thu Apr 18 07:27:20 CDT 2013


Sorry for that.

I believe that, dialplan misbehave only when you didn't get the result
right?...then instead of below

exten=_XXXXXX,n,GotoIf($["${ODBC_FETCH}" = "FAILURE"]?cleanup,1)

try this...

exten=_XXXXXX,n,GotoIf($["${ODBC_FETCH_STATUS}" = "FAILURE"]?cleanup,1)

Hope it helps you out.

Regards,

Bharat Lalcheta


On Thu, Apr 18, 2013 at 5:36 PM, Pat Collins <drdialtone at optonline.net>wrote:

> Thank you Bharat.****
>
> Sadly, that made no difference.****
>
> ** **
>
> *From:* asterisk-users-bounces at lists.digium.com [mailto:
> asterisk-users-bounces at lists.digium.com] *On Behalf Of *Bharat Lalcheta
> *Sent:* Thursday, April 18, 2013 7:33 AM
> *To:* Asterisk Users Mailing List - Non-Commercial Discussion
> *Subject:* Re: [asterisk-users] ODBC dialplan looping problem****
>
> ** **
>
> 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 ****
>
> --
> _____________________________________________________________________
> -- 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/32855f14/attachment.htm>


More information about the asterisk-users mailing list