Asterisk und Calltrough - Weiss der Provider (voipjet) wie ich mich einwaehle?

voipd

IPPF-Promi
Mitglied seit
5 Mai 2005
Beiträge
3,187
Punkte für Reaktionen
4
Punkte
38
Hallo zusammen,

eigentlich ist es wohl ein Provider Problem, aber zum einen gibt es fuer diesen Provider keine Rubrik und zweitens ist es wohl hier besser aufgehoben denn es geht um folgendes:

Ich habe mir einen Asterisk aufgesetzt der Callthrough macht.
Ich waehle mich dorthin ein ueber

a) sipgate.de
b) dus.net
c) Fritzbox

An einer Stelle gehen alle drei Einwahlen in die selbe Callthrough Routine, aber das Ergebnis ist unterschiedlich!
Code:
               D-Mobil                D-Festznetz
a)sipgate.de:  OK + CLIP_OK           nicht erreichbar (1)
b)dus.net      OK + CLIP_OK           OK aber CLIR
c)FritzBox     OK + CLIP falsch (2)   OK + CLIP falsch (3)
(1) Ansage von voipjet, dass die Rufnummer geprueft werden soll
(2) Es kommt +02xxxxxxxxx an.
(3) Es kommt 0002xxxxxxxxx an.

Der DIAL-Befehl im Script ist immer der Gleiche. Es wurde immer die gleiche Mobil, bzw. Festnetzrufnummer angewaehlt.

exten => #,1,Set(CALLERID(num)=02xxxxxxxxx)
exten => #,2,Dial(IAX2/voipjet/${NR},30,H|g)

Kann mir das jemand erklaeren, bzw weiterhelfen?

Aus dem CLI Logfile habe ich noch diese Schnipsel gefunden:
Code:
Von der FritzBox: Executing [#@callthrough:2] Dial("SIP/41-x6cxxxxx",         "IAX2/voipjet/011492xxxxxxxxx|30|H|g") in new stack  
Ueber sipgate:    Executing [#@callthrough:2] Dial("SIP/sipgate.de-x6cxxxxx", "IAX2/voipjet/011492xxxxxxxxx|30|H|g") in new stack
Aus meiner sicht muss voipjet irgendwas mitbekommen wie ich mich an meinen Asterisk connecte und entsprechend anders reagieren.
Aber was und wie??

Bin ziemlich ratlos.

voipd.
 
Die CallerID muß im internationalen Format angegeben werden. Also 49...... .
Deine Provider über die du einwählst, senden die Nummer im nationalen Format, also ohne 49 am Anfang. Probleme kann es noch geben wenn ein + davorsteht. Also Nummer vorher anpassen.
Das die Ergebnisse sich unterscheiden, liegt eventuell daran, das die für verschiedene Zielnetze unterschiedliche Routen verwenden. Mir ist mal aufgefallen, das unter bestimmten Umständen die Nummer nicht als nationale/internationale Nummer, sondern als Subscriber Nummer signalisiert wurde. Die Nummer kam dann ohne führende Nullen an :-Ö

Bye,
Alf aus HH
 
Zuletzt bearbeitet:
Hallo alfhh,

wenn ich die CallID mit 49... beginnen lasse kommt sie auch so auf dem Handy an. Es wird kein "+" vorangestellt. :confused:

alfhh schrieb:
Das die Ergebnisse sich unterscheiden, liegt eventuell daran, das die für verschiedene Zielnetze unterschiedliche Routen verwenden.
Kann das sein?

Vielleicht habe ich das Problem nicht richtig erklaert. Der Unterschied kommt dadurch zustande wie ich mich in MEINEN Asterisk einwaehle!
Dann geht es es via voipjet weiter.

Die Frage ist: Was bekommt voipjet davon mit wie ich mich in MEINEN Asterisk einwaehle.

voipd.
 
Das mit der 49 ohne der 00 oder + ist genau der Fehler den ich meine. Eventuell mal ein Ticket bei Voipjet aufmachen. Wenn du Zugriff auf einen ISDN Anschluß hast, kannst du dir das mit einem D-Kanal Trace anschauen. Natürlich musst du das Mobiltelefon auf deinen ISDN Anschluß umleiten, damit die selbe Route verwendet wird. In meinem Fall wird die Nummer als Subscriber Nummer übermittelt. Diese Nummern werden auf dem Weg nicht angepasst. Voipjet "merkt" woher dein Anruf kommt, daran wie die CallerID übergeben wird. Mach mal ein NoOp mit CallerID vor deinem "Set CallerID". Dann kannst du sehen was übergeben wird. Du solltest auch CallerID Name und Number auf den gleichen Wert setzen. Das kann eventuell auch Probleme machen. Wenn der Name auf Anonymous steht, ist die Nummer zum Beispiel unterdrückt. Der Provider hat auf jeden Fall unterschiedliche Routen in die Mobilfunknetze und in das Festnetz. Wenn du alle Handynetze zur verfügung hast, kannst du das ausprobieren. Das kann auch nach Tageszeit variieren.

Bye,
Alf aus HH
 
Zuletzt bearbeitet:
Hallo alfhh,

danke fuer die Tipps. Ich werde das mit der CallerID mal testen.

Der Provider hat auf jeden Fall unterschiedliche Routen in die Mobilfunknetze und in das Festnetz.
Das verstehe ich, aber mein Problem ist ein anderes:

Ich waehle immer von meinem Asterisk via Voipjet die gleiche Festnetznummer an. Dann muesste doch eigentlich das gleiche bei rauskommen oder?

Tut es aber nicht! Es haegt davon ab wie ich mich (per CallIn) _in_ meinem Asterisk einwaehle. Das ist neben der falschen CallID das eigentliche Problem!

voipd.
 
Hast du meinen Tipp mal versucht, und dir die Callerid mit NoOp vor dem Dial anzeigen zu lassen? Ich bin mir ziemlich sicher, das es da Unterschiede gibt wie die Callerid angezeigt wird, je nach incoming Provider. Die Callerid muß vor dem Dial internationalisiert werden. Also z.B. 493012345678 für Berlin. Wenn dann immer noch Murks auf deinem Handy angezeigt wird, passiert das unterwegs, da kannst du entweder ein Ticket aufmachen oder einen anderen Provider nehmen.

Update: Habe das eben mal getestet. E-Plus und O2 sind OK. Vodafone und T-Mobile nicht. Da kommt die Nummer zweimal. Einmal "user provided, not screened" mit unbekannten Nummertype, und einmal als "network provided" als nationale Nummer. Die wurde also angepasst. Der unbekannte Nummerntyp ist das Problem. Da hilft wohl wirklich nur ein Troubleticket aufmachen.
Hier das D-Kanal Trace:

Code:
SETUP             TEI=FF CallRef=01
       Bearer         speech 
       B-Channel      01
       Calling Party  4940xxxxxxxx
         unknown type
         ISDN/Telephony numbering plan
         user provided, not screened
         presentation allowed
       Calling Party  040xxxxxxxx
         national number
         ISDN/Telephony numbering plan
         network provided
         presentation allowed
       Called Party   xxxxxxxx
         Subscriber number
         ISDN/Telephony numbering plan
       Redirected by   
         unknown type
         unknown numbering plan
         user provided, not screened
         presentation restricted
         call forwarding unconditional

Bye,
Alf aus HH
 
Zuletzt bearbeitet:
Hallo alfhh,

habe folgendes gemacht:
Code:
exten => #,10,NoOp(${CALLERID})
exten => #,11,Dial(IAX2/voipjet/${NR},30,H|g)
immer auf die gleiche Festnetznummer.

Resultat:
Code:
sipgate
-- Executing [#@callthrough:10] NoOp("SIP/sipgate.de-b6xxxxxx", "") in new stack                 
-- Executing [#@callthrough:11] Dial("SIP/sipgate.de-b6xxxxxx", "IAX2/voipjet/011492xxxxxxxxx|30|H|g") in new stack                   
==> Ansage: Can not be completed                                                       

dus.net
-- Executing [#@callthrough:10] NoOp("SIP/dus.net-b6xxxxxx", "") in new stack                    
-- Executing [#@callthrough:11] Dial("SIP/dus.net-b6xxxxxx", "IAX2/voipjet/011492xxxxxxxxx|30|H|g") in new stack   
==> Ringing

Da muss man wohl noch anders debuggen oder? :gruebel:

voipd.
 
Bzgl. voipjet funktioniert es bei mir immer (unabhängig vom Rufziel) mit (korrekter) CLIP, wenn sie im internationalen Format ist und num und name übereinstimmen.
Daraus ergibt sich dann etwa folgendes:

Code:
;$bparty enthält die Rufnummer, die signalisiert werden soll im deutschen ntionalen Format mit NDC
exten => #,1,Set(CALLERID(all)=+49${bparty,1} <+49${bparty,1}>) ; Call-Format national with NDC
exten => #,2,Dial(IAX2/voipjet/${NR},30,H|g)

Funktioniert wie gesagt bei mir immer.
 
@ voipd
Du mußt dir Callerid(num) anzeigen lassen. Besser (all).
Ich habe meinen Beitrag oben editiert. Das Problem liegt auf der Route zu T-Mobile und Vodafone.

@abw1oim
Was heißt NDC?

Update.
abw1oim hat die Lösung geliefert. Mit einem + vor der 49 klappt das dann auch bei diesen Providern.
Danke. Case closed ;-)

Bye,
Alf aus HH
 
Zuletzt bearbeitet:
@alfhh

NDC = National Destination Code (zu deutsch: Vorwahl, im angloamerikanischen Raum gerne auch als Area Code bezeichnet)

Sorry, kommt davon, wenn man in der TK-Branche arbeitet und die Abkürzungen der ITU (internationale Telekommunikationsunion) ständig im Kopf hat :rolleyes: .
 
International wäre das dann INDC? Ich lerne sowas gerne, sonst würde ich nicht fragen.
Danke.

Alf aus HH
 
Es gibt insgesamt 4 relevante Kürzel (mit Beispielbelegung für HH):

NDC 40
NAC 0 - National Access Code (oder Amtsziffer für anderen
Vorwahlbereich im eigenen Land)
CC (ITU-CC) 49 - Country Code bzw. ITU-Country-Code Ländercode
IAC 00 - International Access Code (oder Vorwahl für das Signalisieren
eines Anrufes mit Ziel außerhalb des eigenen Landes)

Beispiel für den NANPA (Nord American Numbering Plan oder Rufnummernplan Nordamerika (USA/Kanada weite Teile der Karibik) hier

Washingtin DC

NDC 202
NAC 1
CC 1
IAC 011

Bahamas

NDC 242
NAC 1
CC 1(242)
IAC 011

Die Liste aller ITU-Country-Codes und auch die Nationalen Rufnummernpläne (numbering plans) findet man übrigens unter ITU Rufnummernpläne

Edit:

Als kleine Ergänzung: In Deutschland findet man als Synonym für den NDC oder die Vorwahl gerne auch den "hochbeamtischen" :p Begriff der ONKZ (Ortsnetzkennzahl).
Außerdem gibt es seit der Erfindung der Mobilfunknetze noch das IAC-Replacement (das wir vorhin hier hatten), nämlich das +-Zeichen. Mit dessen Einführung war es erstmals möglich, dass ein Mobilfunknutzer eine Rufnummer im Format

+<CC><NDC><SN>

(schon wieder eine Abkürzung :mad: SN = Serial Number oder Teilnehmerrufnummer)
speichern konnte (also etwa +4940123456 um mal bei HH zu bleiben) und diese gespeicherte Nummer ohne Kenntnis der konkreten Signalisierung am Aufenthaltsort immer fehlerfrei geroutet zu bekommen (Die 00 für ein Auslandsziel ist halt nur in Europa verbreitet, es gibt noch viel mehr, die bekanntesten sind sicher 001 (NANPA siehe oben) bzw. 8<wait>12 in vielen Nachfolgestaaten der Ex-Sowjetunion)
 
Zuletzt bearbeitet:
SN steht doch aber für Subscriber Number, oder?
Aber zurück zum Thema. Das + hat doch eigentlich nichts in der CallerID zu suchen, oder sehe ich das falsch? Ich müsste jetzt mal checken, ob das + bei Routen zu anderen Zielen nicht sogar irgendwelche Nebenwirkungen hat. Sonst muß ich ja die CallerID in Abhängigkeit des Ziels anpassen. Das mit dem + ist bei dem Provider aber auch nicht dokumentiert. Zeitweise habe ich das Gefühl, da macht jeder was er will. Ich stolpere immer wieder über Bugs, die nicht sein müssten.

Bye,
Alf aus HH
 
@alfhh

Ich moechte nicht unhoeflich sein, aber hast du das Problem verstanden? :(

Unterschiedliche Routen in die Unterschiedlichen Mobilfunk- und Festnetze sind mir klar, auch dass dann die CallID unterschiedlich gehandhabt wird.

Dank deines Tipps konnte ich folgendes feststellen:
Code:
Es wurde KEINE Rufnummer gesetzt, anscheinend wird der "String" von der reinwaehlenden Rufnummer auch fuer das rausgehende Call verwendet:

Ueber sipgate:
-- Executing [#@callthrough:1] NoOp("SIP/sipgate.de-b6xxxxxx", "[B]"Unknown" <Unknown>"[/B]) in new stack                                   -- Executing [#@callthrough:4] Dial("SIP/sipgate.de-b6xxxxxx", "IAX2/voipjet/011492xxxxxxxxx|30|H|g") in new stack                   -- Called voipjet/011492xxxxxxxxx                                                               
-- Call accepted by 8.11.164.235 (format ulaw)                                                  
-- Format for call is ulaw                                                                      
-- IAX2/voipjet-1 is making progress passing it to SIP/sipgate.de-b6xxxxxx                      
-- Hungup 'IAX2/voipjet-1'                                                                      
[B]Ergebnis ==> Ansage: Can not be completed[/B]

Ueber dus.net:
-- Executing [#@callthrough:1] NoOp("SIP/dus.net-b6xxxxxx", "[B]"Anonymous" <Anonymous>"[/B]) in new stack                                  
-- Executing [#@callthrough:4] Dial("SIP/dus.net-b6xxxxxx", "IAX2/voipjet/011492xxxxxxxxx|30|H|g") in new stack                      -- Called voipjet/011492xxxxxxxxx
-- Call accepted by 8.11.164.235 (format ulaw)                                                  
-- Format for call is ulaw                                                                      
-- IAX2/voipjet-2 is making progress passing it to SIP/dus.net-b6xxxxxx                         
-- IAX2/voipjet-2 is making progress passing it to SIP/dus.net-b6xxxxxx                         
-- Hungup 'IAX2/voipjet-2'                                
[B]Ergebnis ==> Ringing[/B]
Wenn man mit "Unknown" <Unknown>" == sipgate.de einen Call ueber voipjet aufmacht wird nicht ins deutsche Festnetz vermittelt! Benutzt man hingegen "Anonymous" <Anonymous>" == dus.net wird der Ruf ins deutsche Festnetz aufgebaut!!

Die Sache mit der "krummen" CallID Anzeige ist das zweite Problem und das ist eigentlich dadurch geloest.
Setzt man eine ordentliche CallerID wird das Gespraech ordnungsgemaess weitervermittel.

@abw1oim

Der Eintrag
exten => #,1,Set(CALLERID(all)=+49${bparty,1})
hat schon zu einen befriedigenden Ergebnis gefuehrt. Ich habe es trotzdem nach deiner Empfehlung abgeaendert also auch mit <+49${bparty,1}>

Vielen Dank erstmal an euch!!!

voipd.
 
Sorry, Tippfehlerteufel war im Spiel - Subscriber Number ist natürlich richtig.

Hinsichtlich der CLIP-Signalisierung:
Üblicherweise wird im Festnetz national signalisiert und an den Übergabepunkten verschiedener nationaler Netze wird dann vom Abgangsnetz der Country-Code vorgeschaltet. Der IAC wird dann weggelassen, da das Empfangsnetz ja "weiß", das es sich um einen Call aus einem fremden (ausländischen) Netz handelt. Damit ist dann auch alles gut und am Endgerät des Angerufenen erscheint eine rückwahlfähige CLIP.

Bei VoIP ist das leider alles ein wenig anders: Hier kann eben nicht davon ausgegangen werden, dass der Anrufer und der Angerufene im selben oder in verschiedenen nationalen Netzen sind. Auch aus Sicht des Providers, über den das Gespräch ggf. vermittelt wird, hängt alles davon ab, wie seine Routen aussehen, d.h. wo und wann er denn ins PSTN terminiert (was er dank Anbindung an Wholesaleprovider ja wiederum auch nicht wissen muss). Damit gibt es zwei Möglichkeiten:

1. Die CLIP wird beim Provider fest registriert, dafür legt der ein Format fest (z.B. DUS.NET - national DE, betamaxe - international +-Format) und wird dann in dessen Hoheit korrekt signalisiert.

2. Der Provider gestattet die Übermittlung einer (beliebigen) unregistrierten CLIP-Nummer. Dann wird er eine Festlegung treffen, in welchem Format er diese erwartet, bei voipjet ist das eben international +, bspw. ist es bei sipgate aber eben <CC><NDC><SN> ohne +.

Ich habe mir wegen dieses zugegebenermaßen unübersichtlichen Zoos an Vorgaben der Provider mittlerweile angewöhnt, dass vor Rufaufbau über einen Provider eine "prepcall"-Methode aufgerufen wird, die die zu übertragende CLIP in das gewünschte Format bringt sowie die Rufnummer selbst, die angerufen werden soll, auf das erwartete Format umsetzt (siehe voipjet, da muss es eben 0114940 sein und nicht 040 oder 004940 oder +4940). Damit klappt das dann eigentlich schon ganz gut, aber ja: Du hast Recht: Da kocht jeder sein eigenes Süppchen :mad: .
 
@voipd:

Das Problem mit der unterschiedlichen Signalisierung der CLIP am asterisk ist mir auch neu, scheinbar macht auch da mal wieder jeder was er will ...

Das einzige was Du - erst mal im Hinblick auf die CALLTHROUGH-Funktion tun kannst - ist in Deinem Szenario zu sagen:

Code:
exten => #,1,Set(CALLERID=${IF($["${CALLERID}" = ""]?"Anonymous":${CALLERID})})

Warum sipgate hier "unknown" überträgt, wird wohl deren Geheimnis sein, nachdem dort eigentlich "Anonymous" vorgesehen ist ...
 
Zuletzt bearbeitet:
@voipd
Ich denke ich hatte das schon verstanden. Was ich nicht auf der Platte hatte, war das es auch anonyme Calls gibt. Bei meinem Calltrough nehme ich ohne die CallerID gar keinen Call an. Deshalb bin ich noch nicht in die unknown/anonymous Falle getappt. Der Vorschlag von abw1oim ist aber schon die beste Lösung, sich für jeden Provider ein String zu basteln, der Nummer und CallerID anpasst. Das werde ich dann mal in angriff nehmen. Ich habe auch eben erst gesehen, das ihr in einem anderen Thread schon bei dieser Aufgabe gelandet seit. Wichtig ist das man bei einem anonymen Call trotzdem eine Nummer setzt, sonst wird eventuell nichts durchgestellt.

Bye,
Alf aus HH
 
alfhh schrieb:
Wichtig ist das man bei einem anonymen Call trotzdem eine Nummer setzt, sonst wird eventuell nichts durchgestellt.
Achtung Wortklauberei. :p

Wichtig ist, dass man bei UNKNOWN Calls eine Nummer setzt! ANONYME Calls werden akzeptiert. ;)

OK, an dieser Stelle sind wird uns nun alle drei einig. Das hat mich sehr gefreut!

Danke nochmals.

Edit: Hier noch als Ergaenzung: Von voipjet nach dus.net bzw sipgate angerufen, jeweils mit andere CallerID:
Code:
Nach dus.net
<CID> <ankommend FBF>
 +33      0033
0033    000033
 033     00033

Nach sipgate.de
<CID> <ankommend FBF>
 +33      +33
0033    +0033
 033     +033

voipd.
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
247,240
Beiträge
2,264,338
Mitglieder
375,758
Neuestes Mitglied
matzzor