[Problem] IVR tut nicht, scheitert vermutlich an der wiedergabe der Soundfiles

Der_D

Neuer User
Mitglied seit
1 Nov 2010
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
Hey Leute,

habe meinen Asterisk nun soweit zum laufen bekommen, echotest, mailbox, mailboxabfrage, abspielen von MP3-files tut soweit. Möchte jetzt aber mein eigentliches Ziel verfolgen, dem Erstellen einer IVR, in der man durch ein mehrstufiges Menü geleitet wird. Okay, zu Beginn würde mir das "marryme-Beispiel" erstmal reichen, das tut jedoch auch nicht....

Ich würde euch jetzt hier einfach mal die extensions.conf posten, denke die sip.conf ist unwichtig, falls doch nicht, bitte sagen!

Code:
[general]
static=yes
writeprotect=no

[echotest]	; TUT!
exten => 81,1,Playback(demo-echotest)
exten => 81,2,Echo
exten => 81,3,Playback(demo-echodone)
exten => 81,4,Hangup

[mailbox_own]	; TUT!
exten => 88,1,Wait,1
exten => 88,2,VoiceMailMain,s${CALLERIDNUM}
exten => 88,3,Hangup()

[mailbox]
exten => 89,2,Wait,1
exten => 89,3,VoiceMailMain
exten => 89,4,Hangup()


[lokal]
exten => 33,1,Answer				; MusicOnHold fuer Geraet 33
exten => 33,n,MP3Player(/etc/asterisk/moh/test.mp3)

exten => _3X,1,NoCDR()                          ; Lokale Erreichbarkeit untereinander
exten => _3X,n,Dial,SIP/${EXTEN}|55|Ttr
exten => 1226XXX,n,Goto,r-${DIALSTATUS}|1

exten => r-BUSY,1,voicemail,b30
exten => r-BUSY,2,Hangup

exten => r-NOANSWER,1,voicemail,u30
exten => r-NOANSWER,2,Hangup

[sipgate_out]
;exten => _0.,Dial,SIP/${EXTEN}@1226XXX|45|r   ; _0. => Alle Nummern die mit 0 anfangen nach draußen

[ankommend]
[B]exten => 1226XXX,1,Answer()
exten => 1226XXX,n,Background(marryme)
exten => 1226XXX,n,Hangup()

exten => 1,1,Playback(thank-you-cooperation)
exten => 1,2,Hangup()

exten => 2,1,MP3Player(/etc/asterisk/moh/test.mp3)
exten => 2,2,Hangup()[/B]


[default]
include => lokal
include => echotest
include => mailbox
include => mailbox_own
include => sipgate_out


Die eigentliche IVR ist unter dem Context ankommend, hoffe ihr könnt mir helfen!
Falls ich was vergessen habe, nur fragen =)

Grüße D


Edit: Was ich vergessen habe zu sagen, folgendes tut soweit teilweise, also das hello-world wird abgespielt. Es klingelt 5 Sekunden lang an meinem Telefon, (Xlite), dann wird Hello World gesagt, anschließend 15 Sekunden lang Pause und dann kommt die Mailbox. Aber auf die 44, die ich eingebe reagiert mein Asterisk leider nicht.... Ich checks ehrlich gesagt nicht, auch warum des "marryme" nich abgespielt wird, gehört ja angeblich zu den standart-sounds.... Mist^^

=>
Code:
[ankommend]
exten => 1226599,1,Dial(SIP/30,5)
exten => 1226599,n,Answer()
exten => 1226599,n,Playback(hello-world)
exten => 1226599,n,Wait(15)
exten => 1226599,n,VoiceMail(30,u)      ; Auf VoiceMail 30 quatschen

exten => 44,1,MP3Player(/etc/asterisk/moh/test.mp3)
exten => 44,2,Hangup()


Edit2: Achja, ich bin nach dieser ANleitung hie vorgegangen, habe aber auch einige andere probiert und leider nicht weitergekommen... :-(
 
Zuletzt bearbeitet:
Für IVR muss die entsprechende Ansage mit Background abgespielt werden (Statt Playback), nur dann werden DTMF-Töne akzeptiert.
Desweiteren sollten sinnvolle Timeouts für die DTMF-Töne angegeben werden :
Code:
[ankommend]
exten => 1226599,1,Dial(SIP/30,5)
exten => 1226599,n,Answer()
exten => 1226599,3,DigitTimeout,5
exten => 1226599,4,ResponseTimeout,10
exten => 1226599,n,Playback(hello-world)
exten => 1226599,n,Wait(15)
exten => 1226599,n,VoiceMail(30,u)      ; Auf VoiceMail 30 quatschen

exten => 44,1,MP3Player(/etc/asterisk/moh/test.mp3)
exten => 44,2,Hangup()

Wahrscheinlich gibt es jetzt noch das Problem, dass jedes Digit (jeder DTMF-Ton) einzeln ausgewertet werden muss, da bin ich mir aber im Moment nicht sicher.
Im Zweifel findest Du Beispiele u.a. hier: IVR.
 
Hey, ich dachte es wäre im Grunde egal ob ich Background oder Playback nehme, außer das bei Background direkt auf Eingaben eingegangen werden kann, bei Playback jedoch erst nachdem das soundfile ausgegeben wurde. Sehe ich das falsch? Habe es jetzt aber mal auf Playback geändert, komme trotzdem nicht weiter.
Die Seite die du verlinkt hast hab ich schon angeschaut, hat mir aber leider au net geholfen, check da net so recht durch.....
Aber eigentlich sollte ja schon das einfache Beispiel hier tun:

[ankommend]
exten => 1226XXX,1,Answer()
exten => 1226XXX,n,Background(marryme)
exten => 1226XXX,n,Hangup()

exten => 1,1,Playback(thank-you-cooperation)
exten => 1,2,Hangup()

exten => 2,1,MP3Player(/etc/asterisk/moh/file1.mp3)
exten => 2,2,Hangup()

Aber daran scheiterts ja schon :-( Hoffe das mir da jemand helfen kann!

Grüße D



ES TUT Also teilweise^^ Ich kann jetzt ne 1 eingeben und es wird das erste ausgeführt =>

[ankommend]
exten => 1226599,1,System(/usr/local/bin/asterisk/test.sh)
exten => 1226599,n,Answer()
exten => 1226599,n,Background(hello-world)
exten => 1226599,n,Background(hello-world)
exten => 1226599,n,Background(hello-world)
exten => 1226599,n,Background(hello-world)
exten => 1226599,n,Background(hello-world)
exten => 1226599,n,Background(hello-world)
exten => 1226599,n,DigitTimeout,5
exten => 1226599,n,ResponseTimeout,10
exten => 1226599,n,Hangup()

exten => 1,1,System(/usr/local/bin/asterisk/test.sh)
exten => 1,n,TrySystem(/usr/local/bin/asterisk/test.sh)
exten => 1,n,MP3Player(/etc/asterisk/moh/file1.mp3)
exten => 1,n,Hangup()

exten => 2,1,MP3Player(/etc/asterisk/moh/file2.mp3)
exten => 2,2,Hangup()

So siehts momentan aus, allerdings wird das Script leider nicht gestartet.... Rechte hab ich auf 777 gesetzt, Pfad stimmt, starte ich es normal aus der Kommandozeile gestartet tut es - ne Datei kopieren und was ausgeben!

Ideen?

Danke euch!
 
Zuletzt bearbeitet:
Ausführung Script

Hey Leute,

habe das ganze jetzt erstmal etwas ruhen lassen, möchte nun das Prjekt aber fertig stellen. Mein Problem ist das starten eines Scriptes, bzw wie hier in meinem Probebeispiel das Schreiben in eine Datei => Logbuch, welche Nummer wann angerufen hat.

Meine Konfiguration dazu sieht so aus:
Code:
[ankommend]
exten => 1226xxx,1,Answer()             ; Rufnummer 0xxx1793xxxx
[B]exten => 1226xxx,n,TryExec(/etc/asterisk/log/anrufe/script)[/B]

exten => 1226xxx,n,Background(marryme)

exten => 1,1,Background(thank-you-cooperation)
exten => 1,n,Background(marryme)
exten => 1,n,System(echo '${DATETIME} - ${CALLERID} - ${CHANNEL}' >> /etc/asterisk/log/anrufe/anrufe_1)
exten => 1,n,Background(marryme)
exten => 1,n,Background(marryme)
exten => 1,n,Hangup()


exten => 11,1,Background(marryme)
exten => 11,n,System(echo '${DATETIME} - ${CALLERID} - ${CHANNEL}' >> /etc/asterisk/log/anrufe/anrufe_11)
exten => 11,n,Playback(thank-you-cooperation)
exten => 11,n,Playback(thank-you-cooperation)


;exten => 1226xxx,3,DigitTimeout,5
exten => 2,1,System(echo '${DATETIME} - ${CALLERID} - ${CHANNEL}' >> /etc/asterisk/log/anrufe/anrufe_2)
exten => 2,2,MP3Player(/etc/asterisk/moh/test.mp3)
exten => 2,3,Hangup()


Script:
Code:
mkdir /etc/asterisk/log/anrufe/Testordner
touch testfile
mkdir testordner2


Fragt nicht nach dem Sinn, ich habe nur aus Testzwecken das "marryme" und "thank-you" genommen, da des einfach schon aufm System lag.

Meine eigentliche Frage, wieso wird das Script nicht ausgeführt? Wenn ich es von der Konsole aus starte tut es!
Und die Log-Dateien werden ja auch geschrieben....

Danke!!

Grüße D
 
1. Rechteproblem?
Sprich: Darf der Asteriskprozess das gewünschte Verzeichnis anlegen?

2. Potentieller Ausführungsfehler?
mkdir /etc/asterisk/log/anrufe/Testordner sollte auf den meisten Distris einen Fehler werfen, wenn das Verzeichnis bereits existiert, also besser mkdir -p ...

So die ersten spontanen Gedanken ...
 
1.: Wie kann ich das überprüfen?

2.: Das sollte ja aber zumindest nicht den 2ten Befehl beeinflussen => touch testfile, also eher erstens würde ich sagen.

Danke schonmal!
 
Nun wenn der erste Befehl scheitert, dann stoppt Dein Skript ...

Zur Frage:

Wenn Asterisk läuft, einfach mal ps -ef | grep asterisk und den user anschauen, unter dem der Prozess läuft. Ist das root, hat sich das Problem erledigt / ist nicht die Ursache. Andernfalls prüfen, ob der angezeigte user an dem Shellskript Ausführungsrechte hat (ls -l <file>) und diese ggf. entsprechend setzen (chmod), oder aber das Shellskript dem entsprechenden User übereignen (chown).
BTW: Das hat jetzt alles nichts mehr mit Asterisk zu tun, sondern mit Linux Grundlagen ...
 
Hey,

also der Prozess läuft unter dem User asterisk, welchem ich aber volle rechte an dem Script gegeben habe (777), sollte also auch nicht daran liegen...

Habe versucht den User zu übereignen, jedoch ohne Erfolg und auch ohne Fehlermeldung!

debian:/etc/asterisk/log/anrufe# chown asterisk script
debian:/etc/asterisk/log/anrufe# ls -l
total 16
-rw-rw---- 1 asterisk asterisk 112 Aug 4 09:31 anrufe_1
-rw-rw---- 1 asterisk asterisk 84 Aug 3 15:32 anrufe_11
-rw-rw---- 1 asterisk asterisk 140 Aug 3 15:19 anrufe_1226599
-rwxrwxrwx 1 asterisk root 130 Aug 4 09:31 script

Ich weiß, dachte aber eigentlich das es an Asterisk selbst liegt, etwas Grundlagen habe ich ja.

Dankeschön trotzdem, muss jetzt mal schauen was ich sonst noch so machen könnte.....
 
AlsoBin etwas weiter gekommen, könnte trotzdem dringend eure Hilfe gebrauchen!

Es könnte eventuell sein, das es an "selinux" liegen könnte, dass Asterisk keinen Zugriff auf das Script hat?!?

Momentaner Stand: Folgender Quellcode
Code:
exten => 11,1,Background(marryme)
exten => 11,n,System(echo '${DATETIME} - ${CALLERID} - ${CHANNEL}' >> /etc/asterisk/log/anrufe/anrufe_11
exten => 11,n,TryExec(/etc/asterisk/scripte/laptop)
exten => 11,n,Playback(thank-you-cooperation)
exten => 11,n,Playback(thank-you-cooperation)

wirft folgende Fehlermeldung:
Code:
[Aug  7 09:37:47] WARNING[17167]: app_exec.c:150 tryexec_exec: Could not find application (/etc/asterisk/scripte/laptop)

Das Script liegt aber zu 100% dort, ist über die Konsole ausführbar und erfüllt seinen Zweck! Wenn ich nun aber anrufe und das Script über Asterisk starten lasse, kommt eben die oben gepostete Fehlermeldung.
Die rechte des Scriptes sehen so aus:
Code:
-rwxr-xr-x   1 asterisk asterisk       52 Aug  4 07:39 laptop


Ich verwende übrigends Debian 5.0.8, sind noch weitere Fakten relevant?

Es kann doch nicht unmöglich sein per Anruf son dämliches Script zu starten!!

Danke euch :)
 
Da haben wir wohl alle etwas übersehen:

Es klappt nicht, da die Applikation

exten => 11,n,TryExec(/etc/asterisk/scripte/laptop)

die falsche Wahl ist, siehe auch Post von ianplain bei forums.asterisk.org.

Entsprechend würde ein

Code:
exten => 11,n,[B]TrySystem[/B](/etc/asterisk/scripte/laptop)
tun ...
 
Hey,
Leider tut es auch mit TrySystem nicht.... Es kommt zwar keine Fehlermeldung in der Asterisk-cli, jedoch wird das Script auch nicht ausgeführt. Ich habe mal spaßeshalber versucht den Befehl (etherwake 00:XX:XX:XX:XX:XX) direkt im System bzw TrySystem-Block einzubauen, jedoch tat auch das nicht :-(
Das ist doch mittlerweile echt verkackt =D
 

Statistik des Forums

Themen
246,285
Beiträge
2,249,440
Mitglieder
373,878
Neuestes Mitglied
klaarapirkko
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.