Re: [asterisk-users] mysql phonebook
On Thursday 15 Sep 2016, tux john wrote: > hi. i am running asterisk 11 and i am using astdb to store all my contacts > and their numbers. so everytime they call me, i can see their name on the > screen of the phone. i am making use of the following to retrieve the name > from the astdb exten => > WhatEverIsMyDID,1,Set(CALLERID(name)=${DB(cidname/${CALLERID(num)})}) > exten => WhatEverIsMyDID,n,Answer() > > in the same machine i have mysql. i would like to make use of mysql to > store and retrieve phonebook as well create blacklist of numbers. i > thought of creating 2 databases > -phonebook, will contain name, number > -blacklist, will contain name, number > > once i update all the database fiels how can i see the names whenever > someone calls? regarding the blacklist, i would like to send them to hear > a sound (eg tt-monkeys) or simply hangup. Write an AGI script that expects a phone number as its parameter, performs a database lookup on the number and sets some channel variables with the caller's name and whether or not they are blacklisted. You probably need only one table, really; use VARCHAR() fields for the number and name and something like a TINYINT(1) for indicating whether or not the number is blacklisted. After the script exits, the dialplan will see any variables it set. So you can do something like this; exten => s,1,Set(from=${CALLERID(num)}) exten => s,n,(Incoming call from ${from}) exten => s,n,AGI(lookup_caller.agi,${from}) ; /var/lib/asterisk/agi-bin/lookup_caller.agi sets variables `blocked` to true ; if the caller is blocked, and `callername` to the caller's name exten => s,n,GotoIf(${blocked}?unwelcome:permitted) exten => s,n(permitted),NoOp(This call is allowed) exten => s,n,Set(CALLERID(name)=${callername}) ; we can maybe do something else funky with callername here exten => s,n,Dial(${ALL_EXTS}) exten => s,n,Hangup() ; tell unwanted callers where to stick that phone exten => s,n(unwelcome),MP3player(/songs/kevin_bloody_wilson/dicktaphone.mp3) exten => s,n,Hangup() I used some simple example code to implement a little daemon on users' workstations; which listened on a UDP port, and created system notifications informing the user of an incoming call. As this was all on the inside of a firewall, I also included the capability to open up a web page. The AGI script was able not only to notified the workstation adjacent to the phone of the incoming call; but if the number was recognised as belonging to a user within our system, would bring up their details on screen (all the work was done through a custom web application). -- AJS Note: Originating address only accepts e-mail from list! If replying off- list, change address to asterisk1list at earthshod dot co dot uk . -- _ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- Join the Asterisk Community at the 13th AstriCon, September 27-29, 2016 http://www.asterisk.org/community/astricon-user-conference New to Asterisk? Start here: https://wiki.asterisk.org/wiki/display/AST/Getting+Started asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
Re: [asterisk-users] mysql phonebook
I do this. I connect back to the mysql server via odbc, and as you, I have two databases for this, one called blacklisted and the other called speeddials. My dialplan code below: exten => _5X,1,Answer() exten => _5X,n,Gosub(check_blacklist,s,1) exten => _5X,n,Gosub(get_callerid,s,1) [check_blacklist] exten => s,1,GotoIf($["${CALLERID(number)}" = "" ]?2:3) exten => s,n,Set(CALLERID(all)=Restricted <0>) exten => s,n,Set(ARRAY(flag,note)=${ODBC_BLACKLIST(${CALLERID(number)})}) exten => s,n,GotoIf($["${flag}" = "YES"]?blacklisted,s,1) exten => s,n,NoOP(Caller not blacklisted) exten => s,n,Return [blacklisted] exten => s,1,NoOP(Caller: ${CALLERID(number)} is on the black list) exten => s,n,NoOP(NOTE: ${note}) exten => s,n,Set(CDR(userfield)=Blacklisted) exten => s,n,Zapateller(answer) exten => s,n,Hangup(2) The ODBC query is: [BLACKLIST] dsn=MySQL-blacklisted readsql=SELECT flag, note FROM [putyourdatabasenamehere] WHERE phone=${SQL_ESC("${ARG1}")} [get_callerid] exten => s,1,Set(ARRAY(speed.dial,speed.name)=${ODBC_GET_CALLERID(${CALLERID(num)})}) exten => s,n,Set(CALLERID(name)=${speed.name}) exten => s,n,Return() The ODBC query is: [GET_CALLERID] dsn=MySQL-speeddials readsql=SELECT phone, name, code FROM [putyourdatabasenamehere] WHERE phone = ${ARG2} Doug -- _ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- Join the Asterisk Community at the 13th AstriCon, September 27-29, 2016 http://www.asterisk.org/community/astricon-user-conference New to Asterisk? Start here: https://wiki.asterisk.org/wiki/display/AST/Getting+Started asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users