.titleBar { margin-bottom: 5px!important; }

E-Mail Status Ansage

Dieses Thema im Forum "Asterisk Skripte" wurde erstellt von wrrdlbrrmpft, 9 Sep. 2004.

  1. wrrdlbrrmpft

    wrrdlbrrmpft Mitglied

    Registriert seit:
    17 Juli 2004
    Beiträge:
    263
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ein kleines Skript, das mir ansagt wie viel neue E-Mails in meinem Postfach eingetroffen sind:

    biff.agi:
    Code:
    #!/bin/sh
    read agi_request
    read agi_language
    read agi_channel
    read agi_type
    read agi_uniqueid
    read agi_callerid
    read agi_dnid
    read agi_rdnis
    read agi_context
    read agi_extension
    read agi_priority
    read agi_enhanced
    read agi_accountcode
    read emptyline
    
    /usr/bin/fetchmail                  ##### evtl. anpassen *****
    MAILBOX=/var/spool/mail/$USER       ##### evtl. anpassen *****
    NUMBER=`grep -c 'From ' $MAILBOX` 
    
    echo 'STREAM FILE vm-youhave ""' > /dev/stdout
    read in
    
    case $NUMBER in
      1)
      echo 'STREAM FILE eine "" ' > /dev/stdout
      read in
      echo 'STREAM FILE vm-INBOX ""' > /dev/stdout
      read in
      echo 'STREAM FILE vm-message ""' > /dev/stdout
      read in
      ;;
      0)
      echo 'STREAM FILE vm-no ""' > /dev/stdout
      read in
      echo 'STREAM FILE vm-INBOX ""' > /dev/stdout
      read in
      echo 'STREAM FILE vm-message ""' > /dev/stdout
      read in
      ;;
      *)
      echo 'SAY NUMBER '"$NUMBER"' ""' > /dev/stdout
      read in
      echo 'STREAM FILE vm-INBOX ""' > /dev/stdout
      read in
      echo 'STREAM FILE vm-messages ""' > /dev/stdout
      read in
      ;;
    esac
    
    echo 'STREAM FILE vm-goodbye ""' > /dev/stdout
    read in
    echo 'HANGUP'
    read in
    
    Vielleicht kanns noch jemand gebrauchen.

    Benno
     
  2. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi
    kannst du noch ein kleines beispiel mit einbauen wie man das script aufruft?
    so wie ich das sehe wird nach dem aufruf aufgelegt? kann man das verbindern indem man einfach die HANGUP zeile rausnimmt?
    Ich kann mir z.b. vorstellen dass ich den Status nur als Menüaufruf abfrage und danach wiedr im menü landen will - oder dass ich den status automatisch vor jedem gespräch bekomme :-D

    Gibt es eigentlich irgendwo ein AGI wo man sich seine Mails vorlesen lassen kann - so wie es viele Netzbetreiber machen (u.a. Vodafone).
    Speed-Engines gibt es ja einige - und sei es "nur" festival.

    Gruß
    thorsten
     
  3. wrrdlbrrmpft

    wrrdlbrrmpft Mitglied

    Registriert seit:
    17 Juli 2004
    Beiträge:
    263
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Der Aufruf ist ganz einfach:
    Code:
    exten => 80,1,Answer
    exten => 80,2,agi,biff.agi
    exten => 80,3,Hangup
    
    Statt der 80 kann man natürlich jede andere Nummer benutzen.

    Mit dem Menü, das stell ich mir so ähnlich wie mit der Voicemail-Funktion vor. So will ich das in absehbarer Zeit laufen haben. Das ist auch kein großes Problem. Ich hab nur im Moment meine Zeit für andere Dinge zu gebrauchen. Das Vorlesen von Absender und Betreff hab ich hier aber schon realisiert mit hadifix und mbrola. Die Installation dieser zwei Pakete ist unter
    http://www.linux-magazin.de/Artikel/ausgabe/2000/05/Sprachsynthese/sprachsynthese.html im Detail beschrieben.
    Zum Vorlesen hab ich mir folgendes Skript gebastelt.

    lies_mail.sh
    Code:
    #!/bin/sh
    MAILBOX=/var/spool/mail/$USER
    PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:$PATH"
    
    echo `egrep 'From:|Subject:' < $MAILBOX \
     | sed s?"From: "?"  Absender: "? - \
     | sed s?"Subject: "?"  Betreff: "? - \
     | sed s?"\."?" Punkt "?g - \
     | sed s?"Punkt de"?"Punkt de  eh  "? - \
     | sed s?"[\<\>]"??g - \
     | sed 's/@/ ät /g' -` |  pipefilt | preproc \
     /usr/local/txt2pho/preproc/Rules.lst /usr/local/txt2pho/preproc/Hadifix.abk \
     | txt2pho -f | mbrola -f1.3 -t1.1 /usr/local/txt2pho/voices/de3 - /tmp/lies_mail.wav
    
    sox /tmp/lies_mail.wav -r 8000 -c 1 /tmp/mail.gsm resample -ql
    
    In extensions.conf:
    Code:
    exten => 81,1,system(nice -n 19 /usr/bin/lies_mail.sh)
    exten => 81,2,Playback(/tmp/mail)
    exten => 81,3,Playback(vm-goodbye)
    exten => 81,4,Hangup
    
    Das ist also bislang noch suboptimal. Aber als Bastelgrundlage ist es vielleicht zu gebrauchen.

    @thorsten.gehrig: Wenn man nur die Hangup-Zeile rausnimmt, wird das Skript nach dem Ansagen trotzdem beendet. Ich werds wie gesagt bei Gelegenheit ganz analog zum Voicemail-System aufbauen, wenn mir niemand zuvor kommt.
    Eine Ansage vor jedem Gespräch ist auch jetzt kein Problem. Du kannst im Dialplan das Skript an so ziemlich jeder beliebigen Stelle aufrufen. Das bleibt dir überlassen.

    Benno

    EDIT: Hat jemand eine Idee, ob und wie man sox in diesem Zusammenhang umgehen kann?