[Problem] Eingehende Anrufe auf Asterisk funktionieren nicht...

Tiieto

Neuer User
Mitglied seit
16 Jan 2021
Beiträge
146
Punkte für Reaktionen
6
Punkte
18
Guten morgen zusammen...

Ich bin der "neue" und komm jetzt wohl öfter... ;)

Aktuell habe ich eine alte Siemens HiPath 3750 im Betrieb (zu Hause - ja ich weiß ist Overkill, deswegen soll die ja auch weg)...
Ich habe mir dann einen Raspi 3 den ich hier noch rumliegen hatte zur Brust genommen und da Asterisk drauf getan... (Wird evtl später auch nen Raspi 4 ersetzt - mal sehen)

Der Raspi mit dem Asterisk hängt hinter einer Fritzbox 7490 mit aktueller Firmware (7.21)
Durch diverse YT Tuts hab ich es nun schon hinbekommen das intern (aktuell mit Softphones) und raus in die Welt telefoniert werden kann..

Allerdings bekomm ich es nicht hin das bei eingehenden Anrufen hier auch mal ein Softphone klingelt (oder die MoH abgespielt wird)...

Aus diesem Grund dachte ich mir, ich frag einfach mal die Profis...

Es sind 6 MSNs verfügbar:
0815
0816
0817
4711
4712
4713

Die Fritzbox hat folgende Konfiguration:
Angelegtes SIP Telefon mit der internen Rufnummer **620
Username: MSN4711
Passwort: ***PWD*** (20 Zeichen)
Eingerichtet (erstmal) für die MSN 4711 Rufnummer ausgehend: 0815 (die Standardrufnummer für alle ausgehenden Telefonate)

Die sip.conf sieht so aus:
Code:
[general]

allowguest=yes
;alwaysauthreject=yes
prematuremedia=no
progressinband=yes

;  ########################################    Beginn Registrierung der einzelnen Rufnummern...
;register => username:password@fritzbox_ip_address/extension_def_in extensions.conf

;register    => MSN0815:***PWD***@192.168.1.1/von-voip-provider    ;<<< noch nicht registriert
;register    => MSN0816:***PWD***@192.168.1.1/von-voip-provider    ;<<< noch nicht registriert
;register    => MSN0817:***PWD***@192.168.1.1/von-voip-provider    ;<<< noch nicht registriert

register    => MSN4711:***PWD***@192.168.1.1/von-voip-provider    ;<<<  registiert..
;register    => MSN4711:***PWD***@fritz.box/von-voip-provider

;register    => MSN4712:***PWD***@192.168.1.1/von-voip-provider    ;<<< noch nicht registriert
;register    => MSN4713:***PWD***@192.168.1.1/von-voip-provider    ;<<< noch nicht registriert


;  #######################################    Ende Registrierung der einzelnen Rufnummern...


context=von-voip-provider ;public  ; Default context for incoming calls. Defaults to 'default'
allowoverlap=yes                 ; Disable overlap dialing support. (Default is yes)
udpbindaddr=0.0.0.0:5060        ; IP address to bind UDP listen socket to (0.0.0.0 binds to all)
                                ; Optionally add a port number, 192.168.1.1:5062 (default is port 5060)

tcpenable=yes                   ; Enable server for incoming TCP connections (default is no)
tcpbindaddr=0.0.0.0:5060        ; IP address for TCP server to bind to (0.0.0.0 binds to all interfaces)
                                ; Optionally add a port number, 192.168.1.1:5062 (default is port 5060)

tlsenable=yes
tlsbindaddr=0.0.0.0:5061
tlscertfile=/home/pi/certs/VoiP-Pi.pem
tlscafile=/home/pi/ca/Asterisk-Root-CA.crt   

transport=udp                   ; Set the default transports.  The order determines the primary default
srvlookup=yes                   ; Enable DNS SRV lookups on outbound calls
language=de                     ; Default language setting for all users/peers
                                ; This may also be set for individual users/peers


;################################################################################ My own shit

[MSN4711]
type        = friend
context     = von-voip-provider
username    = MSN4711
defaultuser = MSN4711
fromuser    = MSN4711
secret      = ***PWD***
allow       = all
host        = fritz.box
fromdomain  = fritz.box
qualify     = yes
insecure    = port,invite
;nat         = force_rport,comedia

;ein beispielhaft angelegtes Telefon..
[SIP_Phone]   ; [email protected]:5060 int RufNr. 101
callerid   = Ein Telefon
type       = friend
context    = from-my-phones  ; group in extentions.conf
secret     = ***PWD***            ; use strong password !!
;mailbox    = Mailboxrufnummer
host       = dynamic         ; somewhere in the network
callgroup  = 1
pickupgroup= 1
dtmfmode   = rfc2833         ;
disallow   = all             ; disallow all codecs
allow      = ulaw            ; only allow codec
allow      = alaw
;encription = yes
transport  = udp,tls    ; udp,tls

Die dazu "passende" extentions.conf hat folgenden Inhalt..
Code:
[general]

static          = yes
writeprotect    = no
clearglobalvars = no

[von-voip-provider]
exten => MSN4711,1,NoOp(Da ruft wer an..)
same  => n,Answer()
same  => n,Wait(1)
same  => n,MusicOnHold()

[from-my-phones]

;############################################# begin internal dial plan

; Rufnummer 100
exten => 100,1,NoOp(Someone calling 100) 
same  => n,Answer()
same  => n,Wait(1)
same  => n,Dial(SIP/SIP_Phone, 30)

;[...]

;############################################# end internal Dialplan

;Hello World example
exten => 5000,1,NoOp(Someone want to say Hello..)
same  => n,Answer()
same  => n,Playback(hello-world)
same  => n,Wait(5)
same  => n,Hangup()

;Mal die MoH testen...
exten => 5001,1,NoOp(Dialing...)
same  => n,Answer()
same  => n,Wait(1)
same  => n,MusicOnHold()


;############################################# begin external stuff... 
exten => _[+*0-9].,1,NoOp({EXTEN})
same  => n,Dial(SIP/${EXTEN}@MSN4711)

;############################################# end external stuff...

exten => e,1,Hangup() ; on any error -> Hangup()

Eigentlich sollte ich bei nem Anruf auf die Asterisk direkt die MoH hören können...

Statt dessen bekomm ich diesen Fehler, bei dem mein Verständnis dann aufhört:

Code:
VoiP-Pi*CLI>   == Using SIP RTP CoS mark 5        > 0x2b42548 -- Strict RTP learning after remote address set to: 192.168.1.1:7078 [Jan 14 00:18:52] NOTICE[7163][C-0000002f]: chan_sip.c:26699 handle_request_invite: Call from 'MSN4711' (192.168.1.1:5060) to extension 'von-voip-provider' rejected because extension not found in context 'von-voip-provider'. VoiP-Pi*CLI>

Da die extension vorhanden ist sollte es eigentlich gehen... Ich finde da den Fehler nicht...

Ich hoffe ihr könnt mir da helfen...

LG
 
Moinsen


register => MSN4711:***PWD***@192.168.1.1/von-voip-provider
^--> Der letzte Teil ist eine Extension und kein Kontext.
Die Route verläuft also so...
1. Anruf von register sucht einen passenden Peer...
2. ...findet den in: [MSN4711] (sip.conf)
3. Findet aber keine Kontextdefinition und nimmt deshalb wohl...
context=von-voip-provider
4. In diesem Kontext wird jetzt versucht die Extension von-voip-provider anzuspringen, die es aber nicht gibt.

Vielleicht verstehst du jetzt auch die Fehlermeldung?
Die ist nämlich genau richtig: Call from 'MSN4711' (192.168.1.1:5060) to extension 'von-voip-provider' rejected because extension not found in context 'von-voip-provider'.

Ändere mal...
[von-voip-provider]
exten => MSN4711,1,NoOp(Da ruft wer an..)
same => n,Answer()
same => n,Wait(1)
same => n,MusicOnHold()
...in...
Rich (BBCode):
[von-voip-provider]
exten => von-voip-provider,1,NoOp(Da ruft wer an..)
same => n,Answer()
same => n,Wait(1)
same => n,MusicOnHold()


PS: Welcome aboard ;)

Übrigens...
Da Asterisk den ersten Peer nimmt, der mit der IP des Anrufers (FRITZ!Box) übereinstimmt, wird immer [MSN4711] genommen.
Die einzigste Möglichkeit die dir bleibt die "MSN" korrekt zu erkennen ist der letzte Teil des "register =>", also die Extension, im Kontext: [von-voip-provider]
Hört sich vielleicht komplizierter an als es ist, in der Praxis aber im Kontext leicht auseinanderfriemelbar.
Nimm einfach für jedes "register =>" am Ende eine eindeutig identifizierbare Extension und die kannst du im Kontext auch eindeutig ( ${EXTEN} ) identifizieren und routen.

Wenn du das vestanden hast, Glückwunsch ;) - Ich hab mit meinen IQ Monate gebraucht um dass zu kapieren :cool:
 
Zuletzt bearbeitet:
Danke für die schnelle Antwort...

Verstanden?? Naja, ich glaub da bin ich noch etwas weiter von entfernt...

Ich hab mir das-asterisk-buch.de zu Gemüte geführt (ich gebe zu noch nicht komplett) das dort gelesene hab ich so verstanden, dass der context in der sip.conf = einer [extention] in der extensions.conf entspricht.

Demzufolge ist die Verwirrung jetzt richtig groß...

Deswegen hab ich ja die Registrierung wo oben gezeigt auf [...]/von-voip-provider gesetzt und weiter unten steht auch context=von-voip-provider

was ja eigentlich auf die extension in der extensions.conf auf [von-voip-provider] und dessen Inhalt zeigen müsste... o_O

Evtl kannst Du das nochmal etwas genauer erklären?? Hab irgendwie noch n Knoten im Kopp...

Nichts desto trotz habe ich Deine vorgeschlagene Änderung mal übernommen & es funktioniert... Warum ist mir noch schleierhaft...


Um mal Dein "Übrigens.." aufzugreifen.....
Der Raspi soll ja später alle Rufnummern verwalten... (Aktuell sind noch die "Hauptrufnummern" (0815-block) auf die HiPath gerichtet der zweite Nummernblock wird von uns aktuell nicht so wirklich verwendet und muss nun erstmal für Testzwecke herhalten um die Kommunikation nicht zu unterbrechen...

Wie müsste ich das lösen um die eingehenden Anrufe nach der gewählten Nummer aufzuteilen? Wäre wichtig, da wir dem Fax eine eigene Rufnummer zugeordnet haben.. (Dem Fax-Problem widme ich mich dann später...)
 
Zuletzt bearbeitet:
Ich mach kein "register =>" an einen FRITZ!Box Registrar :)
Ich registriere Rufnummern in der F!B am Asterisk...
Bildschirmfoto vom 2021-01-16 14-23-51.png
...so kommt der Anruf auch da an wo er hingehört...
Bildschirmfoto vom 2021-01-16 14-39-35.png<-->Bildschirmfoto vom 2021-01-16 14-45-38.png
Rich (BBCode):
osmc*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description                
1000/1000                 192.168.188.1                            D  Yes        Yes            5060     Unmonitored User

Hab aber Peers im Asterisk, die die FRITZ!Box ihre Registrare anrufen dürfen.
Genau wie dein: [MSN4711]
Rich (BBCode):
osmc*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description                
fbfgateway0/koyaanisqatsi 192.168.188.1                               Auto (No)  No             5060     Unmonitored Peer                  
fbfgateway1/koyaanisqatsi 192.168.178.1                               Auto (No)  No             5060     Unmonitored Peer                  
fbfgateway2/621           192.168.188.2                               Auto (No)  No             5060     Unmonitored Peer
( 621 ist eine 7270 die keine neuere Firmware mehr bekommt )
Mit denen kann ich dann interne Anrufe ( Alles mit **XXX, auch Telefonbuchkurzwahlen und die Anrufbeantworter ), oder Vorauswahlen ( *121# z.B. ) zum Rausrufen nutzen.

Guck, mein sip show registry ...
Code:
osmc*CLI> sip show registry
Host                                    dnsmgr Username       Refresh State                Reg.Time           
0 SIP registrations.

Das möchte ich dir auch ans Herz legen. Also probier es mal so rum.
Allerdings müssen dann Anrufe von "Außen" in der F!B Rufbehandelt werden, zum Beispiel: Rufumleitung > Paralellruf
Bildschirmfoto vom 2021-01-16 14-59-59.png<--<< So zum Beispiel.
 
Zuletzt bearbeitet:
Man hat das jetzt gedauert bis ich das geblickt habe...

Statt den Asterisk bei der Fritte zu registrieren, registrierst du die Fritte im Asterisk...
Nette idee...

Deine Fritte macht aber dennoch die SIP-trunk Registrierung beim Provider? Oder macht das auch Asterisk?
Machst Du dann ne "interne Weiterleitung" in der Fritte von externer Rufnummer 1 zu 1000, RN 2 zu 2000, etc?

LG
 
Nur die F!B registriert beim Anbieter - Yep ;)
Deswegen heissen die ausgehenden Peers bei mir auch: fbfgatewayX
Aber über die Vorauswahlen kann ich auch alle Nummern nutzen.

Beispiel was bei dir schon so funktionieren müsste:
Rich (BBCode):
exten => 797,1,NoOp(${EXTEN})
same  => n,Dial(SIP/*121#**797@MSN4711)
; Wahl der Telefonbuchkurzwahl **797 über die erste eingerichtete Internetrufnummer
...ohne das dafür ein "register =>" von Nöten wäre.
Denn der Peer MSN4711 authorisiert sich on the fly beim INVITE ( Anrufsanfrage ) bei der F!B.
 
Zuletzt bearbeitet:
OK... Ich versuch das mal so ähnlich wie Du umzusetzen...

Gibts noch ne Empfehlung bezüglich der "Asterisk-internen-Rufnummern"?
Bei meiner HiPath hatte ich da die Wahl von 100-349 & 500-749..
Was immer etwas kritisch bei Notrufnummern ist / war... In diesem Fall muss immer die Amtsleitungsvorwahl vor die Notrufnummer gewählt werden, sonst landet man intern...

LG
 
Sowas lässt sich sehr genau im Asterisk Wahlplan priorisieren.
Auch, dass nur ganz bestimmte User das dürfen.

Beispiel:
Rich (BBCode):
exten => _11[02]/100[0-9],1,NoOp(${EXTEN})
same  => n,Dial(SIP/${EXTEN}@MSN4711)
; Nur User 1000 bis 1009 dürfen das
Nennt sich: CID match
Teste das aber tunlichst nicht mit 110 und 112, sonst kommste in Erklärungsnot.
 
Ja... Wär doof...

Hast Du die Fritte eigentlich nur einmal am asterisk registriert? Wenn ja, wie viele gleichzeitige Gespräche sind mit diesem einen SIP möglich?

LG
 
Kommt auf die Sprachkanäle an.
Von Asteriskseite vernachlässigbar.
IP-Telefone/SIP-Klienten brauchen immer zwei.
Und eine FRITZ!Box kann, glaub ich, höchstens 5.
Das siehste auch in der Sprachübertragung.
DECT/ISDN/Analoge "verbrauchen" jeweils 1 Sprachkanal, haben aber auch ihre Limits.
...also genau kann ich dir dass nicht sagen, das hängt eben auch davon ab ob Rufbehandelt werden muss, was eben auch einen zusätzlichen Sprachkanal belegt.
 
Es ist vollbracht...

Jetzt funktioniert nix mehr... o_O

Hab in der Fritte die 2000 eingerichtet, Rufumleitung von der 4711 auf die 2000 eingestellt.
Die 2000 meldet sich erfolgreich am Asterisk an
Interne Telefonie funktioniert

Komme nur nicht raus in die Welt & von aussen kommt auch nix rein...

Im CLI kommt auch keinerlei Meldung (beim rein telefonieren)
Beim Raustelefonieren kommt das im CLI:

Code:
  == Using SIP RTP CoS mark 5
       > 0x73a14530 -- Strict RTP learning after remote address set to: 192.168.1.216:8000
    -- Executing [**my*cell*phone**@from-my-phones:1] NoOp("SIP/SIP-Phone-0000000c", "**my*cell*phone**") in new stack
    -- Executing [**my*cell*phone**@from-my-phones:2] Dial("SIP/SIP-Phone-0000000c", "SIP/*121#**my*cell*phone**@2000") in new stack
  == Using SIP RTP CoS mark 5
    -- Called SIP/*121#**my*cell*phone**@2000
    -- SIP/2000-0000000d is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
    -- Auto fallthrough, channel 'SIP/SIP-Phone-0000000c' status is 'CONGESTION'
[Jan 16 17:08:34] WARNING[16806]: chan_sip.c:4119 retrans_pkt: Retransmission timeout reached on transmission [email protected]:5060 for seqno 102 (Critical Request) -- See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
Packet timed out after 32000ms with no response
VoiP-Pi*CLI>

Hab ich noch was übersehen?
 
Auf FRITZ!Box einem Telefon die 2000 zugewiesen? <-klick/tapp-> Bildschirmfoto vom 2021-01-16 18-38-07.png
Und das Dial() darf nicht...
Code:
SIP/*121#**my*cell*phone**@2000
...sondern nur...
Code:
SIP/2000
...denn mit...
Code:
SIP/*121#**my*cell*phone**@MSN4711
...erreichst du von Asterisk aus dein Mobile.
 
Zuletzt bearbeitet:
Auf FRITZ!Box einem Telefon die 2000 zugewiesen? <-klick/tapp->
Ööööhm... Nö... Hatte ch auch schon überlegt...

Aber: Bei nem Analogen / ISDN Telefon isses Portgebunden, ein SIP Telefon braucht wieder nen Registrar... ??????
Anhang anzeigen 109212
Und das Dial() darf nicht...
Code:
SIP/*121#**my*cell*phone**@2000
...sondern nur...
Code:
SIP/2000
...denn mit...
Code:
SIP/*121#**my*cell*phone**@4711
...erreichst du von Asterisk aus dein Mobile.
Das war ja auch meine Absicht...
 
Die Nummer in der FRITZ!Box kann jedem an der F!B angeschlossenen Telefon zugewiesen werden.
Auch einem Anrufbeantworter, in Ermangelung eines Telefons.
Wer soll denn sonst klingeln/signalisieren/antworten?

Das war ja auch meine Absicht...
...einen Fehler zu erzeugen?

Ein User ist kein Peer.
Bei der MSN4711, der Peer ist, wird das @ vorangestellt beim Dial().

Also, die 2000 ist das Ziel: SIP/2000
Über einen Peer willst du ein Ziel erreichen: SIP/Ziel@Peer
 
Nein... Mein Handy anrufen ;)

Irgendwie raff ich dein System nicht...

die 2000 hab ich übrigens als "friend" eingerichtet... (also eingehende & ausgehende Gespräche)
 
Zuletzt bearbeitet:
Also...
Code:
dial(SIP/deinemobilenummer@MSN4711,,m)
...mit MoH statt TutTut (early media) um dein Handy anzurufen.
Und...
Code:
dial(SIP/2000,,m)
...um ein Telefon der FRITZ!Box anzurufen welchem die 2000 zugewiesen wurde.

Externe Anrufe können mit einer RUL mit Paralellruf auf 2000 an Asterisk weitergeleitet werden und Asterisk ruft dann das Telefon mit der 2000 an.

Du kannst zum Testen auch in der Konsole Extensions erstellen mit: dialplan add
Beispiel:
Code:
 dialplan add extension 3333,1,dial(SIP/1000) into osmc replace
Extension 3333@osmc (1) replace by '3333,1,dial(SIP/1000)'
Das ist ohne "dialplan reload" sofort gültig und kann sofort ausprobiert werden.
Zwischenablage00.png
Komm aber nicht auf die Idee, ohne vorheriges Backup deiner extensions.conf, dass mit "dialplan save" abzuspeichern.
Denn danach sieht deine extensions.conf anders aus.
Ein "dialplan reload" löscht aber solche Experimente sauber aus dem laufenden Asterisk wieder raus.
 
Zuletzt bearbeitet:
Oh man... Du musst mich echt für doof halten...

Die ganzen eintrage mit MSNxyz hab ich aus der Config raus geschmissen & durch die 2000 ersetzt... Du hast ja gesagt das die register => eintrage nicht mehr benötigt werden, wenn in der Fritzbox eine beliebige Rufnummer mit Rufumleitung geschaltet ist...

Deswegen hab ich das dann auch so gemacht...

Register => weg
die dazugehörigen MSN eintrage, weg..

Nur noch die 2000 im Asterisk als friend eingerichtet...


Das ist gerade so dermaßen verschachtelt, das ich da nicht mehr durchblicke.... o_O
 
Nee, ich war mal ganz genauso doof :)
Du sammelst Erfahrungen, das ist prima.

Ein "register =>" ist eine Sache und nur für eingehende Anrufe da.
Ein Peer ist nur für ausgehende Anrufe gedacht, und den brauchst du natürlich, also MSN4711 wieder anlegen. ;)
Ein User/Friend kann Beides. Anrufe empfangen und selber welche machen.
...gesteuert über die Kontexte/Extensions.

Wenn der Kopf raucht, mach Feierabend, lass es sacken und meditiere ne Runde drüber.
...wir haben alle Zeit der Welt, wenn wir die AHA+L Regeln beachten :cool:

PS: Kein Backup gemacht? - Dann kopier es dir aus deinen Eingangspost ;)
 
Zuletzt bearbeitet:
OK...

Dachte ich könnte ein und ausgehende Anrufe genauso wie Telefone als friend (also peer & User) definieren...

Und das halt für jede Rufnummer um die Unterscheidungen hinzubekommen...

Gibt's für Deine Version des Aufbaus ne Grafische Darstellung? 1 Bild sagt oft mehr als 1000 Worte ;)

Aktuell verstehe ich Deine Version als loop zwischen Fritte & Asterisk... Kann mir nicht vorstellen das sich da alles im Kreis drehen soll...


Ich Denke aber Du hast recht.... Der Kopp ist schon weg gebrannt... Also erstmal ne Nacht sacken lassen... ;)
 
Der grosse Vorteil von in FRITZ!Box angelegten Rufnummern ist ja auch, dass die ganz einfach über den S0 (wenn vorhanden) direkt abgreifbar sind.
...falls da eine TK dranhängt oder das schwarze Ende des grauen DSL Y-Kabels einer anderen ( auch älteren ) FRITZ!Box.
Das ist so einfach, da kommt man normal von selber gar nicht drauf, ich habs auch hier aus dem Forum gelernt ;)

Also zeig ich die Möglichkeiten auf und helfe auch gerne bei der Umsetzung.
1. "register =>" um eingehende Anrufe direkt vom ITSP (oder von der FRITZ!Box) zu bekommen.
2. Den dazugehörigen Peer, um Anrufe Richtung ITSP (oder FRITZ!Box) abzusetzen.
3. Asterisknummer in der FRITZ!Box, um an Asterisk registrierte User auch direkt zu erreichen und darüber von Asterisk erreicht zu werden.
4. Alle Nummern in der FRITZ!Box an dessen S0 (ISDN) abzugreifen und diese MSNs in der angeschlossenen TK-Anlage Telefonen zuzuweisen und nutzbar zu machen

Das sind halt alles Sachen, die verstanden werden müssen um sie elegant nutzen zu können.
Ohne unnötig Resourcen zu verschwenden (Sprachkanäle).
...das geht halt auch nicht von Heute auf Morgen und das erwarte ich auch von niemanden.

Im Prinzip ist dein angefragtes Problem ja schon in Post #2 erkannt und gelöst worden.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.