There are many ways to do this.
The simplest, if you have the machines sound card set up with OSS or ALSA (pick one in modules.conf; then set oss/alsa.conf) have an exten that dials the console and use that. Hook the sound card up to an amplifier and you're done.
The other way would be use an ATA or any other FXS (station/phone/extension/etc) port and a paging adapter. Viking Electronics makes a few, you want anything that will answer whenever the line rings and pipe the result to the speakers until it gets a CPC disconnect.
You can try something like
this If you want something that uses an FXO (trunk/CO/line) port, try
this . You sieze the line as you see fit and it switches to Page mode when you send a particular DTMF sequence. You could use something like:
exten => 1234,1,Dial(Zap/24/#7) ; (I think the code was #7 for that one)
to page through it...
The last way, if you have SIP phones that support it- make an exten that adds whatever header the phones require for intercom, then use Page().
ie
exten => 1234,1,SipAddHeader(Call-Info:asterisk\;answer-after=0)
exten => 1234,2,Page(SIP/1234&SIP/1235) ; use as many as you want.
The SipAddHeader bit varies from one phone to another, you can usually find the intercom string in the phone's documentation or on the voip-info.org wiki. The above works on SNOM phones and a few others.
Also note that Page() can be used with a sound card or paging controller- all Page() does is create a MeetMe conference room, put the caller into it as a Marked user, then invite in all the other phones (that you specify as arguments to Page(), SIP/1234 and SIP/1235 in my example), playing a beep to them all first.
Hope that helps!