Asterisk
See also the VOIP category and Asterisk debugging.
Overview
2022-May-13 Asterisk is not just for phones, it's also for ham radio. It's called AllStarLink, which I am using for the Repeater linking project.
2019-Nov-01 I ran a Vastra (Asterisk + Twilio) phone system at home for a few years but I am tired of it now, so I am shutting it down and forwarding the number to my cellphone.
I merged together Twilio and Asterisk for a home phone system. I spent 1000 hours developing a commercial grade small buiness Asterisk based system but my business partner and I got cold feet and we quit.
Back story: I used Packet8 ($30/month) then Les.net (gone) then Grandcentral + GISMO5 (free!) then Google ate Grandcentral AND GISMO5 and gutted them. Then I used only mobile phones for years.
Right now for Asterisk, I am using MySQL not PostgreSQL, it's simpler and gets the job done for phone systems. I have to update the sections below from PG to MySQL.
Incoming calls
People can dial in to a Google Voice number and it will hit the PBX and 2 mobiles. I am moving away from that.
They can also dial in to a Twilio number and it will hit the PBX, which then dials out to my mobile. I want to set up some TWIML to handle the follow me thing in Twilio instead of having it come through the Asterisk PBX. I'd kind of like the PBX to go away and just use Twilio. Replacing Asterisk with Twilio
Outgoing calls
Again, using Twilio for outgoing calls too.
Business Asterisk system
BLF tip
If you are working with BLF (the "Busy Lamp Field" lights on phone) (for example on the sidecar for the GXV3240), and you make changes in Asterisk, the hints and the phone can get out of sync. Lights seem to freeze up or not change. Don't tear your hair out! Reboot the phone first and see if things start working again.
Grandstream GXV3240 phone
For business systems, I am working with these phones right now, along with the optional button modules (which I call "sidecars" for some reason.)
I have a separate page for them, see Grandstream GXV3240.
Grandstream GXW4104
Used to connect up to four POTS lines.
Buggy firmware... bad documentation... avoid.
check and update firmware set hostname set up syslog adjust rings before pickup set time zone and ntp
Setting up PostgreSQL
When building Asterisk from source, you must have the postgres dev package installed before you do ./configure. Asterisk build is not good about telling you what is available when ./configure completes. You can do 'make menuselect' and see what will be available.
CEL = Channel Event Log, more details than CDR (CDR = Call Detail Record)
In cel.conf
enable=yes
In cel_pgsql.conf, at the bottom
hostname=localhost port=5432 dbname=asterisk password=yoursecretpasswordhere user=asterisk table=cel ; SQL table where CEL's will be inserted appname=asterisk ; Postgres application_name support (optional). Whitespace not allowed.
If you wish, follow suit and fix up res_pgsql.conf and cdr_pgsql.conf too.
Create the database, user and appropriate permission
su - postgres createdb asterisk echo "CREATE USER asterisk WITH PASSWORD 'yoursecretpasswordhere';" | psql echo "GRANT ALL ON DATABASE asterisk TO asterisk;" | psql
I got this code from voipinfo.org http://www.voip-info.org/wiki/view/Asterisk+cdr+odbc
CREATE TABLE cel ( id serial, eventtime timestamp with time zone NOT NULL DEFAULT now(), eventtype character varying(80) NOT NULL DEFAULT ::character varying, userdeftype character varying(80) NOT NULL DEFAULT ::character varying, cid_name character varying(80) NOT NULL DEFAULT ::character varying, cid_num character varying(80) NOT NULL DEFAULT ::character varying, cid_ani character varying(80) NOT NULL DEFAULT ::character varying, cid_rdnis character varying(80) NOT NULL DEFAULT ::character varying, cid_dnid character varying(80) NOT NULL DEFAULT ::character varying, exten character varying(80) NOT NULL DEFAULT ::character varying, context character varying(80) NOT NULL DEFAULT ::character varying, channame character varying(80) NOT NULL DEFAULT ::character varying, appname character varying(80) NOT NULL DEFAULT ::character varying, appdata character varying(80) NOT NULL DEFAULT ::character varying, accountcode character varying(20) NOT NULL DEFAULT ::character varying, peeraccount character varying(80) NOT NULL DEFAULT ::character varying, uniqueid character varying(32) NOT NULL DEFAULT ::character varying, linkedid character varying(80) NOT NULL DEFAULT ::character varying, amaflags integer NOT NULL DEFAULT 0, userfield character varying(255) NOT NULL DEFAULT ::character varying, peer character varying(80) NOT NULL DEFAULT ::character varying, CONSTRAINT cel_pkey PRIMARY KEY (id) );
See also source code contrib/scripts/realtime/postgresql/
for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" asterisk` ; do psql -c "alter table $tbl owner to asterisk" asterisk ; done
Sequences:
for tbl in `psql -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';" asterisk` ; do psql -c "alter table $tbl owner to asterisk" asterisk ; done
Views:
for tbl in `psql -qAt -c "select table_name from information_schema.views where table_schema = 'public';" asterisk` ; do psql -c "alter table $tbl owner to asterisk" asterisk ; done
Auto-attendant set up
Intercom style paging
- Set up an extension eg "499" that will call Page() with a list of phones, eg. Page(SIP/100&SIP/101&SIP/102,s,120)
- Tell the Grandstream that it's okay to be paged, Account->Account 1->Call Settings->Auto Answer=Enable Intercom/Paging
- Set up an MPK button to page. Advanced Settings->MPK EXT1 Settings->Key mode=Call Intercom,User=499
Hardware
Not using at the moment: 1 Packet8 DTA-310, reflashed to be a Leadtek BVA8051. See http://www.voip-info.org/wiki-Packet8+DTA310+and+Asterisk and http://www.stromcarlson.com/projects/dta-310/
I need to plug in my rotary dial and push button phones to this thing.
Implementation
Customizations
As much as possible I keep general changes out of main config files by using include files. This makes updates much simpler. In sip.conf add this line: #include sip-wildsong.conf and in extensions.conf add this: #include extensions-wildsong.conf The voicemail.conf file warns agains this approach so I edit it directly.
For each of the extensions, I then add entries in sip-wildsong.conf and extensions-wildsong.conf and voicemail.conf.
I edit the web settings for the hard phones and the configuration settings for the Ekiga softphones.
That's about it.