.titleBar { margin-bottom: 5px!important; }

[Gelöst] QSC IPfonie Extende Anrufweiterleitung DDI :Only Extended users are allowed in INVITE

Dieses Thema im Forum "QSC VoIP" wurde erstellt von tgoetten, 8 Okt. 2013.

  1. tgoetten

    tgoetten Neuer User

    Registriert seit:
    1 Apr. 2013
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 tgoetten, 8 Okt. 2013
    Zuletzt bearbeitet: 3 Nov. 2013
    Hallo,

    für das QSC Produkt "IPhonie Extended" verwenden wir eine PIAF (Pbx In A Flash) Installation (PIAF 2.0.6.4, FreePBX 2.11.0.11, Asterisk 11.5.0, CentOS 6.4). Die Einrichtung erfolgte über FreePBX nach folgender Anleitung : http://q.deltaquadrant.org/index.php/Asterisk_/_TrixBox_-_Telefonserver#QSC_IP-EXTENDED_TRUNK

    Eingehende & Ausgehende Anrufe funktionieren, soweit alles gut. Bei dem Versuch eine Anrufweiterleitung einzurichten (*72[*Nummer auf die die Weiterleitung erfolgen soll*]) scheitert diese aber mit folgendem Hinweis :

    Code:
    <--- SIP read from UDP:213.148.136.178:5060 --->
    SIP/2.0 403 Only Extended users are allowed in INVITE
    Via: SIP/2.0/UDP 10.2.7.8:5060;received=5.9.219.202;branch=z9hG4bK29e96568;rport=5060
    From: "[*Anrufernummer*]" <sip:[*Anrufernummer*]@sip.qsc.de>;tag=as64b77609
    To: <sip:[*Nummer auf die die Weiterleitung erfolgen soll*]@sip.qsc.de>;tag=SDfv97a99-1f68ea9a5c07bd2ba275a961166f5dee.9709
    Call-ID: 3856e661264dd31840f0cc76712e68dd@sip.qsc.de
    CSeq: 103 INVITE
    P-QSC-Error: Only Extended users are allowed in INVITE
    Server: QSC SiP server node 03
    Content-Length: 0
    <------------->
    Entscheidend scheint der Hinweis :
    Code:
    SIP/2.0 403 Only Extended users are allowed in INVITE.
    Zu diesem Thema stellt QSC auch eine PDF "Anleitung" bereit (http://www.qsc.de/fileadmin/downloads/qscvoice/ipfonieextended/ipfonieextended.spezifikationddi.de_2.pdf), mit deren Hilfe ich folgendes in /etc/asterisk/extensions_custom.conf hinzugefügt habe :


    Code:
    [from-internal-custom]
    include => custom-call-forward
    
    ...
    
    [custom-call-forward]
    exten => _85X.,n,SipAddHeader(X-ORIGINAL-DDI-URI: <sip:49${CALLERID(num):1}@sip.qsc.de>\;user=phone>)
    exten => _85X.,n,Dial(SIP/${EXTEN:2}@qsc-out_0,,tg)
    exten => _85X.,n,Hangup()
    qsc-out_0 in /etc/asterisk/sip_additional.conf sieht so aus :

    Code:
    [qsc-out_0]
    disallow=all
    allow=ulaw
    allow=alaw
    auth=[*Passwort*]
    canredirect=no
    context=custom-get-did-from-sip
    dtmfmode=rfc2833
    fromdomain=sip.qsc.de
    host=sip.qsc.de
    insecure=port,invite
    nat=yes
    secret=[*Passwort*]
    type=friend
    canreinvite=yes
    username=[*QSC-Rufnummer*]
    t38pt_udptl=yes,fec
    t38pt_rtp=no
    t38pt_tcp=no

    Richte ich dann eine Anrufweiterleitung ein mit dem Prefix 85 (*7285[*Nummer auf die die Weiterleitung erfolgen soll*]) scheitert diese ebenfalls.

    Hat jemand einen Hinweis, was ich falsch mache?

    Vielen Dank & Gruss Thomas
     
  2. wojo

    wojo Neuer User

    Registriert seit:
    18 Sep. 2008
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    wenn ich Deine Frage richtig verstanden habe könnte Dir die Kopfzeile P-Asserted-Identity weiterhelfen:

    Code:
    SIPAddHeader(P-Asserted-Identity: "${ACCOUNT}" <sip:${ACCOUNT}@sip.qsc.de>);
    ACCOUNT ist eine Deiner eigenen Rufnummern, im Idealfall die Nummer, die ursrpünglich angerufen wurde, im Format 0123456789 .

    Gruß
    Wolfram
     
  3. tgoetten

    tgoetten Neuer User

    Registriert seit:
    1 Apr. 2013
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Wolfram,

    vielen Dank für die prompte Antwort. Ich habe Deinen Vorschlag wie folgt umgesetzt :

    Code:
    [custom-call-forward]
    exten => _85X.,1,SIPAddHeader(P-Asserted-Identity: "${CALLERID(num)}" <sip:${CALLERID(num)}@sip.qsc.de>);
    exten => _85X.,n,Dial(SIP/${EXTEN:2}@qsc-out_0,,tg)
    exten => _85X.,n,Hangup()
    
    Jetzt bekomme ich eine andere Fehlermeldung :

    Code:
    <--- SIP read from UDP:213.148.136.178:5060 --->
    SIP/2.0 403 Only Extended users are allowed in INVITE PAI
    Via: SIP/2.0/UDP 10.2.7.8:5060;received=5.9.219.202;branch=z9hG4bK420bb155;rport=5060
    From: "01632977170" <sip:01632977170@sip.qsc.de>;tag=as3227ce0f
    To: <sip:01725860750@sip.qsc.de>;tag=SDhjqr299-1f68ea9a5c07bd2ba275a961166f5dee.3ab7
    Call-ID: 4e103a560c81077e1f76a3e237af8c0f@sip.qsc.de
    CSeq: 103 INVITE
    P-QSC-Error: Only Extended users are allowed in INVITE PAI
    Server: QSC SiP server node 03
    Content-Length: 0
    
    <------------->
    
    Code:
    SIP/2.0 403 Only Extended users are allowed in [B]INVITE PAI[/B]
    In dem QSC PDF findet sich im Kapitel 3.6 ClipNoScreening dann ein Hinweis zu genau dieser Fehlermeldung :

    Bringt leider aber auch nix. Habe da mal versuchsweise hard-coded verschiedene Rufnummern reingeschrieben immer mit dem gleichen Resultat :-(

    Hast Du noch eine Idee?

    Gruss Thomas
     
  4. wojo

    wojo Neuer User

    Registriert seit:
    18 Sep. 2008
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
     
  5. tgoetten

    tgoetten Neuer User

    Registriert seit:
    1 Apr. 2013
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ! SUPER ! jetzt hat es geklappt. Ich hatte das, wie obene geschrieben, zwar bereits versucht mit hart-kodierterter Festnetzrufnummer, aber hatte dabei nicht beachtet, dass der out-context zum rufnummernblock passen muss :)

    Sofern es einfach zu bewerkstelligen ist würde ich gerne die eigene Rufnummer bzw. die die ursprünglich angerufen wurde auslesen und dann den out-context entsprechend setzen.

    Aktulle habe ich drei Blöcke, für die jeweils separate trunks eingerichtet wurden :

    Code:
    022...040, 
    [qsc-in_0]
    [qsc-out_0]
    
    022...041,
    [qsc-in_1]
    [qsc-out_1]
    
    022...042,
    [qsc-in_2]
    [qsc-out_2]
    Toll wäre es wenn er in Abhängigkeit vom eingehenden Block (qsc-in_X) dann auch den ausgehenden bestimmen würde

    Code:
    [custom-call-forward]
    exten => _85X.,1,SIPAddHeader(P-Asserted-Identity: "[B][*qsc-in_X*][/B]" <sip:[B][*qsc-in_X*][/B]@sip.qsc.de>);
    exten => _85X.,n,Dial(SIP/${EXTEN:2}@[B][*qsc-out_X*][/B],,tg)
    exten => _85X.,n,Hangup()
    
    Hast Du hier auch noch einen Tip?

    Vielen vielen Dank!!!!
     
  6. wojo

    wojo Neuer User

    Registriert seit:
    18 Sep. 2008
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    ich würde in den [qsc-in_?]-Kontexten eine entsprechende Variable setzen mit der ursprünglich angerufenen Nummer - den X-ORIGINAL-DDI-URI oder den P-Called-Party-ID
    musst Du ja sowieso auswerten um an die angerufene Durchwahl zu gelangen.
    Diese Variable würde ich dann im Umleitungskontext auswerten um in einer weiteren Variable den richtigen qsc-out-?-Abschnitt speichern.

    Die Variable mit dem richtigen qsc-out-?-Abschnitt würde ich dann anstatt des fest kodierten Wertes in das Dial-Kommando einbauen und die Rufnummer aus X-ORIGINAL-DDI-URI/P-Called-Party-ID im PAI-Header ablegen.

    Die Sicherheitstipps zum Programmieren im Dialplan hast Du sicher schon gelesen. Wenn man die nicht beachtet kann es leider teuer werden.

    Gruß
    Wolfram
     
  7. tgoetten

    tgoetten Neuer User

    Registriert seit:
    1 Apr. 2013
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    So, bevor ich den Thread als gelöst schließe wollte ich hier noch kurze meine ''Lösung'' vorstellen :

    In der /etc/asterisk/extensions_custom.conf habe ich nun folgenden Eintrag hinzugefügt :

    Code:
    [custom-call-forward]
    ; FROM_DID enthaelt die Nummer, welche angerufen wurde, mittels :0:-1 wird die letzte Stelle entfernt; :-1 wiederum gibt nur die letzte Ziffer aus
    ; CALLERID(num) enthaelt die Nummer des Anrufers; :1 zum entfernen des Prefix
    exten => _85X.,1,NoOp(sip header modifcation :: P-Asserted-Identity :: )
    exten => _85X.,n,Set(TEMP_DID=${FROM_DID:0:-1})
    exten => _85X.,n,Set(CALLERID(all)=${CALLERID(num):1})
    exten => _85X.,n,SIPAddHeader(P-Asserted-Identity: "${FROM_DID:0:-1}" <sip:${FROM_DID:0:-1}@sip.qsc.de>);
    exten => _85X.,n,Dial(SIP/${EXTEN:2}@qsc-out_${TEMP_DID:-1},,tg)
    exten => _85X.,n,Hangup()
    Eine Rufumleitung unter Angabe des Prefix 85 liefert das gewünschte Ergebnis. Der Anruf wird weitergeleitet und die Nummer des Anrufers erscheint im Display.

    Vielen Dank!!