Das System wählt eine externe Nummer -> die Telefonanlage ruft zurück -> wir wählen die interne Nummer des Teilnehmers -> wir führen das Gespräch über den ausgehenden Kanal des Trunks zur Telefonanlage.
Was wir benötigen:
Ein paar Zeilen im Dialplan, die das eingehende und das ausgehende Gespräch verarbeiten.
Ein Skript zur Generierung der .call-Datei.
Und so. Als ersten Schritt müssen wir… das Gespräch beenden:
[callback-context]
exten => _7XXXXX.,1,Hangup
Die gesamte weitere Verarbeitung (welches Wort ist hochgesteckt – Verarbeitung… Also… Die Verarbeitung) findet in der Extension „h“ desselben Kontexts statt, da wir die Hörer bereits aufgelegt haben.
Wir starten das Skript zur Erstellung der .call-Datei.
exten => h,1,System(/usr/local/scripts/callback.sh ${CALLERID(num)})
Das Skript selbst sieht wie folgt aus:
#!/bin/bash
callee=$1
Channel="SIP/"$callee
MaxRetries=10
RetryTime=10
WaitTime=20
Context="call-to"
Extension="callback"
Priority=1
DATA=`date`
echo "Channel: $Channel
CallerId: EXTERNAL_PBX_NUM <EXTERNAL_PBX_NUM>
MaxRetries: $MaxRetries
RetryTime: $RetryTime
WaitTime: $WaitTime
Context: $Context
Extension: $Extension
Priority: $Priority" > /var/spool/asterisk/outgoing/$callee.call
Das Skript ruft den Anrufer der Telefonanlage zurück und leitet den Kanal nach dem Abheben des Hörers in den Kontext call-to zur Extension callback zur Verarbeitung weiter:
In diesem Kontext spielen wir eine Begrüßungsdatei und eine Aufforderung zur Eingabe der Nummer ab (für diejenigen, die sich mit Capipasta beschäftigen – der Dateiname ist benutzerdefiniert. Standardmäßig existiert diese Datei in Asterisk nicht. Speichern Sie Ihre eigene oder verwenden Sie die Standarddatei). Wir warten auf die Eingabe der Nummer, die gewählt werden soll, welche maximal 4 Ziffern lang sein darf. Wir warten 5 Sekunden und erlauben nur 1 Eingabeversuch.
Nach der Eingabe der Nummer wählen wir diese und verbinden die beiden Kanäle mit der Dial-Funktion.
[call-to] exten => callback,1,Read(NUM,input-number,4,n,1,5) exten => callback,n,DIAL(PJSIP/${NUM})
Auf diese Weise wählen wir eine interne Nummer nicht auf eigene Kosten, sondern auf Kosten der Telefonanlage.
