/var/spool/asterisk/outgoing/
verschoben und dort dann von Asterisk abgearbeitet.mv
(move) ist im
Dateisystem ein atomarer Vorgang und deshalb für Call Files ideal
geeignet. Bei einem cp
(copy)
wird dagegen die Datei Zeile für Zeile kopiert. Es kann also
vorkommen, dass ein halbfertig kopiertes Call File von Asterisk
bereits abgearbeitet wird.[call-file-test] exten => 10,1,Answer() exten => 10,n,Wait(1) exten => 10,n,Playback(hello-world) exten => 10,n,Wait(1) exten => 10,n,Hangup()
/tmp/
die
Datei ein-test.call
mit folgendem
Inhalt:Channel: SIP/2000 MaxRetries: 2 RetryTime: 60 WaitTime: 30 Context: call-file-test Extension: 10
mv
/tmp/ein-test.call /var/spool/asterisk/outgoing/
:root@molokai:~> mv /tmp/ein-test.call /var/spool/asterisk/outgoing/
/var/spool/asterisk/outgoing/
ein Call File
befindet, und arbeitet dieses ab, sobald es da ist.SIP/2000
. Wenn das Telefon besetzt sein oder den Anruf
nicht annehmen sollte, dann versucht Asterisk das Gleiche noch zweimal
(siehe MaxRetries
).[call-file-test]
die Abarbeitung der Extension 10
. Es wird also der
Sprachbaustein hello-world
abgespielt.Channel: <channel>
Dial()
-Befehl (siehe Abschnitt C.38, „Dial()
“).Callerid: <callerid>
WaitTime: <number>
MaxRetries: <number>
RetryTime: <number>
Account: <account>
Context: <context>
Extension: <exten>
Priority: <priority>
Setvar: <var=value>
Setvar:
können beliebig
viele Channel-Variablen definiert werden.Archive: <yes|no>
Archive: yes
gesetzt, werden die Call Files aber stattdessen ins Verzeichnis
/var/spool/asterisk/outgoing_done/
verschoben. Dabei wird Asterisk noch eine Zeile zum Call File
hinzufügen. Diese beschreibt das Ergebnis des Call Files und
sieht so aus:Status: <Expired|Completed|Failed>
[hotel-intern] exten => _*77*XXXXXXXXXXXX,1,Answer() exten => _*77*XXXXXXXXXXXX,n,Set(Jahr=${EXTEN:4:4}) exten => _*77*XXXXXXXXXXXX,n,Set(Monat=${EXTEN:8:2}) exten => _*77*XXXXXXXXXXXX,n,Set(Tag=${EXTEN:10:2}) exten => _*77*XXXXXXXXXXXX,n,Set(Stunden=${EXTEN:12:2}) exten => _*77*XXXXXXXXXXXX,n,Set(Minuten=${EXTEN:14:2}) exten => _*77*XXXXXXXXXXXX,n,NoOp(Weckruf soll fuer die Rufnummer ${CALLERID(num)} soll um ${Stunden}:${Minuten} Uhr am ${Tag}.${Monat}.${Jahr} erfolgen.) exten => _*77*XXXXXXXXXXXX,n,System(echo -e "Channel: SIP/${CALLERID(num)}\\nContext: Weckruf\\nExtension: 23" > /tmp/${UNIQUEID}.call) exten => _*77*XXXXXXXXXXXX,n,System(touch -t ${Jahr}${Monat}${Tag}${Stunden}${Minuten} /tmp/${UNIQUEID}.call) exten => _*77*XXXXXXXXXXXX,n,System(mv /tmp/${UNIQUEID}.call /var/spool/asterisk/outgoing/) exten => _*77*XXXXXXXXXXXX,n,Playback(rqsted-wakeup-for) exten => _*77*XXXXXXXXXXXX,n,SayNumber(${Stunden}) exten => _*77*XXXXXXXXXXXX,n,SayNumber(${Minuten}) exten => _*77*XXXXXXXXXXXX,n,Playback(digits/oclock) exten => _*77*XXXXXXXXXXXX,n,Hangup() [Weckruf] exten => 23,1,Answer() exten => 23,n,Wait(1) exten => 23,n,Playback(this-is-yr-wakeup-call) exten => 23,n,Wait(1) exten => 23,n,Hangup()