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

lo4dro

Mitglied
Mitglied seit
14 Okt 2004
Beiträge
656
Punkte für Reaktionen
0
Punkte
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?
 
Hmmm... evtl. mit der Verwendung von Makros in der extensions.conf?
 
AGI und ein entsprechendes File. Das AGI Skript setzt in eine Variable den Filenamen!
 
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.
 
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)
 
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.
 
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.
 
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
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,839
Beiträge
2,219,264
Mitglieder
371,543
Neuestes Mitglied
Brainbanger
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.