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

tgoetten

Neuer User
Mitglied seit
1 Apr 2013
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
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: [email protected]
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
 
Zuletzt bearbeitet:
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
 
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

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:[email protected]>;tag=as3227ce0f
To: <sip:[email protected]>;tag=SDhjqr299-1f68ea9a5c07bd2ba275a961166f5dee.3ab7
Call-ID: [email protected]
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 :

Um bei einem abgehenden Call die Funktion ClipNoScreening zu nutzen, wird die P-Asserted-Identity in der INVITE Message eingefügt. Im P-Asserted Feld muss die zu dem Account gehörige Rufnummer übermittelt werden. Stimmt diese Rufnummer mit dem Account überein, wird der Call weitervermittelt, an sonsten wird die INVITE mit „403 Only valid users are allowed in INVITE PAI“ abgewiesen.

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
 
Code:
[custom-call-forward]
exten => _85X.,1,SIPAddHeader(P-Asserted-Identity: "${CALLERID(num)}" <sip:${CALLERID(num)}@sip.qsc.de>);

CALLERID(num) enthält die Rufnummer des Anrufers, nicht eine Deiner eigenen Rufnummern. Schreibe da mal eine Deiner eigenen Rufnummern fest rein.

Gruß
Wolfram
 
Code:
[custom-call-forward]
exten => _85X.,1,SIPAddHeader(P-Asserted-Identity: "${CALLERID(num)}" <sip:${CALLERID(num)}@sip.qsc.de>);

CALLERID(num) enthält die Rufnummer des Anrufers, nicht eine Deiner eigenen Rufnummern. Schreibe da mal eine Deiner eigenen Rufnummern fest rein.

Gruß
Wolfram

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