This is my simple Asterisk set up with 2 phones, one at home (extension 200) connecting with Linksys PAP2T, and the other one (extension 201) for my Android phone running the CSipSimple app. I use 2 trunks: freephoneline.ca for local calls and calls to major Canadian cities, and Google Voice for the rest of North America - all free.
sip.conf
---------
[general]
port=5060
disallow=all
allow=ulaw
allow=alaw
allow=gsm
nat=yes
externip=xxx.xxx.xxx ;;your internet-facing ip
localnet=192.168.1.0/255.255.255.0 ;;your internal local network
;; provided by freephoneline if you pay the $50
register => 14164567890:
password@voip.freephoneline.ca/fpl
[fpl]
canreinvite=no
context=local
dtmfmode=auto
fromdomain=voip.freephoneline.ca
fromuser=14164567890
host=voip.freephoneline.ca
language=en
promiscredir=yes
qualify=no
secret=password ;;your freephoneline password
sendrpid=no
type=peer
defaultuser=14164567890
insecure=invite,port
;; I use extension 200 for my landline, and 201 for my mobile(Android)
[200]
type=friend
defaultuser=200
secret=password
host=dynamic
context=local
dtmfmode=auto
language=en
canreinvite=no
[201]
canreinvite=no
context=local
dtmfmode=auto
host=dynamic
language=en
secret=password
type=friend
defaultuser=201
extensions.conf
-----------------
;; use just one context for simplicity
[local]
;dial internal extensions 200 and 201
exten => 200,1,Dial(SIP/200,20)
exten => 200,n,VoiceMail(200@voicemail)
exten => 200,n,Hangup()
exten => 201,1,Dial(SIP/201,20)
exten => 201,n,VoiceMail(201@voicemail)
exten => 201,n,Hangup()
;dial *44 to playback message for testing
exten => *44,1,Answer()
exten => *44,n,Playback(tt-monty-knights)
exten => *44,n,Hangup()
;dial *43 for echo test
exten => *43,1,Answer()
exten => *43,n,Playback(welcome)
exten => *43,n,Playback(demo-echotest)
exten => *43,n,Echo()
exten => *43,n,Playback(vm-goodbye)
exten => *43,n,Hangup()
;outbound using freephoneline. Area codes 416,647,905 etc are free
; check
http://www.freephoneline.ca/cityListing
exten => _416XXXXXXX,1,Dial(SIP/fpl/${EXTEN})
exten => _416XXXXXXX,n,Hangup()
exten => _647XXXXXXX,1,Dial(SIP/fpl/${EXTEN})
exten => _647XXXXXXX,n,Hangup()
exten => _905XXXXXXX,1,Dial(SIP/fpl/${EXTEN})
exten => _905XXXXXXX,n,Hangup()
;outbound using google voice if freephoneline not used
exten => _NXXXXXXXXX,1,Dial(gtalk/asterisk/+1${EXTEN}@voice.google.com)
exten => _NXXXXXXXXX,n,Hangup()
;inbound from google talk (gmail account is
johndoe@gmail.com in this example)
exten =>
johndoe@gmail.com,1,Dial(SIP/201,20) ;;ring to extension 201
exten =>
johndoe@gmail.com,n,VoiceMail(201@voicemail)
exten =>
johndoe@gmail.com,n,Hangup()
;inbound from freephoneline 4164567890
exten => fpl,1,Dial(SIP/200&SIP/201,20) ; ring both extensions
exten => fpl,n,VoiceMail(201@voicemail)
exten => fpl,n,Hangup()
;check voicemail
exten => *98,1,VoiceMailMain(${CALLERID(num)}@voicemail)
exten => *98,n,Hangup()
exten => s,n,Hangup()
gtalk.conf
----------
[general]
context=local
bindaddr=0.0.0.0
allowguests=yes
externip=xxx.xxx.xxx.xxx ;your internet-facing ip
[guest]
disallow=all
allow=ulaw
context=local
connection=asterisk
jabber.conf
-----------
[general]
autoregister=yes
[asterisk]
type=client
serverhost=talk.google.com
username=
johndoe@gmail.com/Talk ;; your gmail account
secret=password ;; your gmail password
port=5222
usetls=yes
usesasl=yes
statusmessage="I am available"
timeout=100
voicemail.conf
--------------
[general]
format=wav
attach=yes
[voicemail]
200 => 0000,John Doe,
johndoe@gmail.com ;;PIN is set at 0000
201 => 0000,Jane Doe,
janedoe@gmail.com