Crmgo Blog

Asterisk, Rückruf

Asterisk, Rückruf

Wählt eine externe Nummer -> Die PBX ruft zurück -> wählt die interne Nummer des Teilnehmers -> kommuniziert über den ausgehenden Trunk zur PBX. Was wir benötigen: Ein paar Zeilen Dialplan, die das eingehende und das ausgehende Verbindung behandeln. Ein Skript zur Generierung der .call-Datei.

Asterisk, Rückruf

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.

Hinweis: Dieser Beitrag kann KI-unterstützt erstellt und anschließend redaktionell geprüft worden sein. Verantwortlich: Dmytro Lomaka, Kaltenkirchen.