Doug Lytle wrote:
> Tim Nelson wrote:
>> Greetings all-
>>
>> box on the same network. Instead of paying twice for the call to go out to 
>> the PSTN on one channel and back in on another channel, I'd like the ability 
>> to lookup the destination number in a MySQL database
>>    
> 
> I use the mysql add-on, I'd create a subroutine that gets called at dial 
> time.  As an example, I set outbound caller-id with the below 
> subroutine.  You would use ${EXTEN} for the lookup and decide the route 
> to take on the results.
> 
> [set_callerid]
> 
> exten => s,1,MYSQL(Connect connid 192.168.103.15 username 'password' did)
> exten => s,n,GosubIf($["${MYSQL_STATUS}" = "-1"]?mysql_failed,s,6)
> exten => s,n,MYSQL(Query resultid ${connid} SELECT setcid FROM Corporate 
> WHERE number = ${CALLERID(number)})
> exten => s,n,MYSQL(Fetch fetchid ${resultid} set.callerid)
> exten => s,n,MYSQL(Disconnect ${connid})
> exten => s,n,MYSQL(Clear ${resultid})
> exten => s,n,GotoIf($["${set.callerid}" != ""]?8:10)
> exten => s,n,Set(CALLERID(number)=${set.callerid})
> exten => s,n,Return()
> exten => s,n,Set(CALLERID(number)=269xxxxxxx)
> exten => s,n,Return()

You could do something similar with func_odbc:

[set_callerid]
exten => start,1,Verbose(2,Set CallerID from Database)
exten => start,n,Set(RESULT=${ODBC_GET_CID(${CALLERID(number)})})
exten => start,n,GotoIf($["${RESULT}" != ""]?set_returned,1:set_static,1)

exten => set_returned,1,Set(CALLERID(number)=${RESULT})
exten => set_returned,n,Return()

exten => set_static,1,Set(CALLERID(number)=269nxxxxxx)
exten => set_static,n,Return()



As for the lookup and routing, you could do something similar:

exten => _1NXXNXXXXXX,1,GoSub(checkInternalRoute,start,1(${EXTEN}))
same => n,Set(requestedDestination=${EXTEN})
same => n,GotoIf($["${GOSUB_RETVAL}" = "1"]?internal,1:external,1)

[checkInternalRoute]
exten => start,1,Verbose(2,Check if dialed number is internal)
exten => start,n,Set(isInternal=${ODBC_GET_INTERNAL_STATUS(${ARG1})})
exten => start,n,Return(${isInternal})


Then in func_odbc.conf you set your readsql to something like:

SELECT 1 FROM internal WHERE routes = '${ARG1}'



...or something like that ;)  Totally untested.

Leif.

-- 
_____________________________________________________________________
-- 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

Reply via email to