diff --git a/.env.example b/.env.example
index 9e78dda..8323cc9 100644
--- a/.env.example
+++ b/.env.example
@@ -65,6 +65,17 @@ SIP_DOMAIN=sip.plusnet.de
SIP_PASS=
SIP_PROXY=voice01.sip.plusnet.de
+# --- Durchwahl 3: eigenes Endgeraet vor dem Anrufbeantworter klingeln lassen ---
+# Leer lassen = keine Sonderbehandlung, jeder Anruf landet sofort beim
+# Anrufbeantworter. Manche Provider (z.B. Fonial/Plusnet) klingeln bei einer
+# Durchwahl PARALLEL an mehreren registrierten Zielen - ohne Wartezeit
+# gewinnt AgentOne das Rennen immer, weil es sofort abnimmt (answer() ist die
+# erste Aktion im Dialplan). Die DDI kommt bei Plusnet nicht im
+# destination_number an (der ist bei diesem Trunk unbrauchbar), sondern im
+# Header X-ORIGINAL-DDI-URI - siehe telefon/freeswitch/dw3_warten.xml.tpl.
+# Nur Ziffern, kein "+".
+DW3_DDI=
+
# --- Ansage ---
# piper = lokal, natuerlich, Modelle unter ~/piper-voices
# say = lokal, macOS-Bordmittel (Rueckfall wenn Piper fehlt)
diff --git a/README.md b/README.md
index 7d4232c..111c480 100644
--- a/README.md
+++ b/README.md
@@ -236,6 +236,35 @@ Der SIP-Zugang steht in der `.env` (`SIP_USER`, `SIP_DOMAIN`, `SIP_PASS`). Das
Einrichtungsskript trägt das Passwort in die FreeSWITCH-Konfiguration ein und
setzt deren Rechte auf 600 — im Git liegen nur Vorlagen mit Platzhaltern.
+### Durchwahl parallel zu einem Endgerät klingeln lassen
+
+Manche Provider (z. B. Fonial/Plusnet) klingeln bei einer Durchwahl **parallel**
+an allen dafür registrierten Zielen — bei uns also gleichzeitig an AgentOne und
+an einem echten Telefon/Softphone. Ohne Gegenmaßnahme gewinnt AgentOne das
+Rennen aber immer: `answer()` ist im Dialplan die erste Aktion, es gibt keine
+Verzögerung davor. Das Telefon klingelt dann faktisch nie, weil der Anruf schon
+beim Assistenten gelandet ist, bevor am Gerät überhaupt ein Klingelzeichen
+ankommt.
+
+`DW3_DDI` in der `.env` schaltet eine Wartezeit vor `answer()` frei
+(`telefon/freeswitch/dw3_warten.xml.tpl`, deployed als `00_dw3_warten.xml` –
+lädt alphabetisch vor `00_praxis_ab.xml`): erkennt der Dialplan die passende
+Durchwahl, wartet er 20 Sekunden, bevor überhaupt abgenommen wird. Nimmt in der
+Zeit jemand am registrierten Endgerät ab, bricht der Provider den Versuch bei
+AgentOne per SIP-`CANCEL` ab — der Dialplan kommt gar nicht mehr bis zum
+`answer()`. Nimmt niemand ab, läuft er nach den 20 Sekunden normal weiter zu
+Ansage und Aufnahme, identisch zum Standard-Anrufbeantworter.
+
+Wichtig: die Durchwahl selbst kommt bei diesem Trunk nicht im
+`destination_number` an (der zeigt bei Plusnet nur eine interne Trunk-Kennung,
+unabhängig von der gewählten Nummer), sondern im SIP-Header
+`X-ORIGINAL-DDI-URI` der eingehenden Einladung — nur der ist brauchbar, um DW3
+von anderen Anrufen zu unterscheiden. `DW3_DDI` erwartet die volle Rufnummer
+inklusive Durchwahl-Ziffer(n), nur Ziffern, kein `+`.
+
+Leer lassen = keine Sonderbehandlung, jeder Anruf landet sofort beim
+Anrufbeantworter wie bisher.
+
Text ändern: `profile/$PROFIL/ansage.txt` bearbeiten (siehe
[Branchen-Profil](#kategorien--branchen-profil)), `ansage_bauen.sh` erneut
ausführen. Für den Praxisbetrieb muss die Ansage den Notruf 112 nennen und auf
diff --git a/telefon/freeswitch/dw3_warten.xml.tpl b/telefon/freeswitch/dw3_warten.xml.tpl
new file mode 100644
index 0000000..f3b1471
--- /dev/null
+++ b/telefon/freeswitch/dw3_warten.xml.tpl
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/telefon/freeswitch/einrichten.sh b/telefon/freeswitch/einrichten.sh
index 4da1b8c..903db43 100755
--- a/telefon/freeswitch/einrichten.sh
+++ b/telefon/freeswitch/einrichten.sh
@@ -44,6 +44,7 @@ fuelle() { #
-e "s|@@SIP_PASS@@|$SIP_PASS|g" \
-e "s|@@SIP_DOMAIN@@|$SIP_DOMAIN|g" \
-e "s|@@SIP_PROXY@@|${SIP_PROXY:-$SIP_DOMAIN}|g" \
+ -e "s|@@DW3_DDI@@|${DW3_DDI:-}|g" \
-e "s|@@PROJEKT@@|$PROJEKT|g" "$1" > "$2"
}
@@ -55,3 +56,10 @@ echo "Trunk -> $FS_ETC/sip_profiles/external/plusnet.xml (Rechte 600)"
echo "Dialplan -> $FS_ETC/dialplan/public/00_praxis_ab.xml"
echo "Ansage -> $PROJEKT/telefon/ansage.wav"
echo "Eingang -> $PROJEKT/telefon/eingang"
+
+if [ -n "${DW3_DDI:-}" ]; then
+ fuelle "$PROJEKT/telefon/freeswitch/dw3_warten.xml.tpl" "$FS_ETC/dialplan/public/00_dw3_warten.xml"
+ echo "DW3 -> $FS_ETC/dialplan/public/00_dw3_warten.xml (DDI: $DW3_DDI, 20s Wartezeit)"
+else
+ echo "DW3 -> uebersprungen (DW3_DDI leer in .env)"
+fi