Interne Mailbox - sent into invalid extension

sipgateuser

Mitglied
Mitglied seit
17 Jul 2008
Beiträge
564
Punkte für Reaktionen
0
Punkte
0
Ich versuche nach dem Kurs vorzugehen, komme aber mit der Mailbox nicht weiter. Ich teste zuerst eine interne Mailbox

Code:
-- Executing [48@erlaubt23:1] NoCDR("SIP/23-081ffe88", "") in new stack
    -- Executing [48@erlaubt23:2] Dial("SIP/23-081ffe88", "SIP/48|55|Ttr") in new stack
    -- Called 48
    -- SIP/48-081f7d28 is ringing
    -- Got SIP response 480 "User not responding" back from 192.168.2.108
    -- SIP/48-081f7d28 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
    -- Executing [48@erlaubt23:3] Goto("SIP/23-081ffe88", "r-CONGESTION|1") in new stack
    -- Goto (erlaubt23,r-CONGESTION,1)
[Aug  9 16:38:22] WARNING[4521]: pbx.c:2483 __ast_pbx_run: Channel 'SIP/23-081ffe88' sent into invalid extension 'r-CONGESTION' in context 'erlaubt23', but no invalid handler


aus der extensions.conf
Code:
[lokal]
exten => _NX,1,NoCDR()
exten => _NX,n,Dial,SIP/${EXTEN}|55|Ttr
exten => 48,n,Goto,r-${DIALSTATUS}|1
exten => r-BUSY,1,voicemail,b48
exten => r-BUSY,2,Hangup
exten => r-NOANSWER,1,voicemail,u48
exten => r-NOANSWER,2,Hangup

Auf Wunsch führe ich gern die kompletten conf-files an.
 
Die Fehlermeldung bezieht sich auf den Context "erlaubt23" - du hast aber den Context "local" gepostet... ;)

Sollte "erlaubt23" genauso aussehen wie "local" ist die Ursache sehr leicht.

Du hast für den Fall dass die leitung belegt ist folgendes forgesehen:
Code:
exten => r-BUSY,1,voicemail,b48
exten => r-BUSY,2,Hangup

Alles schön und gut, jetzt ist die fehlermeldung allerdings nicht "BUSY" sondern "CONGESTION" und er versucht die extension "r-CONGESTION" aufzurufen.
Einfach folgendes hinzufügen:
Code:
exten => r-CONGESTION,1,voicemail,b48
exten => r-CONGESTION,2,Hangup
 
Ich versuche jetzt schon einige Zeit die verschiedensten Varianten mit einer Mailbox und diversen Tutorials und habe es wohl noch zu wenig kapiert.

Es wäre sehr nett, wenn mir konkret gesagt würde, welche paar Zeilen ich für eine Sprachbox (noch) brauche, damit sie _intern_ und _extern_ erreichbar ist und auf besetzt, nicht angenommener Anruf und nicht angemeldetes Softphone reagiert und dann die Nachricht per Mail versendet.

Ich hätte auch gerne ein Mail, wenn nichts auf die Sprachbox gesprochen wurde und die o.a. Fälle, besetzt, nicht angenommener Anruf und nicht angemeldetes Softphone, gegeben sind.

An meiner Beispielkonfiguration habe ich zwischenzeitlich wieder rumgebastelt. Zur Zeit sieht es wie folgt aus. Wichtig dabei ist, dass man mit Tricks nicht auf meine Kosten telefonieren kann. ich habe daher vorgegeben, dass nur über einen Vorwahlcode, der auch den Provider bestimmt, nach außen gewählt werden kann.

Anstatt
[default]
exten => _X.,1,Hangup
denke ich, dass es besser ist, Anrufe, die nicht zugeordnet werden können, auf eine eigene Sprachbox umzuleiten.

sip.conf
Code:
[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
language=de
auth=md5,plaintext
disallow=all
allow=alaw
allow=speex
allow=ilbc
allow=slinear
allow=h261
qualify=no
canreinvite=no
regcontext=local-sip ; Durchwahl erstellen im angegebenen Context
videosupport=yes

externhost=voip.domain.tld
localnet=192.168.2.96/28
nat=yes

: user1
register => 437801111:[email protected]/437801111            	; yesss privat  20
register => 437802222:[email protected]/437802222            	; yesss         21
register => 13333:[email protected]/13333                      	; sipgate.at    22
register => 00038724444:[email protected]/00038724444        	; dus.net       23
register => bluesip/user1:[email protected]/bluesip23	  	; bluesip	24
register => 004236626666:[email protected]/004236626666    	; ahooly        25
register => user1:[email protected]/ekiga23		   	; ekiga	   	26


: user2
register => 48888:[email protected]/48888                      	; sipgate.at    42
register => 00038729999:[email protected]/00038729999        	; dus.net       43
register => bluesip/user2:[email protected]/bluesip48		; bluesip	44
register => 004236620000:[email protected]/004236620000	; ahooly        45
register => user2:[email protected]/user48				; ekiga		46



[authentication]

; -----------------------
; Yesss
; -----------------------

[437801111]
type=peer
username=437801111
fromuser=437801111
secret=aaaaaa
host=sip.yesss.at
fromdomain=sip.yesss.at
insecure=very
qualify=yes
nat=no

[437802222]
type=peer
username=437802222
fromuser=437802222
secret=bbbbbb
host=sip.yesss.at
fromdomain=sip.yesss.at
insecure=very
nat=no

[yesss_in]
type=peer
fromdomain=sip.yesss.at
host=sip.yesss.at
context=ankommend


; -----------------------
; sipgate.at
; -----------------------

[13333]
type=peer
username=13333
fromuser=13333
secret=cccccc
host=sipgate.at
fromdomain=sipgate.at
insecure=very
qualify=yes
nat=no

[48888]
type=peer
username=48888
fromuser=48888
secret=hhhhhh
host=sipgate.at
fromdomain=sipgate.at
insecure=very
nat=no

[sipgateat_in]
type=peer
fromdomain=sipgate.at
host=sipgate.at
context=ankommend


; -----------------------
; dus.net
; -----------------------

[00038724444]
type=peer
username=00038724444
host=voip.dus.net
fromdomain=voip.dus.net
fromuser=00038724444
secret=dddddd
insecure=very ;Wichtig, da dus.net einen SIP-Cluster betreibt und Invites von mehreren IP-Adressen kommen können
qualify=yes
nat=no
relaxdtmf=yes

[00038729999]
type=peer
username=00038729999
host=voip.dus.net
fromdomain=voip.dus.net
fromuser=00038729999
secret=iiiiii
insecure=very ;Wichtig, da dus.net einen SIP-Cluster betreibt und Invites von mehreren IP-Adressen kommen können
nat=no
relaxdtmf=yes

[dusnet_in]
type=peer
fromdomain=voip.dus.net
host=voip.dus.net
context=ankommend


; -----------------------
; bluesip
; -----------------------

[bluesip23]
type=peer
username=bluesip/user1
fromuser=bluesip/user1
secret=eeeeee
host=bluesip.net
fromdomain=bluesip.net
insecure=very
qualify=yes
caninvite=no
nat=no


[bluesip48]
type=peer
username=bluesip/user2
fromuser=bluesip/user2
secret=jjjjjj
host=bluesip.net
fromdomain=bluesip.net
insecure=very
caninvite=no
nat=no


[bluesip_in]
type=peer
fromdomain=bluesip.net
host=bluesip.net
context=ankommend


; -----------------------
; ahooly
; -----------------------

[004236626666]
type=peer
username=004236626666
fromuser=004236626666
secret=ffffff
host=sip.ahooly.com
fromdomain=sip.ahooly.com
insecure=very
qualify=yes
nat=no

[004236620000]
type=peer
username=004236620000
fromuser=004236620000
secret=kkkkkk
host=sip.ahooly.com
fromdomain=sip.ahooly.com
insecure=very
nat=no

[ahooly_in]
type=peer
fromdomain=sip.ahooly.com
host=sip.ahooly.com
context=ankommend


; -----------------------
; ekiga
; -----------------------

[ekiga23]
type=peer
username=user1
fromuser=user1
secret=gggggg
host=ekiga.net
fromdomain=ekiga.net
insecure=very
qualify=yes
caninvite=no
nat=no

[ekiga48]
type=peer
username=user2
fromuser=user2
secret=llll
host=ekiga.net
fromdomain=ekiga.net
insecure=very
caninvite=no
nat=no


[ekiga_in]
type=peer
fromdomain=ekiga.net
host=ekiga.net
context=ankommend


; -----------------------
; Softphones
; -----------------------

[23]
callerid=A user1 <23>
host=dynamic
domain=192.168.2.98
user=23
secret=mmmmmm
type=friend
mailbox=23
nat=yes
context=erlaubt23

[48]
callerid=E user2 <48>
host=dynamic
domain=192.168.2.98
user=48
secret=mmmmmm
type=friend
mailbox=48
nat=yes
context=erlaubt48




extension.conf
Code:
[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]




[mailbox_own]
exten => 99,1,answer
exten => 99,n,wait,1
exten => 99,n,voicemailmain,s${CALLERIDNUM}
exten => 99,n,hangup

[mailbox]
exten => 98,1,answer
exten => 98,n,wait,1
exten => 98,n,voicemailmain
exten => 98,n,hangup


[lokal]
exten => _NX,1,NoCDR()
exten => _NX,n,Dial,SIP/${EXTEN}|55|Ttr
exten => 48,n,Goto,r-${DIALSTATUS}|1
exten => r-BUSY,1,voicemail,b48
exten => r-BUSY,2,Hangup
exten => r-NOANSWER,1,voicemail,u48
exten => r-NOANSWER,2,Hangup


[yesssprivat23_out]
exten => _*20.,1,Dial,SIP/${EXTEN:3}@437801111|45|r

[yesss23_out]
exten => _*21.,1,Dial,SIP/${EXTEN:3}@437802222|45|r

[sipgateat23_out]
exten => _*22.,1,Dial,SIP/${EXTEN:3}@13333|45|r

[dusnet23_out]
exten => _*23.,1,Dial,SIP/${EXTEN:3}@00038724444|45|r

[bluesip23_out]
exten => _*24.,1,Dial,SIP/${EXTEN:3}@bluesip23|45|r

[ahooly23_out]
exten => _*25.,1,Dial,SIP/${EXTEN:3}@004236626666|45|r

[ekiga23_out]
exten => _*26.,1,Dial,SIP/${EXTEN:3}@ekiga23|45|r



[sipgateat48_out]
exten => _*42.,1,Dial,SIP/${EXTEN:3}@48888|45|r

[dusnet48_out]
exten => _*43.,1,Dial,SIP/${EXTEN:3}@00038729999|45|r

[bluesip48_out]
exten => _*44.,1,Dial,SIP/${EXTEN:3}@bluesip48|45|r

[ahooly48_out]
exten => _*45.,1,Dial,SIP/${EXTEN:3}@004236620000|45|r

[ekiga48_out]
exten => _*46.,1,Dial,SIP/${EXTEN:3}@ekiga48|45|r





[ankommend]

exten => 437801111,1,Dial,SIP/23|23|r
exten => 437802222,1,Dial,SIP/23|23|r
exten => 13333,1,Dial,SIP/23|23|r
exten => 00038724444,1,Dial,SIP/23|23|r
exten => bluesip23,1,Dial,SIP/23|23|r
exten => 004236626666,1,Dial,SIP/23|23|r
exten => ekiga23,1,Dial,SIP/23|23|r

exten => 48888,1,Dial,SIP/48|48|r
exten => 00038729999,1,Dial,SIP/48|48|r
exten => bluesip48,1,Dial,SIP/48|48|r
exten => 004236620000,1,Dial,SIP/48|48|r
exten => ekiga48,1,Dial,SIP/48|48|r



[erlaubt23]
include => mailbox_own
include => lokal

include => yesssprivat23_out
include => yesss23_out
include => sipgateat23_out
include => dusnet23_out
include => bluesip23_out
include => ahooly23_out
include => ekiga23_out



[erlaubt48]
include => mailbox_own
include => lokal

include => sipgateat48_out
include => dusnet48_out
include => bluesip48_out
include => ahooly48_out
include => ekiga48_out


[default]
exten => _X.,1,Hangup



voicemail.conf
Code:
[general]
format=wav
serveremail=asterisk
attach=yes
maxsilence=10
minmessage=3
maxmessage=180
tz=vienna
silencethreshold=128
skipms=3000
maxlogins=3
charset=ISO-8859-1
emaildateformat=%A, %d %B %Y at %H:%M:%S
fromstring=Voicemail
string=AsteriskPBX
emaildateformat=%A, %d %B %Y at %H:%M:%S
emailsubject=Neue Nachricht (${VM_MSGNUM}) in Mailbox von ${VM_CALLERID}
emailbody=Auf Ihrer Mailbox wurde eine neue Nachricht hinterlassen.\nDie Nachricht befindet sich im Anhang dieser E-Mail.
mailcmd=/usr/sbin/sendmail

[zonemessages]
vienna=Europe/Vienna|'vm-received' q 'digits/at' H N 'hours'
eastern=America/New_York|'vm-received' Q 'digits/at' IMp
central=America/Chicago|'vm-received' Q 'digits/at' IMp
central24=America/Chicago|'vm-received' q 'digits/at' H N 'hours'
military=Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'


[default]
23 => 923,A user1,user1
48 => 948,E user2,user2
 
Hallo,
eigentlich bin ich paranoid wenn es um Sicherheit geht, allerdings ist das bei der Asterisk ziemlich einfach wenn man sich eine durchdachte Struktur zurechtlegt, irgendwie sieht Deine Konfiguration nicht wirklich durchdacht aus.

Zum rauswählen würde ich mal einen Kontext anlegen der für alle zu verwenden ist [outdial] und dann für die Telefone eigene Kontexte anlegen und die dementsprechenden Kontexte inkludieren, eingehende Gespräche würde ich alle in einen Kontext leiten und von dort verteilen, mit der Extension s kannst Du ja alle Gespräche die nicht zuzuornen sind auf eine eigene Sprachbox senden:

exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,VoiceMailMAin(<EXTEN>@<context>)
exten => s,4,Hangup

für jeden Provider eine eigene DW zu wählen und dann noch zu wissen bei welcher Nummer ich welche Vorwahl verwenden muß würde mich in den Wahnsinn treiben, daher solltest Du in den Kontexten für den outdial das einfach so priorisieren wie Du es brauchst.

exten = _43699.,1,Dial(SIP/${EXTEN}@437802222,45,r)
exten = _49.1,Dial(SIP/${EXTEN}@bluesip23,45,r)
...

Du mußt nur aufpassen das ein eingehendes Gespräch nicht in einen Kontext gelangt wo ein outdial möglich ist, dann kann auch nichts passieren.

Wir selbst verwenden bei jeder Asterisk Guest Accounts damit man von überall kostenlos per Email Adresse und ENUM erreichbar ist, wenn schon VoIP dann richtig.

Gruß
Klaus
 
Ich muss zustimmen, dass deine extensions.conf doch eine schönere Struktur haben kann.
Aber zu deinem momentanen Problem. Dies sind die möglichen Werte die ${DIALSTATUS} annehmen kann:
Code:
    * [B]CHANUNAVAIL[/B] : Channel unavailable (for example in sip.conf, when using qualify=, the SIP chan is unavailable)
    * [B]BUSY[/B] : Returned busy
    * [B]NOANSWER[/B] : No Answer (i.e SIP 480 or 604 response)
    * [B]ANSWER[/B] : Call was answered
    * [B]CANCEL[/B] : Call attempt cancelled (i.e user hung up before the call connected)
    * [B]DONTCALL[/B] : Privacy manager don't call
    * [B]TORTURE[/B] : Privacy manager torture menu
    * [B]CONGESTION[/B] : Means Congestion, or anything else (some other error setting up the call)
Du hast in deinem Dialplan nur die Fälle "BUSY" und "NOANSWER" abgedeckt - daher bekommst du natürlich einen Fehler, wenn ein anderer Fall auftritt.
 
Vielen Dank,

dass ihr euch die Mühe gemacht habt, die confs anzusehen und zu kritisieren!

Ich glaube, ich muss ein bisschen die Voraussetzungen erklären. Es geht nicht um die Standard-Situation in einer Firma, sondern um einige Leute, die sich für VoIP zusammentun.

Jeder hat also seine eigenen Provider und soll auch _seine_ Provider möglichst einfach verwenden. Als vorübergehende Lösung verwende ich Vorwahllen, daher ist 1 Kontext zum Rauswählen nicht optimal, oder? Mit meiner jetzigen Konfiguration erreiche ich, dass jeder nur seinen Provider benutzen kann.

Es geht vorerst darum, dass gewünschte Szenarien _grundsätzlich_ funktionieren. Später kann man sich dann eine bessere Struktur überlegen. Das mit den Vorwahlen sieht schlimmer aus als es ist. Die Telefonnummern werden aus dem Adressbuch angewählt und da ist die Vorwahl schon gespeichert. Manche Provider dienen nur dazu um Anrufe entgegenzunehmen und zwischen den Providern kostenlos zu telefonieren. In der Praxis muss man für unbekannte Nummern nur 1 Vorwahl wissen. Das ist für den Anfang durchaus akzeptabel. In dieser Richtung werde ich mir die Vorschläge sicher überlegen, aber erst wenn die Mailbox endlich funktioniert. Das ist zur Zeit mein dringendstes Problem.

Ich habe nur die extensions.conf so abgeändert:

Code:
[lokal]
exten => _NX,1,NoCDR()
exten => _NX,n,Dial,SIP/${EXTEN}|55|Ttr

...

[erlaubt48]
include => mailbox_own
include => lokal

include => sipgateat48_out
include => dusnet48_out
include => bluesip48_out
include => ahooly48_out
include => ekiga48_out

exten => 48,n,Goto,r-${DIALSTATUS}|1
exten => r-BUSY,1,voicemail,b48
exten => r-BUSY,2,Hangup
exten => r-NOANSWER,1,voicemail,u48
exten => r-NOANSWER,2,Hangup
exten => r-CONGESTION,1,voicemail,b48
exten => r-CONGESTION,2,Hangup

Das ergibt:
Code:
    -- Executing [48@erlaubt23:1] NoCDR("SIP/23-081f63e8", "") in new stack
    -- Executing [48@erlaubt23:2] Dial("SIP/23-081f63e8", "SIP/48|55|Ttr") in new stack
    -- Called 48
    -- SIP/48-08218500 is ringing
    -- Got SIP response 480 "User not responding" back from 192.168.2.108
    -- SIP/48-08218500 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
  == Auto fallthrough, channel 'SIP/23-081f63e8' status is 'CONGESTION'
 
Wie wäre es wenn du deine sip.conf Einträge eher so machst:
Code:
; user 23
register => xxxx:[email protected]/23provider1
register => xxxx:[email protected]/23provider2

; user 48
register => xxxx:[email protected]/48provider1
register => xxxx:[email protected]/48provider2

Dann dein "ankommend" context so:
Code:
[ankommend]
exten => _XX.,1,Dial(SIP/${EXTEN:0:2})
exten => _XX.,n,VoiceMail(${EXTEN:0:2})
exten => _XX.,n,Hangup()
Dieser Code unterscheidet nicht zwischen "u" und "b", sollte aber vorerst funktionieren und ist dann leicht zu erweitern. (PS: code ist nicht getestet, kann also tippfehler o.ä. enthalten)

So hast du viel wirrwarr in deiner extensions.conf gespart und es ist super leicht einen neuen Benutzer hinzuzufügen - einfach sip.conf und voicemail.conf ändern - die extensions.conf musst du dann für eingehende Anrufe nicht mehr anfassen.
 
Zuletzt bearbeitet:
Ich bin für alles offen. Ich habe aber deine Idee noch nicht völlig verstanden und das ist mein Problem, wenn ich solche Vorschläge einfach ausprobiere. Ich probiere dann rum und es kommt Chaos raus.

Code:
; user 23
register => xxxx:[email protected]/23provider1
register => xxxx:[email protected]/23provider2

Geht es hierbei nur darum, dass 23 am Anfang steht, damit du dann mit 1 Befehl die Durchwahl extrahieren kannst? Kann ich also nach 23 eine beliebige Zeichenkette verwenden?


Code:
exten => _XX.,1,Dial(SIP/${EXTEN:0:2})

Dadurch sollten also aus 23provider1 die ersten beiden Stellen gewählt werden.

Ich habe aber die Varibale EXTEN noch nicht richtig verstanden. Warum wird für EXTEN=23providerx angenommen und nicht zB das Passwort?

Ich lese das gerne nach und habe auch in http://cachefly.oreilly.com/books/9780596510480.pdf gesucht. Meine Frage konnte ich dort aber nicht selber beanworten.

Ich ahne was du vorhast und finde den Aufbau genial. Da kommt man als Anfänger aber nicht dahinter.
 
Bei "register" ist alles hinten nach dem "/" beliebig. Dies ist die Extension in die das ganz dann geschickt wird. Hast du da also "abcde" stehen, wird ein über diesen Eintrag eingehender Anruf an die extension "abcde" im entsprechenden eingehenden context geschickt.

Und ja, für die von mir vorgeschlagene kleine Lösung ist es egal was du hinter die "23" hängst. Du kannst auch alle für diesen einen Benutzer einfach nur bei "23" lassen, dann brauchst du das ":0:2" später überhaupt nicht.


Code:
exten => _XX.,1,Dial(SIP/${EXTEN:0:2})
"_XX." fängt alle extensions ab, die mit zwei Zahlen anfangen gefolgt von beliebigen und beliebig vielen Zeichen (oder auch überhaupt keinem Zeichen). Die genaue Extension wird dann in die Variable ${EXTEN} gesteckt. Solltest du also in register hinter dem "/" dashier stehen haben: "12abcde" dann trifft der Ausdruck "_XX." zu und in ${EXTEN} steht "12abcde".
${EXTEN:0:2} bedeutet, dass nur ein Teil vom Inhalt genommen wird. Vorne werden 0 Zeichen abgeschnitten und das Ergebnis ist zwei Zeichen lang. Somit hätten wir dann bei unserem obigen Beispiel "12". Ändert man es auf z.B. "${EXTEN:1:3}" würde es "2ab" ergeben usw.

Als Nachschlagewerk sehr zu empfehlen ist das Voip-Info Wiki. Besonders nützlich finde ich die Seiten über die Asterisk Commands und in deinem Fall auch Variablen.
 
sip.conf
Code:
; user 23
register => 437801111:[email protected]/23_yesss20		; yesss privat  20
register => 437802222:[email protected]/23_yesss21		; yesss         21
register => 13333:[email protected]/23_sipgate22		; sipgate.at    22

; usw.

extension.coinf
Code:
[lokal]
exten => _NX,1,NoCDR()
exten => _NX,n,Dial,SIP/${EXTEN}|55|Ttr

...

[ankommend]

exten => _XX.,1,Dial(SIP/${EXTEN:0:2})
exten => _XX.,n,VoiceMail(${EXTEN:0:2})
exten => _XX.,n,Hangup()

Ansonsten wie bisher.

Nun kann ich gar nicht mehr telefonieren.

zB intern 23 nach 48

Code:
    -- Executing [48@erlaubt23:1] NoCDR("SIP/23-082246e8", "") in new stack
    -- Executing [48@erlaubt23:2] Dial("SIP/23-082246e8", "SIP/48|55|Ttr") in new stack
[Aug 10 22:10:22] WARNING[4823]: app_dial.c:1183 dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No route to destination)
  == Everyone is busy/congested at this time (1:0/0/1)
  == Auto fallthrough, channel 'SIP/23-082246e8' status is 'CHANUNAVAIL'
[Aug 10 22:10:22] NOTICE[3292]: chan_sip.c:14262 handle_request_invite: Unable to create/find SIP channel for this INVITE

Warum habe ich "No route to destination", lokal ist ja definiert.
 
Mach mal auf der CLI ein "set verbose 5", dann ein "sip reload" und ein "sip show peers". Schau nach Fehlermeldungen, und ob der Client den du anrufen willst überhaupt bei "sip show peers" richtig gelistet und registriert ist (Status auf OK), IP und Port eingetragen.
 
Danke für den Hinweis, ich teste alleine und daher ist mir nicht aufgefallen, dass am anderen Rechner ein Problem mit dem Softphone auftrat.

Intern kann ich wieder telefonieren, es meldet sich aber keine Box

Code:
  -- Executing [48@erlaubt23:1] NoCDR("SIP/23-081f5c88", "") in new stack
    -- Executing [48@erlaubt23:2] Dial("SIP/23-081f5c88", "SIP/48|55|Ttr") in new stack
    -- Called 48
    -- SIP/48-081a66d0 is ringing
    -- Got SIP response 480 "User not responding" back from 192.168.2.108
    -- SIP/48-081a66d0 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
  == Auto fallthrough, channel 'SIP/23-081f5c88' status is 'CONGESTION'

Ausgehend:
Code:
-- Executing [*25004236622222@erlaubt23:1] Dial("SIP/23-0820a340", "SIP/004236622222@004236621111|45|r") in new stack
[Aug 10 22:40:25] WARNING[5457]: chan_sip.c:2921 create_addr: No such host: 004236621111
[Aug 10 22:40:25] WARNING[5457]: app_dial.c:1183 dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No route to destination)
  == Everyone is busy/congested at this time (1:0/0/1)
  == Auto fallthrough, channel 'SIP/23-0820a340' status is 'CHANUNAVAIL'
 
Oh, sorry, hab deinen lokalen context vergessen und einfach nur für eingehende sachen von außen gebastelt *g*

Es gibt zwei Varianten.

1. Einfach so wie in ankommend nur leicht angepasst
Code:
[lokal]
exten => _NX,1,Dial(SIP/${EXTEN})
exten => _NX,n,VoiceMail(${EXTEN})
exten => _NX.,n,Hangup()


2. Das ganze einfach nach ankommend weiterleiten - dort wird ja eh nur nach den ersten zwei Zahlen der Extension geschaut - das wäre meine bevorzugte Variante, da du hier wenn du an der Mailbox rumbastelst (b, u, etc reinbauen) nur eine Stelle in der .conf anfassen musst.
Code:
[lokal]
exten => _NX,1,NoCDR()
exten => _NX,n,Goto(ankommend,${EXTEN},1)

*edit*
Dein ausgehend-Problem: wie sieht's hier in "sip show peers" aus? Alles ok? Problem deutet meist auf Verbindungsfehler oder Fehler in der sip.conf hin.
Ich finde in deiner oben geposteten sip.conf keinen passenden Eintrag für "SIP/004236622222@004236621111".
 
Zuletzt bearbeitet:
Erstmal vielen Dank für deine Mühen!

Vergesen wir vorerst das "ausgehend"-Problem.

Ich habe deine Präferenz verwendet:
Code:
[lokal]
exten => _NX,1,NoCDR()
exten => _NX,n,Dial,SIP/${EXTEN}|55|Ttr
exten => _NX,n,Goto(ankommend,${EXTEN},1)

Code:
sip show peers
Name/username              Host            Dyn Nat ACL Port     Status
48/48                      192.168.2.108    D   N      5060     Unmonitored
23/23                      192.168.2.103    D   N      5060     Unmonitored
usw.
18 sip peers [Monitored: 5 online, 0 offline Unmonitored: 13 online, 0 offline]

Code:
-- Executing [48@erlaubt23:1] NoCDR("SIP/23-08203328", "") in new stack
    -- Executing [48@erlaubt23:2] Dial("SIP/23-08203328", "SIP/48|55|Ttr") in new stack
    -- Called 48
    -- SIP/48-08200588 is ringing
    -- Got SIP response 480 "User not responding" back from 192.168.2.108
    -- SIP/48-08200588 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
    -- Executing [48@erlaubt23:3] Goto("SIP/23-08203328", "ankommend|48|1") in new stack
    -- Goto (ankommend,48,1)
[Aug 10 23:05:32] WARNING[3719]: pbx.c:2483 __ast_pbx_run: Channel 'SIP/23-08203328' sent into invalid extension '48' in context 'ankommend', but no invalid handler
 
Ich finde in deiner oben geposteten sip.conf keinen passenden Eintrag für "SIP/004236622222@004236621111".

Nachdem ich bei register ja die Bezeichnungen auf 23_... geändert habe, muss ich auch die Regeln für die einzelnen Povidervorwahlen in der extension.conf ändern.

Code:
[ahooly23_out]
exten => _*25.,1,Dial,SIP/${EXTEN:3}@23_ahooly25|45|r

Code:
Executing [*25004236622222@erlaubt23:1] Dial("SIP/23-08213038", "SIP/004236622222@23_ahooly25|45|r") in new stack

Ich kann also raustelefonieren und angerufen werden. Ich bin schon neugierig wo der Haken bei der Mailbox ist.
 
Lokal ist noch nicht ganz so wie's sein sollte. Hab irgendwie vergessen, dass "." mindestens ein Zeichen braucht. Dafür hab ich jetzt einfach ein "lokal" eingebaut. Zusätzlich behandeln wir in ankommend noch invalid extensions. Zudem hast du den "Dial" command in lokal geschmuggelt, wo er nicht sein sollte. ;)
Statt den "NoOp" bei der invalid extension kannst du auch einfach ein "Answer()" und dann ein "Playback()" machen und den benutzer sagen lassen, dass es eine ungültige extension ist. "NoOp" gibt das ganze einfach nur an die Konsole aus.

Code:
[lokal]
exten => _NX,1,NoCDR()
exten => _NX,n,Goto(ankommend,${EXTEN}lokal,1)

[ankommend]
exten => _XX.,1,Dial(SIP/${EXTEN:0:2})
exten => _XX.,n,VoiceMail(${EXTEN:0:2})
exten => _XX.,n,Hangup()

exten => i,1,NoOp("Invalid extension dialed")
exten => i,n,Hangup()
 
Vielen Dank,

die Mailbox meldet sich nun, aber mein Mailserver Postfix will das Mail nicht versenden. Ansonsten kann ich Mails sowohl intern als auch extern versenden.

voicemail.conf
Code:
[general]
format=wav
serveremail=asterisk
attach=yes
maxsilence=10
minmessage=3
maxmessage=180
tz=vienna
silencethreshold=128
skipms=3000
maxlogins=3
charset=ISO-8859-1
emaildateformat=%A, %d %B %Y at %H:%M:%S
fromstring=Voicemail
string=AsteriskPBX
emaildateformat=%A, %d %B %Y at %H:%M:%S
emailsubject=Neue Nachricht (${VM_MSGNUM}) in Mailbox von ${VM_CALLERID}
emailbody=Auf Ihrer Mailbox wurde eine neue Nachricht hinterlassen.\nDie Nachricht befindet sich im Anhang dieser E-Mail.
mailcmd=/usr/sbin/sendmail

[zonemessages]
vienna=Europe/Vienna|'vm-received' q 'digits/at' H N 'hours'
eastern=America/New_York|'vm-received' Q 'digits/at' IMp
central=America/Chicago|'vm-received' Q 'digits/at' IMp
central24=America/Chicago|'vm-received' q 'digits/at' H N 'hours'
military=Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'


[default]
23 => 023,User23,[email protected]
48 => 048,User48,[email protected],[email protected]

Code:
Aug 11 12:13:21 gw2 postfix/sendmail[4872]: fatal: Recipient addresses must be specified on the command line or via the -t option
Aug 11 10:13:21 gw2 postfix/postdrop[4873]: warning: stdin: unexpected EOF in data, record type 78 length 73
Aug 11 12:13:21 gw2 postfix/postdrop[4873]: fatal: uid=0: malformed input


Ich habe schon beides in der voicemail.conf probiert: [email protected] oder nur user1 (user und Email-Adresse ist natürlich gültig)

Könnte es mit "fromstring" bzw "string" zu tun haben oder ist es für das Versenden egal, was da steht? Ich habe diese Variablen aus rigendeinem Beispiel. Wo ist der Unterschied zwischen beiden?
 
"string" gibt es nicht, es gibt nur "fromstring" und "pagerfromstring".
So wie die Fehlermeldung aussieht liegt es eher an deinem "mailcmd". Sicher, dass "sendmail" der Befehl ist, denn du willst?
Wenn du sendmail benutzt versuch diese Zeile mal ganz weg zu lassen oder sie auf das hier zu ändern: "mailcmd=/usr/sbin/sendmail -t"
 
Zuletzt bearbeitet:
Es funktioniert beides (fast), also keine Definition von mailcmd oder mit der -t option.

Die 1. Email-Adresse, die angegeben wird funktioniert so wie es sein soll. Ich habe das dt. Sprachpaket installiert. Die definierten Variablen wie emailsubject, etc. wird genau so verwendet.

Ab der 2. Email-Adresse, _fehlt_ die wav-Datei und der Text ist in Englisch (New VM als Subject).

Es ist egal, ob es sich um eine lokale oder externe Email-Adresse handelt. Drehte ich in der voicemail.conf die Reiheinfolge der Email-Adressen um, dann hat wieder nur die 1. Mail ein Attachment, das 2. ist auf Englisch.
 
Das ganze ist so aufgebaut:
Code:
extension_number => voicemail_password,user_name,user_email_address,user_pager_email_address,user_option(s)

Die zweite Emailadresse, ist keine Email Adresse, sondern eine Pager Adresse - und an diesen wird natürlich kein Anhang geschickt.
Die Nachricht kannst du mit "pagerbody" verändern.
Also z.B. "pagerbody=${VM_DATE} - ${VM_MAILBOX} hat eine neue Nachricht von ${VM_CALLERID} (${VM_DUR} Sekunden)."

Wenn du die Mail an mehrere Adressen verteilen willst musst du sie wohl an eine Verteiler Email Adresse schicken...
 
Kostenlos!

Statistik des Forums

Themen
248,908
Beiträge
2,303,667
Mitglieder
378,542
Neuestes Mitglied
webstermalcom51