OBS: Användning av denna dokumentation sker på egen risk!
Denna text har skapats (filer bifogade) som ett självändamål för att spara in tid och hårbortfall vid eventuella framtida omkonfigurationer av Asterisk, om detta behov någon gång skulle uppstå. Det finns ingen egentlig support i bemärkelsen ”Hej, hur gör man detta? Jag får inte rätt på det!” – allt som egentligen behövs är mycket tålamod och lite engelska kunskaper, eftersom grundhjälpen har inhämtats från http://www.voip-info.org/. Vill du ha riktig hjälp, läs förslagsvis där innan du börjar ställa frågor som saknar svar. Har du några frågar som jag KAN besvara, så gör jag givetvis det.
Om detta inlägg
Informationen i denna text bygger på att man har fler SIP-baserade abonnemang hos telefoni-operatören Megaphone. Hur din konfiguration kommer fungera hos någon annan operatör har jag ingen aning om. Ej heller har jag någon aning om den kommer att fungera hos dig om du tar del av den. Det grundläggande upplägget som bör räcka för att få flera telefonnummer (eller ett!) att fungera för både in- och utgående telefoni beskrivs dock, enligt nedan. Det är som tidigare skrivet, ej garanterat att detta fungerar för alla.
Konfigurationen öppnar möjligheten att ta emot ett samtal på flera telefoner, där den som svarar först tar samtalet. Utgående telefoni fungerar också, men skall man kunna ringa ut från två olika nummer måste också Asterisk anpassas efter möjligheterna, med lite fulkod. Jag kallar detta för ”fusktrunk” även om benämningen troligen är helt felaktig (konfigurationen är inkluderad enligt nedan, vilket innebär att om man med denna konfiguration använder en extra nolla i början av riktnumret så används linje 2 för utgående samtal).
Operatörens egna forking-möjligheter rekommenderas starkt, eftersom operatören då tillhandahåller denna tjänst i stället för dig. Detta lär vara stabilare samt ger en del andra fördelar – såsom faktisk support. I Asterisk får du klara dig själv om telefonen plötsligt slutar fungera. Observera även att Asterisk i dessa exempel innehåller specialkonfiguration för andra ändamål också, främst intern röstbrevlåda. Detta kan medföra att allt inte kommer att fungera på önskat sätt för andra som installerat Asterisk då all konfigurering utöver dessa exempel är individuell och nedanstående har av oförklarlig anledning skrivits på engelska.
Övriga frågor och svar följer under dessa konfigurationer.
sip.conf
Kod:
[general]
context=default ; Default context for incoming calls
allowoverlap=no ; Disable overlap dialing support. (Default is yes)
bindport=5060 ; UDP Port to bind to (SIP standard port is 5060)
bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all)
srvlookup=yes ; Enable DNS SRV lookups on outbound calls
realm=asterisk
domain=my.sip.domain ; Set default domain for this host
; If configured, Asterisk will only allow
; INVITE and REFER to non-local domains
; Use "sip show domains" to list local domains
;disallow=all ; First disallow all codecs
allow=ulaw ; Allow codecs in order of preference
allow=ulaw
allow=alaw
allow=g729
rtptimeout=60 ; Terminate call if 60 seconds of no RTP or RTCP activity
rtpholdtimeout=300 ; Terminate call if 300 seconds of no RTP or RTCP activity
; Be careful with this
sipdebug = yes ; Turn on SIP debugging by default, from
recordhistory=yes ; Record SIP history by default
dumphistory=yes ; Dump SIP history at end of SIP dialogue
;; SIP Phone 1
register => username.megaphone.se:password@sip.megaphone.se
;; SIP Phone 2
; /1001 = Connect immediately to extension 1001 and pass by any automated messages...
; (this seem to be linked to the extension-config)
register => username.megaphone.se:password@sip.megaphone.se/1001
localnet=10.0.0.0/255.0.0.0
localnet=192.168.0.0/255.255.0.0
nat=yes ; Global NAT settings (Affects all peers and users)
canreinvite=no ; Asterisk by default tries to redirect the
[authentication]
; Obviously not required (Dual stuff)
;;;auth=username.megaphone.se:password@sip.megaphone.se
;;;auth=username.megaphone.se:password@sip.megaphone.se
;;;; USER CONFIGURATION
; Main extension for home
[self]
type=friend
username=me
secret=mypassword
host=dynamic
context=myextension
regexten=1001
; Let the Vood have its own extension if this runs on SIP
[self-vood]
type=friend
username=self-vood
secret=voodpassword
host=dynamic
context=myextension
regexten=1011
; Let the Nokia on!
[selfmobile]
type=friend
username=selfmobile
secret=mobilepassword
host=dynamic
context=myextension
regexten=1010
[user1]
type=friend
username=user1
secret=password1
host=dynamic
context=user1
regexten=2000
[user2]
type=friend
username=user2
secret=password2
host=dynamic
context=user2
regexten=2001
; The PEERS (Megaphone)
[NUM1]
type=peer
username=username.megaphone.se
fromdomain=sip.megaphone.se
insecure=very
qualify=yes
nat=yes
secret=password
host=sip.megaphone.se
context=default
[NUM2]
type=peer
username=username.megaphone.se
fromdomain=sip.megaphone.se
insecure=very
qualify=yes
nat=yes
secret=password
host=sip.megaphone.se
context=default
extensions.conf
Kod:
[general]
static=yes
writeprotect=no
clearglobalvars=no
priorityjumping=yes
;#include "filename.conf"
[globals]
CONSOLE=Console/dsp ; Console interface for demo
;TRUNK=Zap/G2 ; Trunk interface
; Never required... (This is dual number!)
;;;SIPtrunk=SIP/username.megaphone.se:password@sip.megaphone.se ; SIP trunk
;;;SIPtrunk=SIP/username.megaphone.se:password@sip.megaphone.se ; SIP trunk
; Used by everybody! (Incoming connections)
[default]
include => allextensions
exten => s,1,NoOp(${SIP_HEADER})
exten => s,n,NoOp(${CALLERID})
exten => s,n,Wait(1)
exten => s,n,Answer
; Play a message!
exten => s,n,BackGround(welcome)
; Wait for a beep for about 2 sec!
exten => s,n,WaitExten(2)
; Play another message (in this case: "redirecting your call")
exten => s,n,BackGround(calling_dittsamtal)
; If no extension set above, dial those number for 30 sec
exten => s,n,Dial(SIP/self&SIP/selfmobile&SIP/self-vood,30)
; Then check status...
exten => s,n,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
; And send to voicemail for extension 1001 on no answer
exten => s-NOANSWER,1,VoiceMail(1001,u)
[self]
include => default
include => outgoing
[self-vood]
include => default
include => allextensions
include => outgoing
[selfmobile]
include => default
include => outgoing
; Only allow internal calls for user 1
[user1]
include => allextensions
exten => 1000,1,Voicemailmain(1000)
; Allow the same as "self" for user2
[user2]
include => allextensions
include => outgoing
exten => 1000,1,Voicemailmain(1000)
exten => _X.,1,Dial(SIP/${EXTEN}@NUM1,30,r)
; All outgoing extensions
[outgoing]
; Allow yourself to dial between your external extensions
exten => NUM1,1,Dial(SIP/${EXTEN}@NUM2,30,r)
exten => NUM2,1,Dial(SIP/${EXTEN}@NUM1,30,r)
; Anything else goes out through NUM1
exten => _X.,1,Dial(SIP/${EXTEN}@NUM1,30,r)
; But if any call starts with an extra zero, use NUM2
; This makes both numbers available for outbound traffic
exten => _00X.,1,Dial(SIP/${EXTEN:1}@NUM2,30,r)
exten => s,n,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => s-NOANSWER,n,VoiceMail(${ARG1},u)
; Internal usage
[allextensions]
; Extension 1000 - Voicemail!
exten => 1000,1,Voicemailmain(1000)
; Self extension and the default! Try for 20 sec
exten => 1001,1,Dial(SIP/self&SIP/self-vood&SIP/selfmobile,20)
; Missed calls goes to voicemail
exten => 1001,2,VoiceMail(1001,u)
; Others
exten => 1010,1,Dial(SIP/selfmobile,20)
exten => 1010,2,VoiceMail(1001,u)
exten => 1011,1,Dial(SIP/self-vood,20)
exten => 1011,2,VoiceMail(1001,u)
; User 1
exten => 2000,1,Dial(SIP/user1,20)
exten => 2000,2,VoiceMail(2000,u)
; User 2
exten => 2001,1,Dial(SIP/user2,20)
exten => 2001,2,VoiceMail(2001,u)
; Invalid extensions goes to voicemail
exten => i,1,VoiceMail(1001,u)
Specialanpassningar
Jag har ju två nummer… men när det ringer in vet jag inte vilket av numren jag söks på!
I de fall då tester har utförts med Asterisk så visas inkommande telefonnummer i stil med
Detta leder givetvis till problem eftersom SIP_HEADER(TO) inte kan användas på det sätt som var tänkt (denna information kan med sökningsfunktioner återfinnas på voip-info, se länk ovan). Så vitt jag förstått det, så är det ”s@xxx” som ställer till det, då numret egentligen skulle visats där istället (i stil med ”0435xxxxx@”), vilket gör att man inte kan identifiera destinationen med sip-headern. Att destinationen omnämns på samma rad spelar heller ingen roll.
Därför skrev jag om några rader i konfigurationsfilerna. Dels så lade jag in följande exten-rad i extensions.conf, efter callerid-raden:
Kod:
exten => s,n,Set(CALLERID(num)=${CALLERID(num)} to 0435xxxxxx)
Detta gör att jag kan se till vilket nummer någon ringer, åtminstone I SIP-klienten (X-lite). Hur det blir i en vanlig nummerpresentatör kan jag faktiskt inte svara på (det är mycket troligt att resultatet dels är för långt och jag misstänker att alla nummerpresentatörer inte klarar av formateringen på numret). Resultatet blir nämligen, exempelvis:
Kod:
0812345677 to 0435123456@127.0.0.1

I sip.conf har jag tidigare angett att mitt andra nummer skall gå direkt till en specifik extension:
Kod:
register => username.megaphone.se:password@sip.megaphone.se/1001
Detta ändrar jag nu på, till:
Kod:
register => username.megaphone.se:password@sip.megaphone.se/1020
Sedan lägger jag upp en ny extension under [allextensions]:
Kod:
exten => 1020,1,Set(CALLERID(num)=${CALLERID(num)} to 0435xxxxxx)
exten => 1020,n,Dial(SIP/self&SIP/self-vood&SIP/selfmobile,20)
Nu kommer displayen, när det ringer på det andra numret visa upp till exempel:
Kod:
0812345677 to 0435654321@127.0.0.1
OBS: Användning av denna dokumentation sker på egen risk!
Denna text har skapats (filer bifogade) som ett självändamål för att spara in tid och hårbortfall vid eventuella framtida omkonfigurationer av Asterisk, om detta behov någon gång skulle uppstå. Det finns ingen egentlig support i bemärkelsen ”Hej, hur gör man detta? Jag får inte rätt på det!” – allt som egentligen behövs är mycket tålamod och lite engelska kunskaper, eftersom grundhjälpen har inhämtats från http://www.voip-info.org/. Vill du ha riktig hjälp, läs förslagsvis där innan du börjar ställa frågor som saknar svar. Har du några frågar som jag KAN besvara, så gör jag givetvis det.
Om detta inlägg
Informationen i denna text bygger på att man har fler SIP-baserade abonnemang hos telefoni-operatören Megaphone. Hur din konfiguration kommer fungera hos någon annan operatör har jag ingen aning om. Ej heller har jag någon aning om den kommer att fungera hos dig om du tar del av den. Det grundläggande upplägget som bör räcka för att få flera telefonnummer (eller ett!) att fungera för både in- och utgående telefoni beskrivs dock, enligt nedan. Det är som tidigare skrivet, ej garanterat att detta fungerar för alla.
Konfigurationen öppnar möjligheten att ta emot ett samtal på flera telefoner, där den som svarar först tar samtalet. Utgående telefoni fungerar också, men skall man kunna ringa ut från två olika nummer måste också Asterisk anpassas efter möjligheterna, med lite fulkod. Jag kallar detta för ”fusktrunk” även om benämningen troligen är helt felaktig (konfigurationen är inkluderad enligt nedan, vilket innebär att om man med denna konfiguration använder en extra nolla i början av riktnumret så används linje 2 för utgående samtal).
Operatörens egna forking-möjligheter rekommenderas starkt, eftersom operatören då tillhandahåller denna tjänst i stället för dig. Detta lär vara stabilare samt ger en del andra fördelar – såsom faktisk support. I Asterisk får du klara dig själv om telefonen plötsligt slutar fungera.
Observera även att Asterisk i dessa exempel innehåller specialkonfiguration för andra ändamål också, främst intern röstbrevlåda. Detta kan medföra att allt inte kommer att fungera på önskat sätt för andra som installerat Asterisk då all konfigurering utöver dessa exempel är individuell och nedanstående har av oförklarlig anledning skrivits på engelska.
Övriga frågor och svar följer under dessa konfigurationer.
sip.conf
Kod:
[general]
context=default ; Default context for incoming calls
allowoverlap=no ; Disable overlap dialing support. (Default is yes)
bindport=5060 ; UDP Port to bind to (SIP standard port is 5060)
bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all)
srvlookup=yes ; Enable DNS SRV lookups on outbound calls
realm=asterisk
domain=my.sip.domain ; Set default domain for this host
; If configured, Asterisk will only allow
; INVITE and REFER to non-local domains
; Use "sip show domains" to list local domains
;disallow=all ; First disallow all codecs
allow=ulaw ; Allow codecs in order of preference
allow=ulaw
allow=alaw
allow=g729
rtptimeout=60 ; Terminate call if 60 seconds of no RTP or RTCP activity
rtpholdtimeout=300 ; Terminate call if 300 seconds of no RTP or RTCP activity
; Be careful with this
sipdebug = yes ; Turn on SIP debugging by default, from
recordhistory=yes ; Record SIP history by default
dumphistory=yes ; Dump SIP history at end of SIP dialogue
;; SIP Phone 1
register => username.megaphone.se:password@sip.megaphone.se
;; SIP Phone 2
; /1001 = Connect immediately to extension 1001 and pass by any automated messages...
; (this seem to be linked to the extension-config)
register => username.megaphone.se:password@sip.megaphone.se/1001
localnet=10.0.0.0/255.0.0.0
localnet=192.168.0.0/255.255.0.0
nat=yes ; Global NAT settings (Affects all peers and users)
canreinvite=no ; Asterisk by default tries to redirect the
[authentication]
; Obviously not required (Dual stuff)
;;;auth=username.megaphone.se:password@sip.megaphone.se
;;;auth=username.megaphone.se:password@sip.megaphone.se
;;;; USER CONFIGURATION
; Main extension for home
[self]
type=friend
username=me
secret=mypassword
host=dynamic
context=myextension
regexten=1001
; Let the Vood have its own extension if this runs on SIP
[self-vood]
type=friend
username=self-vood
secret=voodpassword
host=dynamic
context=myextension
regexten=1011
; Let the Nokia on!
[selfmobile]
type=friend
username=selfmobile
secret=mobilepassword
host=dynamic
context=myextension
regexten=1010
[user1]
type=friend
username=user1
secret=password1
host=dynamic
context=user1
regexten=2000
[user2]
type=friend
username=user2
secret=password2
host=dynamic
context=user2
regexten=2001
; The PEERS (Megaphone)
[NUM1]
type=peer
username=username.megaphone.se
fromdomain=sip.megaphone.se
insecure=very
qualify=yes
nat=yes
secret=password
host=sip.megaphone.se
context=default
[NUM2]
type=peer
username=username.megaphone.se
fromdomain=sip.megaphone.se
insecure=very
qualify=yes
nat=yes
secret=password
host=sip.megaphone.se
context=default
extensions.conf
Kod:
[general]
static=yes
writeprotect=no
clearglobalvars=no
priorityjumping=yes
;#include "filename.conf"
[globals]
CONSOLE=Console/dsp ; Console interface for demo
;TRUNK=Zap/G2 ; Trunk interface
; Never required... (This is dual number!)
;;;SIPtrunk=SIP/username.megaphone.se:password@sip.megaphone.se ; SIP trunk
;;;SIPtrunk=SIP/username.megaphone.se:password@sip.megaphone.se ; SIP trunk
; Used by everybody! (Incoming connections)
[default]
include => allextensions
exten => s,1,NoOp(${SIP_HEADER})
exten => s,n,NoOp(${CALLERID})
exten => s,n,Wait(1)
exten => s,n,Answer
; Play a message!
exten => s,n,BackGround(welcome)
; Wait for a beep for about 2 sec!
exten => s,n,WaitExten(2)
; Play another message (in this case: "redirecting your call")
exten => s,n,BackGround(calling_dittsamtal)
; If no extension set above, dial those number for 30 sec
exten => s,n,Dial(SIP/self&SIP/selfmobile&SIP/self-vood,30)
; Then check status...
exten => s,n,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
; And send to voicemail for extension 1001 on no answer
exten => s-NOANSWER,1,VoiceMail(1001,u)
[self]
include => default
include => outgoing
[self-vood]
include => default
include => allextensions
include => outgoing
[selfmobile]
include => default
include => outgoing
; Only allow internal calls for user 1
[user1]
include => allextensions
exten => 1000,1,Voicemailmain(1000)
; Allow the same as "self" for user2
[user2]
include => allextensions
include => outgoing
exten => 1000,1,Voicemailmain(1000)
exten => _X.,1,Dial(SIP/${EXTEN}@NUM1,30,r)
; All outgoing extensions
[outgoing]
; Allow yourself to dial between your external extensions
exten => NUM1,1,Dial(SIP/${EXTEN}@NUM2,30,r)
exten => NUM2,1,Dial(SIP/${EXTEN}@NUM1,30,r)
; Anything else goes out through NUM1
exten => _X.,1,Dial(SIP/${EXTEN}@NUM1,30,r)
; But if any call starts with an extra zero, use NUM2
; This makes both numbers available for outbound traffic
exten => _00X.,1,Dial(SIP/${EXTEN:1}@NUM2,30,r)
exten => s,n,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => s-NOANSWER,n,VoiceMail(${ARG1},u)
; Internal usage
[allextensions]
; Extension 1000 - Voicemail!
exten => 1000,1,Voicemailmain(1000)
; Self extension and the default! Try for 20 sec
exten => 1001,1,Dial(SIP/self&SIP/self-vood&SIP/selfmobile,20)
; Missed calls goes to voicemail
exten => 1001,2,VoiceMail(1001,u)
; Others
exten => 1010,1,Dial(SIP/selfmobile,20)
exten => 1010,2,VoiceMail(1001,u)
exten => 1011,1,Dial(SIP/self-vood,20)
exten => 1011,2,VoiceMail(1001,u)
; User 1
exten => 2000,1,Dial(SIP/user1,20)
exten => 2000,2,VoiceMail(2000,u)
; User 2
exten => 2001,1,Dial(SIP/user2,20)
exten => 2001,2,VoiceMail(2001,u)
; Invalid extensions goes to voicemail
exten => i,1,VoiceMail(1001,u)
Specialanpassningar
Jag har ju två nummer… men när det ringer in vet jag inte vilket av numren jag söks på!
I de fall då tester har utförts med Asterisk så visas inkommande telefonnummer i stil med
Detta leder givetvis till problem eftersom SIP_HEADER(TO) inte kan användas på det sätt som var tänkt (denna information kan med sökningsfunktioner återfinnas på voip-info, se länk ovan). Så vitt jag förstått det, så är det ”s@xxx” som ställer till det, då numret egentligen skulle visats där istället (i stil med ”0435xxxxx@”), vilket gör att man inte kan identifiera destinationen med sip-headern. Att destinationen omnämns på samma rad spelar heller ingen roll.
Därför skrev jag om några rader i konfigurationsfilerna. Dels så lade jag in följande exten-rad i extensions.conf, efter callerid-raden:
Kod:
exten => s,n,Set(CALLERID(num)=${CALLERID(num)} to 0435xxxxxx)
Detta gör att jag kan se till vilket nummer någon ringer, åtminstone I SIP-klienten (X-lite). Hur det blir i en vanlig nummerpresentatör kan jag faktiskt inte svara på (det är mycket troligt att resultatet dels är för långt och jag misstänker att alla nummerpresentatörer inte klarar av formateringen på numret). Resultatet blir nämligen, exempelvis:
Kod:
0812345677 to 0435123456@127.0.0.1

I sip.conf har jag tidigare angett att mitt andra nummer skall gå direkt till en specifik extension:
Kod:
register => username.megaphone.se:password@sip.megaphone.se/1001
Detta ändrar jag nu på, till:
Kod:
register => username.megaphone.se:password@sip.megaphone.se/1020
Sedan lägger jag upp en ny extension under [allextensions]:
Kod:
exten => 1020,1,Set(CALLERID(num)=${CALLERID(num)} to 0435xxxxxx)
exten => 1020,n,Dial(SIP/self&SIP/self-vood&SIP/selfmobile,20)
Nu kommer displayen, när det ringer på det andra numret visa upp till exempel:
Kod:
0812345677 to 0435654321@127.0.0.1