Leider ist es nach wie vor so, dass viele Callcenter versuchen mit unterdrückter Rufnummer ihren Terror-Auftrag zu erfüllen. Da das einfach nur nervt liegt nichts näher als Imperium zu spielen und "zurück-zu-nerven". Asterisk bietet hierzu die ein oder andere lustige Möglichkeit.
Was soll geschehen? Kommt ein Anruf mit unterdrückter bzw. nicht übermittelter Rufnummer an, soll dem Anrufer nach Möglichkeit der Firmenname und der Sinn seines Anrufes entlockt und diese Informationen aufgezeichnet werden. Ist er dann diese Info losgeworden landet er im PrivacyManager von Asterisk, der ihm mitteilt dass Anrufe ohne Rufnummer nicht erwünscht sind. Gibt er wider Erwarten doch noch seine Rufnummer preis wollen wir mal nicht so sein und lassen das Telefon klingeln.
Vorbereitung Benötigt werden fünf Soundfiles, die man am Einfachsten mit der "Record()"- Funktion von Asterisk aufzeichnet. Der Inhalt könnte in etwa folgender Text sein: <uct-hallo> Hallo? <uct-hallo-wer-ist-da> Hallo? Wer ist da? <uct-ich-verstehe-schlecht> Ich kann Sie ganz schlecht verstehen! Wer ist da? <uct-um-was-geht-es> Und um was geht es? <uct-ich-verbinde> Ok- kleinen Moment bitte ich verbinde Sie weiter
Die Dateien gehören wie die anderen Asterisk-Soundfiles nach /var/lib/asterisk/sounds.
Nun fehlt nur noch die Ergänzung in der extensions.conf und ein Neuladen der Asterisk-Konfiguration.
Im Auszug der extensions.conf verwende ich als Beispiel die Rufnummer "666666". In den Prioritäten 7,9,11 und 13 warten wir auf eine Sprechpause des Anrufers. Hier konkret auf eine 1200ms lange Pause. Wem das zu kurz oder zu lang ist der kann hier den Wert ändern.
Ablauf Der Einfachheit halber missbrauche ich die Prioritäten als Zeilennummern. Zeile 1: 10 Sekunden klingeln lassen und mit dem Abheben warten Zeile 2: Wenn die Rufnummer übermittelt wird zum Wählvorgang springen Zeile 3: Zusammensetzen eines Dateinamens für unsere Aufzeichnung. Dieser besteht aus der angerufenen Extension (hier 666666), sowie dem Datum und der Uhrzeit des Anrufs. Zeile 4: Aktivieren der Aufzeichnung im Format wav Zeile 5: Anruf annehmen Zeile 6-14: Infos sammeln :-) Zeile 15: Aufzeichnung beenden Zeile 16: Dem Anrufer mitteilen dass wir keine Anrufe ohne Rufnummer wollen und ihm die Möglichkeit geben eine Rufnummer einzugeben Zeile 17: Protokollmeldung für den PrivacyManager Zeile 18: Ab in den Abuse-Abschnitt Zeile 19: Das SIP-Telefon mit der Nummer 101 für 30 Sekunden klingeln lassen Zeile 20: Wenn das SIP-Telefon nicht abgehoben wurde weiter zum Anrufbeantworter
extensions.conf
[default]
exten => 666666,1,Wait(10) exten => 666666,2,GotoIf($["${CALLERID(num)}" != ""]?19) exten => 666666,3,Set(CALLFILENAME=${EXTEN}-${STRFTIME(,,NaVM)}) exten => 666666,4,Monitor(wav:${CALLFILENAME},m) exten => 666666,5,Answer() exten => 666666,6,Playback(uct-hallo) exten => 666666,7,WaitForSilence(1200) exten => 666666,8,Playback(uct-hallo-wer-ist-da) exten => 666666,9,WaitForSilence(1200) exten => 666666,10,Playback(uct-ich-verstehe-schlecht) exten => 666666,11,WaitForSilence(1200) exten => 666666,12,Playback(uct-um-was-geht-es) exten => 666666,13,WaitForSilence(1200) exten => 666666,14,Playback(uct-ich-verbinde) exten => 666666,15,StopMonitor exten => 666666,16,PrivacyManager() exten => 666666,17,NoOp(privacymgrstatus ist .:${PRIVACYMGRSTATUS}:.) exten => 666666,18,GotoIf($["${PRIVACYMGRSTATUS}" = "FAILED"]?abuse1,1'); exten => 666666,19,Dial(SIP/101|30|n) exten => 666666,20,Voicemail(101)
Im Debug-Log von Asterisk sieht das dann in etwa so aus:
-- Accepting voice call from '' to '666666' on channel 0/1, span 1
-- Executing Set("Zap/1-1", "CALLFILENAME=666666-Sun Oct 11 13:22:55 2009")
-- Executing Monitor("Zap/1-1", "wav:666666-Sun Oct 11 13:22:55 2009,m")
-- Executing Answer("Zap/1-1", "")
-- Executing Playback("Zap/1-1", "uct-hallo")
-- <Zap/1-1> Playing 'uct-hallo' (language 'de')
-- Executing WaitForSilence("Zap/1-1", "1200")
-- Waiting 1 time(s) for 1200 ms silence with 0 timeout
-- Exiting with 1200ms silence >= 1200ms required
-- Executing Playback("Zap/1-1", "uct-hallo-wer-ist-da")
-- <Zap/1-1> Playing 'uct-hallo-wer-ist-da' (language 'de')
-- Executing WaitForSilence("Zap/1-1", "1200")
-- Waiting 1 time(s) for 1200 ms silence with 0 timeout
-- Exiting with 1200ms silence >= 1200ms required
-- Executing Playback("Zap/1-1", "uct-ich-verstehe-schlecht")
-- <Zap/1-1> Playing 'uct-ich-verstehe-schlecht' (language 'de')
-- Executing WaitForSilence("Zap/1-1", "1200")
-- Waiting 1 time(s) for 1200 ms silence with 0 timeout
-- Exiting with 1200ms silence >= 1200ms required
-- Executing Playback("Zap/1-1", "uct-um-was-geht-es")
-- <Zap/1-1> Playing 'uct-um-was-geht-es' (language 'de')
-- Executing WaitForSilence("Zap/1-1", "1200")
-- Waiting 1 time(s) for 1200 ms silence with 0 timeout
-- Exiting with 1200ms silence >= 1200ms required
-- Executing Playback("Zap/1-1", "uct-ich-verbinde")
-- <Zap/1-1> Playing 'uct-ich-verbinde' (language 'de')
-- Executing StopMonitor("Zap/1-1", "")
-- Executing PrivacyManager("Zap/1-1", "")
-- <Zap/1-1> Playing 'privacy-unident' (language 'de')
-- <Zap/1-1> Playing 'privacy-prompt' (language 'de')
-- <Zap/1-1> Playing 'privacy-thankyou' (language 'de')
-- Changed Caller*ID to 01515115151, callerpres to 35
-- Executing NoOp("Zap/1-1", "privacymgrstatus ist .:SUCCESS:.")
-- Executing Dial("Zap/1-1", "SIP/sip101|30|n")
-- Called sip101
-- SIP/sip101-081e7388 is ringing
-- Channel 0/1, span 1 got hangup request, cause 16
== Spawn extension (default, 666666, 15) exited non-zero on 'Zap/1-1'
-- Hungup 'Zap/1-1'
Die aufgenommenen Wave-Files liegen dann zur weiteren Verwendung unter /var/spool/asterisk/monitor. |