Skip to content

Instantly share code, notes, and snippets.

@shaposhnikoff
Last active September 22, 2015 10:20
Show Gist options
  • Select an option

  • Save shaposhnikoff/3caa00fc0bc11373f7a6 to your computer and use it in GitHub Desktop.

Select an option

Save shaposhnikoff/3caa00fc0bc11373f7a6 to your computer and use it in GitHub Desktop.
Asterisk incoming call routing based on caller ID
exten => s,1,Answer
same=> n,NoOp("Caller ID IS: ${CALLERID(name)}")
same => n,MYSQL(Connect connid 127.0.0.1 root root asteriskdb)
same => n,MYSQL(Query resultid ${connid} SELECT name,ban FROM directory WHERE number='${CALLERID(name)}')
same => n,MYSQL(Fetch fetchid ${resultid} name ban)
same => n,NoOp("We found: ${name} ${ban}")
same => n,MYSQL(Clear ${resultid})
same => n,MYSQL(Disconnect ${connid});
same => n,Set(CALLERID(name)=${name})
same => n,NoOp()
same => n,GotoIf($["${ban}" = "1"]?banext,s,1)
same => n,Goto(mainmenu,s,1)
[banext]
exten => s,1,Answer()
same => n,Playback(hello-world)
same => n,Set(MONITOR_FILENAME=/var/spool/asterisk/monitor/conf_${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(name)}-${EXTEN})
same => n,Monitor(wav,${MONITOR_FILENAME})
same => n,Playback(/usr/share/asterisk/sounds/ru/tt-allbusy)
same => n,MusicOnHold(,20)
[mainmenu]
exten => _X.,Noop()
same => n,Hangup()
Database scheme
mysql> describe directory;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| number | varchar(100) | YES | | NULL | |
| name | varchar(100) | YES | | NULL | |
| ban | int(11) | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> show create table directory;
+-----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| directory | CREATE TABLE `directory` (
`id` int(11) DEFAULT NULL,
`number` varchar(100) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`ban` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment