Voicemail mit Skript-Integration realisieren?!

schuelsche

Neuer User
Mitglied seit
22 Dez 2004
Beiträge
46
Punkte für Reaktionen
0
Punkte
0
Nachdem wir nun endlich den Asterisk so zum Laufen gebracht haben, dass wir rein- und raustelefonieren können, möchten wir nun einen Anrufbeantworter einrichten.

Der Anrufbeantworter funktioniert auch soweit mit dieser Konfiguration:

sip.conf
=======
Code:
[general]
port=5060
binaddr=0.0.0.0
;externip=X.X.X.X ; (oder Adresse, bspw. user.dynalias.org)
srvlookup=yes
nat=yes
localnet=0.0.0.0
context=default
disallow=all
allow=gsm
allow=alaw
allow=ulaw
tos=0x18
dtmfmode=info
insecure=very
register=>USER1:[email protected]/45 ; Zugang user1
register=>USER2:[email protected]/47 ; Zugang user2

[webde-user1]
type=friend
secret=PASSWORT1
username=USER1
host=sip.web.de
fromuser=USER1
fromdomain=sip.web.de
nat=no
;context=default ; kann auskommentiert werden, da schon in der [general] context=default steht
canreinvite=no
insecure=very

[webde-user2]
type=friend
secret=PASSWORT2
username=USER2
host=sip.web.de
fromuser=USER2
fromdomain=sip.web.de
nat=no
canreinvite=no
;context=default ; kann auskommentiert werden, da schon in der [general] context=default steht
insecure=very

[45]
type=friend
username=45
secret=PASSWORT ; nur Clientzugang für Softphone am *
host=dynamic
qualify=yes
context=webde-user1
nat=yes

[47]
type=friend
username=47
secret=PASSWORT ; nur Clientzugang für Softphone am *
host=dynamic
qualify=yes
context=webde-user2
nat=yes


extensions.conf
==========
Code:
[general]
static=yes
writeprotect=no

[default]
include=>45
include=>47
include=>webde-user1
include=>webde-user2

[45]
exten=>45,1,Dial(SIP/${EXTEN},10) ; auf AB, wenn nach 10sec nicht abgehoben wird.
exten=>45,2,Voicemail(u45)
exten=>45,102,Voicemail(b45)

[47]
exten=>47,1,Dial(SIP/${EXTEN},10) ; auf AB, wenn nach 10sec nicht abgehoben wird.
exten=>47,2,Voicemail(u47)
exten=>47,102,Voicemail(b47)

[webde-user1]
exten=>_0.,1,Dial(SIP/${EXTEN:1}@webde-user1,60)
exten=>_0.,2,Congestion
exten=>_0.,102,Busy

[webde-user2]
exten=>_8.,1,Dial(SIP/${EXTEN:1}@webde-user2,60)
exten=>_8.,2,Congestion
exten=>_8.,102,Busy

Die voicemail.conf sieht standardmässig so aus:

Code:
;
; Voicemail Configuration
;
[general]
format=wav|gsm
serveremail=asterisk
append=yes
maxgreet=30
maxmessage=90

[default]
45 => 4242,Example Mailbox,root@localhost
47 => 1212,Example Mailbox,root@localhost


Ich habe mir das Tutorial von www.kircherernet.de/ASTERISK runtergeladen, weil dort die Möglichkeit angeboten wird, die eingegangen Voicenachrichten über ein Webinterface einzurichten.

Dazu habe ich wie dort beschrieben für einen Voicemailbenutzer einen Account angelegt und ein Verzeichnis /home/user2/public_html/vm/msg erstellt und dort die Datei vm.php reinkopiert (gibts bei Kirchner zum Download). Der Aufruf funktioniert auch soweit.

Nur habe ich Probleme mit dem Skript vcopy.
Unter SuSE Linux 9.2 kann ich keinen Telefonbenutzer anlegen, der nur aus Zahlen besteht (also keinen User 45 oder 47). Daher habe ich einen Account angelegt namens user2.

Die Voicemail.conf wird nun so editiert (ich habe das ganze nur mal konfiguriert für den User [47] (=user2):
Code:
;
; Voicemail Configuration
;
[general]
format=wav|gsm
serveremail=asterisk
append=yes
maxgreet=30
maxmessage=90

;### Skript, das neue Mails automatisch in das Heimverzeichnis des Users kopiert
externnotify=/usr/sbin/vcopy


[default]
45 => 4242,Example Mailbox,root@localhost
47 => 1212,user2,root@localhost

Die Datei "vcopy" habe ich in das Verzeichnis /usr/sbin/ kopiert und mit chmod 777 für alle ausführbar gemacht.

Ausserdem habe ich die Datei vcopy folgendermassen editiert:

Code:
#!/bin/sh
################################################################
#   Voice Mail kopierer von Martin Kirchner
#   Etwas "brutal" programmiert
#   Mach es richtig/besser (config file und Abfrage)und Mail es mir zu :)
#            [email][email protected][/email]
#################################################################
#
#Name fuer neuen dateiname bestimmen
dzeit=$(date +%H_%M_%S)

#einige DEBUGausgaben
echo $dzeit
echo "kopiere"

#Für jede ASTERISK Voicebox muss ein Block entsprechend dem folgenden angelegt werden
#Kopiere die neuen msgs in das Verzeichniss, aendere die Dateirechte und
#loesche die alten Dateien
#Mailbox 47 ###########
 #Mailboxname mit angehängtem Unterstrich bestimmen
m="47_"
 #Kopiere <Datenquelle> <Datenziel>   der TEXTDATEIEN
cp /var/spool/asterisk/voicemail/default/47/INBOX/msg0000.txt /home/user2/public_html/vm/msg/$m$dzeit.txt
 #Kopiere <Datenquelle> <Datenziel>   der Sprachdatei
cp /var/spool/asterisk/voicemail/default/47/INBOX/msg0000.wav /home/user2/public_html/vm/msg/$m$dzeit.wav
 #setze die zugriffsrechte auf 777 (xrwxrwxrw)
chmod 777 /home/user2/public_html/vm/msg/*
 #l&ouml;sche die Textdatei und die Sprachdatei aud dem ASTERISK VOICEMAILVERZEICHNIS
rm -f /var/spool/asterisk/voicemail/default/47/INBOX/*

Problem ist nun, dass die Datei vcopy gar nicht aufgerufen wird.
Die Voicemailbox von Asterisk nimmt nach 10sec den Anruf entgegen, der Anrufer spricht was, die Nachricht wird aufgezeichnet und dann kommt die Fehlermeldung:

-- Called 47
-- SIP/47-7abc is ringing
-- Nobody picked up in 10000 ms
-- Executing VoiceMail("SIP/chiligruen-5cf9", "u47") in new stack
-- Playing 'vm-theperson' (language 'en')
-- Playing 'digits/4' (language 'en')
-- Playing 'digits/7' (language 'en')
-- Playing 'vm-isunavail' (language 'en')
-- Playing 'vm-intro' (language 'en')
-- Playing 'beep' (language 'en')
-- Recording the message
-- x=0, open writing: /var/spool/asterisk/voicemail/default/47/INBOX/msg0005 format: wav, 0x8132e80
-- x=1, open writing: /var/spool/asterisk/voicemail/default/47/INBOX/msg0005 format: gsm, 0x8133450
-- User hung up
/bin/sh: /usr/bin/vcopy: No such file or directory

Woran liegt das? Stimmt was mit dem Aufruf in der voicemail.conf nicht? Es wird mir ja nicht mal das "echo $dzeit" und "echo kopiere" angezegit, wo die das Auskommentierungszeichen rausgenommen habe.

Was aufgefallen ist bei der Editierung der Datei vcopy, dass mir die 47 in der gleichen Farbe angezeigt wird wie die 777 bei chmod, also wohl irgendwie nicht richtig angenommen wird. Kann das Skript nicht mit Zahlen umgehen? Bzw. wie bringe ich ihm bei, dass er die 47 als Text nimmt, wie wenn ich user2 benutzen würde? Aber wie gesagt, die Datei wird ja gar nicht aufgerufen, weil ja ansonsten der Echoteil im Asterisk erscheinen müsste, oder?
Wie kann ich bspw. überprüfen, ob es den Befehl "externnotify" auf der SuSE 9.2-Konfiguration mit Asterisk überhaupt gibt?

Würde mich über Hilfe sehr freuen,
Grüsse
schuelsche
 
in deiner voicemai.conf sollte stehen:

externnotify=/usr/sbin/vcopy

in der Fehlermaeldung steht aber:
/bin/sh: /usr/bin/vcopy: No such file or directory

Fehlt da vielleicht das "s" bei ../sbin/.. ?

chamaeleo
 
Hallo schuelsche,
hast du das Tutorial von www.kircherernet.de/ASTERISK noch bei dir? Ich interesiere mich auch dafür nur ist die Webseite nicht erreichbar.
Es wäre schön wenn du mir es zukommen lassen köntest.


THX

dfs712
 

Neueste Beiträge

Statistik des Forums

Themen
244,877
Beiträge
2,219,980
Mitglieder
371,595
Neuestes Mitglied
tdxchris92
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.