Reverse Australia: Difference between revisions

From KlavoWiki
Jump to navigationJump to search
No edit summary
Line 2: Line 2:
[http://www.reverseaustralia.com/ Reverse Australia] is the premier free reverse look-up service for mobiles and landlines within Australia.<br>
[http://www.reverseaustralia.com/ Reverse Australia] is the premier free reverse look-up service for mobiles and landlines within Australia.<br>


You can use the below AGI file without the requirment to use the reverse lookups.  If you change the vairable $query_online to equal 0 then the script will never lookup the information online and will only use the data in the MySQL tables.
You can use the below AGI file without the requirement to use the reverse lookups.  If you change the variable $query_online to equal 0 then the script will never lookup the information online and will only use the data in the MySQL tables.  You would do this if you want to maintain your own caller name lookups.


= Prerequisite =
= Prerequisite =
Line 98: Line 98:


<br>'''cid-lookup-v4.agi'''
<br>'''cid-lookup-v4.agi'''
<br>This agi file has one modification to the original, and that is $db_table.  I have added a vairable for the table name.
<br>This agi file has one modification to the original, and that is $db_table.  I have added a variable for the table name.
<pre>
<pre>
#!/usr/bin/perl
#!/usr/bin/perl
Line 166: Line 166:
$AGI->set_callerid("\"$name <$number>\"");
$AGI->set_callerid("\"$name <$number>\"");
</pre>
</pre>
= WEB Site Implementation =
The WEB site will allow you to add, create, delete and edit entries in the MySQL database. This will allow you to easily create speed dial entries for numbers and modify incoming call display.
You can use this WEB site for free for personal use only.  If you operate a home business, small office, large company then you must purchase a license.  The license will allow you to run the WEB site on an individual server and not on multiple servers within your organisation.  For licensing details please email sales at tech42 dot com dot au
For a copy of the WEB site please email david at klaverstyn dot com dot au.


[[Category : Asterisk]]
[[Category : Asterisk]]

Revision as of 09:09, 22 October 2011

About

Reverse Australia is the premier free reverse look-up service for mobiles and landlines within Australia.

You can use the below AGI file without the requirement to use the reverse lookups. If you change the variable $query_online to equal 0 then the script will never lookup the information online and will only use the data in the MySQL tables. You would do this if you want to maintain your own caller name lookups.

Prerequisite

Asterisk AGI Perl module

wget http://search.cpan.org/CPAN/authors/id/J/JA/JAMESGOL/asterisk-perl-1.01.tar.gz
tar xvzf asterisk-perl-1.01.tar.gz

cd asterisk-perl-1.01

perl Makefile.PL
make all
make install

rpmforge

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
rpm -Uhv rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

perl-LWP-UserAgent-Determined

yum -y install perl-LWP-UserAgent-Determined

Reverse Australia Key

Log onto the Reverse Australia web site and select Request an API Key. You will need to log onto the site with a Facebook account. If you don't have one then you'll need to create one otherwise you're screwed.

MySQL Database

Create a database with the name of your choice with a table name of cid.

mysqladmin create reverseau

table

mysql
use reverseau;

CREATE TABLE `cid` (
`name` text NOT NULL,
`number` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

modified table

I have a WEB site that allows one to edit the contents of the Database. The web site allows one to edit/add/delete entries. You will need to use the following table. This table and the web site also allows one to use 3 or 4 digit speed dialling. Look at Speed Dial for the Speed Dial implementation.

CREATE TABLE `callers` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(60) NOT NULL,
  `number` varchar(20) NOT NULL,
  `speed` varchar(4) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `speed_UNIQUE` (`speed`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

assign permissions

GRANT ALL ON reverseau.* to ciduser@localhost identified by 'passw0rd';
flush privileges;

cid-lookup.agi

The latest version is available from CRC. Download and move the file to /var/lib/asterisk/agi-bin/ (Thanks Steven Haigh for this wonder script.)

wget http://www.crc.id.au/files/cid-lookup-v4.agi
mv cid-lookup-v4.agi /var/lib/asterisk/agi-bin/
chmod +x /var/lib/asterisk/agi-bin/cid-lookup-v4.agi

Edit the file and change the following constants to the required values.

  1. APIKEY
  2. db_host
  3. db_name
  4. db_username
  5. db_password

Asterisk Dialplan Implementation

[incoming-call]
exten => _XX.,1,GotoIf($["${CALLERID(name)}" = "${CALLERID(num)}"]?:3)
same  =>      n,Set(CALLERID(name)=)
same  =>      n,GotoIf($["${CALLERID(name)}" = ""]?:5)
same  =>      n,AGI(cid-lookup-v4.agi)
same  =>      n,Dial(${EVERYONE},29,tw)
same  =>      n,VoiceMail(200@default,us)
same  =>      n,HangUp


cid-lookup-v4.agi
This agi file has one modification to the original, and that is $db_table. I have added a variable for the table name.

#!/usr/bin/perl
use strict;
use Asterisk::AGI;
use LWP::UserAgent;
use DBI;

#### Your Reverse Australia Developers Key:
#### http://www.reverseaustralia.com/developer/
my $APIKEY = "";
my $query_online = 1;

## MySQL Database details.
my $db_host = "localhost";
my $db_name = "asterisk";
my $db_username = "username";
my $db_password = "password";
my $db_table = "callers";

## If you access the web via a proxy, you can define it here
#$ in the format "http://my.proxy.com:8080"
my $http_proxy = "";

my $AGI = new Asterisk::AGI;
my %input = $AGI->ReadParse();
my $number = $input{'callerid'};

## Open the SQL database and search for the number calling...
my $dbh = DBI->connect("dbi:mysql:$db_name;host=$db_host", $db_username, $db_password) or die "Error connecting to database!\n";
my $sth = $dbh->prepare("SELECT name FROM $db_table WHERE number=?");
$sth->execute($number) or die "SQL Error: $DBI::errstr\n";
my $name = $sth->fetchrow;

## If we still can't find anything, search the online database if enabled.
if ( $name eq "" and $name ne "anonymous" ) {
	if ( $query_online and $APIKEY ne "" ) {
		my $ua = new LWP::UserAgent;
		$ua->proxy("http", $http_proxy);
		$ua->agent("cid-lookup-v4.agi");
		my $req = new HTTP::Request GET => 'http://api.reverseaustralia.com/cidlookup.php?format=text&key='.$APIKEY.'&q='.$number.'&extended=0';
		my $res = $ua->request($req);
		if ($res->is_success) {
			## We don't need any real parsing on non-extended searches.
			## Set the caller ID and add the results to the database as a cache.
			$name = $res->content;
			$name =~ s/\t//g;
			$name =~ s/,//g;
        		$sth = $dbh->prepare("INSERT INTO $db_table (name,number) VALUES (?,?)");
        		$sth->execute($name, $number);
		} else {
			print("NOOP Error looking up online directory");
		}
	}

	## If we got nothing from the database, and nothing from the online directory
	## (if enabled) we fall back to this. Add the details to the database so someone
	## can come along and add a name later.
	if ( $name eq "" or $name eq "Not found") {
		print("NOOP Nothing found. Setting to unknown\n");
		$name = "Unknown Caller";
		$sth = $dbh->prepare("INSERT INTO $db_table (name,number) VALUES (?,?)");
		$sth->execute($number, $number);
	}
}

$AGI->set_callerid("\"$name <$number>\"");

WEB Site Implementation

The WEB site will allow you to add, create, delete and edit entries in the MySQL database. This will allow you to easily create speed dial entries for numbers and modify incoming call display.

You can use this WEB site for free for personal use only. If you operate a home business, small office, large company then you must purchase a license. The license will allow you to run the WEB site on an individual server and not on multiple servers within your organisation. For licensing details please email sales at tech42 dot com dot au

For a copy of the WEB site please email david at klaverstyn dot com dot au.