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

Script für persönliche V-Box ansage?

Dieses Thema im Forum "Asterisk Skripte" wurde erstellt von lo4dro, 16 Feb. 2005.

  1. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Guten Morgen.
    Ich schicke einige Freunde durch die Auswertung der gesendete msn ein persönliche V-Box Nachricht,. bevor sie auf die V-Box sprechen können.
    Das hab ich bis jetzt so gemacht.

    Code:
    [vboxpers]
     exten => _X.,1,GotoIf($[${CALLERIDNUM} = 62....]?2:5)
     exten => _X.,2,Playback(/root/pansagen/1)                  
     exten => _X.,3,Voicemail(s1234)
     exten => _X.,4,Goto(amt-in,${EXTEN},8)
    
     exten => _X.,5,GotoIf($[${CALLERIDNUM} = 78...]?6:9)
     exten => _X.,6,Playback(/root/pansagen/2)                
     exten => _X.,7,Voicemail(s1234)
     exten => _X.,8,Goto(amt-in,${EXTEN},8)
    
    ...
    
     exten => _X.,41,GotoIf($[${CALLERIDNUM} = 17....]?42:45)
     exten => _X.,42,Playback(/root/pansagen/5)               
     exten => _X.,43,Voicemail(s1234)
     exten => _X.,44,Goto(amt-in,${EXTEN},8)
    
    
     exten => _X.,45,GotoIf($[${CALLERIDNUM} = 17.....]?46:49)
     exten => _X.,46,Playback(/root/pansagen/9)                
     exten => _X.,47,Voicemail(s1234)
     exten => _X.,48,Goto(amt-in,${EXTEN},8)
    
     exten => _X.,49,Goto(amt-in,${EXTEN},7)
    
    
    diese Art ist sehr aufwendig in der Administration.

    Ich überleg mir ab man das ganze nicht per Script erledigen kann?
    Leider hab ich null Ahnung wie man so ein Script schreibt.
    Ich stell mir das so vor:

    1. Anruf kommt an
    2. script wird mit parameter "Rufende MSN" aufgerufen
    3. script schaut in einer Datei (persoenliche_ansage) nach msn und bringt als rückgabe Wert den Name des Soundfiles
    4. Asterisk spiel per Playback das File ab.

    "persoenliche_ansage" könnte diesen Aufbau haben.

    Code:
    #msn       soundfile     name
    078....        1                test-user
    
    Kann mich bei diesem Vorhaben jemand unterstüzen?
    Gibt es einen andere einfachere Lösung?
     
  2. rajo

    rajo Admin-Team

    Registriert seit:
    31 März 2004
    Beiträge:
    1,958
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Hmmm... evtl. mit der Verwendung von Makros in der extensions.conf?
     
  3. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    AGI und ein entsprechendes File. Das AGI Skript setzt in eine Variable den Filenamen!
     
  4. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ok, das ist ja schon mal ein Anfang.

    Ich habe mir überlegt, das ich die Cache-Datei vom Nummer suchen benutze.

    Ich erweiter den Eintrag um eine Feld mit dem Namen der Sound Datei.

    Nun benötige ich ein Script das warscheinlich folgende Zeile enthält:

    Code:
    #!/bin/sh
    #Default sound wenn nichts gefunden wird:
    SOUND=standart
    #pfad zum cachefile
    CACHE="/var/spool/asterisk/invsuche_cache"
    
    if [ "$1" == " " ]; then
        SOUND=$SOUND
    else
    NUMMER=`echo $1 | sed -e "s/\ //g" -e "s/+\?49/0/"`
    SOUND=`awk  -F '\t' '{ if ($1 == "'$NUMMER'") print $4 }' $CACHE`
    fi
    
    Der Aufruf in der extensions.conf könnte dann vielleicht so aussehen:

    Code:
     exten => 1234,1,agi(persoenliche_vbox.sh|${CALLERIDNUM:0})
     exten => 1234,2,Dial(.....,20,T)
     exten => 1234,3,Playback(/<pfadzumsound>/${SOUND})
     exten => 1234,4,Voicemail(s1234)
    
     
    Da ich im Moment keine Möglichkeit hab das ganze zu Testen, würde ich mich freuen ob das jemad kontrollieren könnte.
     
  5. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    So.

    Ich hab mir mal heute so ein Script zusammengebaut und getestet.
    Funktioniert jetzt sehr gut.
    Hier das Shell-Script (/var/lib/asterisk/agi-bin/persoenliche_vbox.sh)

    Code:
    #!/bin/sh
    # AGI Scrip für persönlich V-Box Ansage in Verbindung mit Revers-Nummern (suche bei "dasoertliche.de") Cache-File
    #pfad zum cachefile
    CACHE="/var/spool/asterisk/invsuche_cache"
    SOUND=leer                    #einfach ein leeres gsm file leer.gsm
    UBS=u       #der u Parameter für die Vbox (u1234, b1234 oder s1234)
    
    if [ "$1" == " " ]; then
        SOUND=default
        UBS=u
        else
        NUMMER=`echo $1 | sed -e "s/\ //g" -e "s/+\?49/0/"`
        SOUND=`awk  -F '\t' '{ if ($1 == "'$NUMMER'") print $4 }' $CACHE`
        UBS=s
        if [ "$SOUND" == "" ]; then
            SOUND=leer
            UBS=u
      fi
    fi
    echo "SET VARIABLE sound $SOUND \"\"\n"
    echo "SET VARIABLE ubs $UBS \"\"\n"
    
    Hier der extensions.conf eintrag

    Code:
    exten => 1234,1,SetLanguage(de)
    exten => 1234,2,agi(persoenliche_vbox.sh|${CALLERIDNUM:0})
    exten => 1234,3,Dial(.....)
    exten => 1234,4,Playback(/var/spool/asterisk/voicemail/default/1234/${SOUND})
    exten => 1234,5,Voicemail(${UBS}1234)
    
     
  6. Vendon

    Vendon Neuer User

    Registriert seit:
    22 Okt. 2005
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    ich habe das mal versucht, Asterisk bringt folgende Meldungen wenn ich mich anrufe:
    Reloading SIP
    == Parsing '/etc/asterisk/sip.conf': Found
    -- parse_srv: SRV mapped to host sipgate.de, port 5060
    -- creating pipe for PLCI=0x101 msn = *
    -- Executing SetLanguage("CAPI[contr1/980078]/14", "de") in new stack
    -- Executing AGI("CAPI[contr1/980078]/14", "pvbox.sh|06782830316") in new stack
    Failed to execute '/var/lib/asterisk/agi-bin/pvbox.sh': Permission denied
    -- Launched AGI Script /var/lib/asterisk/agi-bin/pvbox.sh
    -- AGI Script pvbox.sh completed, returning 0
    -- Executing Dial("CAPI[contr1/980078]/14", "SIP/12|5") in new stack
    -- Called 12
    -- started pbx on channel (callgroup=0)!
    -- SIP/12-3568 is ringing
    -- Nobody picked up in 5000 ms
    -- Executing Playback("CAPI[contr1/980078]/14", "/var/spool/asterisk/voicemail/default/COMaction/") in new stack
    -- CAPI Answering for MSN 980078
    Oct 22 00:41:47 WARNING[7238]: file.c:475 ast_openstream: File /var/spool/asterisk/voicemail/default/COMaction/ does not exist in any format
    Oct 22 00:41:47 WARNING[7238]: file.c:787 ast_streamfile: Unable to open /var/spool/asterisk/voicemail/default/COMaction/ (format alaw): No such file or directory
    Oct 22 00:41:47 WARNING[7238]: app_playback.c:83 playback_exec: ast_streamfile failed on CAPI[contr1/980078]/14 for /var/spool/asterisk/voicemail/default/COMaction/
    -- Executing VoiceMail("CAPI[contr1/980078]/14", "980078") in new stack
    Oct 22 00:41:47 WARNING[7238]: app_voicemail.c:1541 leave_voicemail: No entry in voicemail config file for '980078'
    -- CAPI Hangingup
    -- removed pipe for PLCI = 0x101

    Meine Expons.conf sieht so aus:
    Code:
    exten => 980078,1,SetLanguage(de) 
    exten => 980078,2,agi(pvbox.sh|${CALLERIDNUM:0}) 
    exten => 980078,3,Dial(SIP/12,5) 
    exten => 980078,4,Playback(/var/spool/asterisk/voicemail/default/1234/${SOUND}) 
    exten => 980078,5,Voicemail(${UBS}980078) 
    Unter den Verzeichnissen gibt es einen Ordner 1234 mit dem Ordner inbox.
     
  7. Vendon

    Vendon Neuer User

    Registriert seit:
    22 Okt. 2005
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ok bin weiter gekommen. Nachricht leer wird abgespielt und ich kann was in die Vbox sprechen das mir als Mail zugesendet wird.

    Ich schätze mal das in die Datei invsuche_cache Telefon Nr. eingepflegt werden müssen.

    Kann mir jemand sagen wie das Format aussehen muss? Was hat dasoertliche.de damit zu tun. Gibt es da cvs dateien die man Downloaden kann?

    Für eine Antwort jetzt schon mal danke.
     
  8. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo.

    Ich Antwort mal, ach wenn es schon sehr alt ist.

    Ich nutz das Script inverssuche.sh, das über "dasoertliche.de" die Rufnummer einen Namen und Adresse zuweist.

    Der Aufbau der Datei + meine Erweiterung:
    Code:
    07xxxx      Name       Adreesse      Ansage