Toplink DDI Trunk und eingehende Durchwahl

Mysterious

Neuer User
Mitglied seit
3 Nov 2005
Beiträge
158
Punkte für Reaktionen
0
Punkte
16
Hallo,

wir haben derzeit Probleme einen Toplink SIp Trunk an Gemeinschaft anzubinden. Toplink schickt die gewählte Rufnummer bei eingehenden Anrufen nicht im SIp-Invite mit sondern nur im To-Header weshalb die gemeinschaft pbx das nicht verarbeiten kann. Ich habe bereits 2 passende Links zu dem Thema gefunden aber bin mir nicht ganz schlüssig welches der bessere Ansatz ist. Villeicht könnt ihr mir hierbei helfen.

http://www.kempgen.net/voip/sip-request-uri-vs-to-header-routing.html
https://groups.google.com/group/gemeinschaft-dev/browse_thread/thread/e213fbdcac537c33?hl=de

Habe mal den ersten Ansatz probiert aber irgendwas klappt noch nicht ganz beim beschneiden der SIP-Header Infos aber ich find den Fehler über den er beim Cut Befehl meckert irgendwie nicht.

Die derzeitige Erweiterung in e-gategroups-in.ael.php
Code:
    # hack for routing based on To header URI {
    echo 'if ("${CHANNEL(channeltype)}" = "SIP") {' ,"\n";
    echo '    Set(did_full=${SIP_HEADER(To)});' ,"\n";
    //                    "Bob" <sip:012377777555@host>
    echo '    Set(did_full=${CUT(did_full,@,1)});' ,"\n";
    //                    "Bob" <sip:012377777555
    echo '    if ("${CUT(did_full,<,2)}" != "") {' ,"\n";
    echo '        Set(did_full=${CUT(did_full,<,2)});' ,"\n";
    echo '    }' ,"\n";
    //                           sip:012377777555
    echo '    if ("${CUT(did_full,:,2)}" != "") {' ,"\n";
    echo '        Set(did_full=${CUT(did_full,:,2)});' ,"\n";
    echo '    }' ,"\n";
    //                               012377777555
    echo '    Verbose(1,### DNID by To header: ${did_full});' ,"\n";
    echo '}' ,"\n";
    # hack for routing based on To header URI }

Ein danach ausgeführter eingehender Call bzw die Errors
Code:
    -- Executing [D123451234@from-gg-gw-group-toplink:1] GotoIf("SIP/D123451234-09245c70", "1?2:29") in new stack
    -- Goto (from-gg-gw-group-toplink,D123451234,2)
    -- Executing [D123451234@from-gg-gw-group-toplink:2] Set("SIP/D123451234-09245c70", "__is_from_gateway=1") in new stack
    -- Executing [D123451234@from-gg-gw-group-toplink:3] GotoIf("SIP/D123451234-09245c70", "0?4:5") in new stack
    -- Goto (from-gg-gw-group-toplink,D123451234,5)
    -- Executing [D123451234@from-gg-gw-group-toplink:5] NoOp("SIP/D123451234-09245c70", "Finish if-if-from-gg-gw-group-toplink-1024-1025") in new stack
    -- Executing [D123451234@from-gg-gw-group-toplink:6] Set("SIP/D123451234-09245c70", "did_full=D123451234") in new stack
    -- Executing [D123451234@from-gg-gw-group-toplink:7] GotoIf("SIP/D123451234-09245c70", "1?8:17") in new stack
    -- Goto (from-gg-gw-group-toplink,D123451234,8)
    -- Executing [D123451234@from-gg-gw-group-toplink:8] Set("SIP/D123451234-09245c70", "did_full=<sip:[email protected]>") in new stack
    -- Executing [D123451234@from-gg-gw-group-toplink:9] Set("SIP/D123451234-09245c70", "did_full=<sip:+497613456734") in new stack
[Apr 12 11:43:46] ERROR[2391]: func_cut.c:263 acf_cut_exec: Syntax: CUT(<varname>,<char-delim>,<range-spec>) - missing argument!
    -- Executing [D123451234@from-gg-gw-group-toplink:10] GotoIf("SIP/D123451234-09245c70", "0?11:12") in new stack
    -- Goto (from-gg-gw-group-toplink,D123451234,12)
    -- Executing [D123451234@from-gg-gw-group-toplink:12] NoOp("SIP/D123451234-09245c70", "Finish if-if-if-from-gg-gw-group-toplink-1024-1026-1027") in new stack
[Apr 12 11:43:46] ERROR[2391]: func_cut.c:263 acf_cut_exec: Syntax: CUT(<varname>,<char-delim>,<range-spec>) - missing argument!
    -- Executing [D123451234@from-gg-gw-group-toplink:13] GotoIf("SIP/D123451234-09245c70", "0?14:15") in new stack
    -- Goto (from-gg-gw-group-toplink,D123451234,15)
    -- Executing [D123451234@from-gg-gw-group-toplink:15] NoOp("SIP/D123451234-09245c70", "Finish if-if-if-from-gg-gw-group-toplink-1024-1026-1028") in new stack
    -- Executing [D123451234@from-gg-gw-group-toplink:16] Verbose("SIP/D123451234-09245c70", "1|### -GS- DNID by To header: <sip:+497613456734") in new stack
### -GS- DNID by To header: <sip:+497613456734
    -- Executing [D123451234@from-gg-gw-group-toplink:17] NoOp("SIP/D123451234-09245c70", "Finish if-if-from-gg-gw-group-toplink-1024-1026") in new stack
    -- Executing [D123451234@from-gg-gw-group-toplink:18] AGI("SIP/D123451234-09245c70", "/usr/share/gemeinschaft/dialplan-scripts/in-route.agi|2|<sip:+497613456734|+491512345234567") in new stack
    -- Launched AGI Script /usr/share/gemeinschaft/dialplan-scripts/in-route.agi
  /usr/share/gemeinschaft/dialplan-scripts/in-route.agi|2|<sip:+497613456734|+491512345234567: ### -GS- Matching route for 98 is id 2
    -- AGI Script /usr/share/gemeinschaft/dialplan-scripts/in-route.agi completed, returning 0
    -- Executing [D123451234@from-gg-gw-group-toplink:19] Set("SIP/D123451234-09245c70", "CALLERID(dnid)=98") in new stack
    -- Executing [D123451234@from-gg-gw-group-toplink:20] Verbose("SIP/D123451234-09245c70", "1|### -GS- Inbound call from gw group "gw-group-toplink". dnid: <sip:+497613456734 => ext: 98 => 99") in new stack
### -GS- Inbound call from gw group "gw-group-toplink". dnid: <sip:+497613456734 => ext: 98 => 99
    -- Executing [D123451234@from-gg-gw-group-toplink:21] Verbose("SIP/D123451234-09245c70", "1|### from cid orig: +491512345234567 => from cid: +491512345234567") in new stack
### from cid orig: +491512345234567 => from cid: +491512345234567
    -- Executing [D123451234@from-gg-gw-group-toplink:22] Set("SIP/D123451234-09245c70", "CALLERID(num)=+491512345234567") in new stack
    -- Executing [D123451234@from-gg-gw-group-toplink:23] GotoIf("SIP/D123451234-09245c70", "1?24:26") in new stack
    -- Goto (from-gg-gw-group-toplink,D123451234,24)
    -- Executing [D123451234@from-gg-gw-group-toplink:24] Goto("SIP/D123451234-09245c70", "from-gateways|99|1") in new stack
    -- Goto (from-gateways,99,1)

Generell ist aber die Frage ob der Ansatz aus dem 2ten Link nicht besser ist und man diese Eingriffe aus ein einzelnes Gateway eingrenzt weil es ja sonst beim vorhandensein mehrere Provider diese Funktion bei allen greift.
Ich wäre für Lösungsvorschläge sehr dankbar. Villeicht hat jemand das bereits erfolgreich umgesetzt?

MFG

Mysterious
 
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.