Meine Werkzeuge

Anrufbeantworter

Aus Chaostreff Gießen

Wechseln zu: Navigation, Suche

Dieser Script hilft dabei, lästige Werbeanrufer und Umfragen zum Wahnsinn zu treiben.

Vorarbeit

Erstellen der Audiofiles

  • Mit einem belieben Audioeditor (bevorzugt z.B. Audacity) Samples aufnehmen. Diese können auch an einem Stück aufgezeichnet werden.
  • Die Lautstärke normalisieren, also auf -3dB.
  • Ausgabe in Datei, z.B. fetzen.wav
  • sox hilft, die einzelnen Samples zu trennen:
sox -V3 fetzen.wav output.wav silence 1 0.2 0.1% 1 0.3 0.1% : newfile : restart
  • Dann die einzelnen Samples durchhören und ggf. die Sox-Commandline wiederholen.
  • Nun die WAV files für Asterisk konvertieren:
$ cat >  conv.sh  
#!/bin/sh
b=`basename $1 .wav`
sox $b.wav -t raw -r 8000  -c 1 $b.sln
$ find . -name "*.wav" -exec sh conv.sh {} ;
  • Die erstellten .sln Dateien dann auf den Asterisk-Server unter
    /var/lib/asterisk/sounds/
    kopieren.
  • Anschließend folgende schöne Zeilen (siehe unten extensions.conf) in die
    /etc/asterisk/extensions.conf
    eintragen.
  • Nun noch die Anrufer per dialplan dort in den Kontext "stupid" schicken und geniessen!

Config-Files

extensions.conf

[stupid]
; exten => s, 1, Monitor(wav,myfilename-${EPOCH})
exten => s, 1, Nop(Wir wuerden niemals aufzeichnen)
same => n, Gosub(phrases,hallo,1)
same => n, Goto(wait,s,1)

[wait]
exten => s,1,BackgroundDetect(silence)
;BackgroundDetect is similar to Background. It plays back a given filename, waiting for interruption from a given digit (the digit must
same => n,Goto(wait,s,1)

exten => talk,1,WaitForSilence(${RAND(250,600)})
;BackgroundDetect(filename[|silence[|min[|max]]])
same => n,Goto(phrases,s,1)
[phrases]
; seq 24 | awk '{printf("exten => sample%d, 1, Playback(output%03d)\nsame => n, Return\n",$1,$1)}';

exten => s, 1, Gosub(phrases,sample${RAND(1,5)},1)
same => n, Goto(wait,s,1)

exten => sample1, 1, Playback(output001)
same => n, Return
exten => sample2, 1, Playback(output002)
same => n, Return
exten => sample3, 1, Playback(output003)
same => n, Return
exten => sample4, 1, Playback(output004)
same => n, Return
exten => sample5, 1, Playback(output005)
same => n, Return