IVR - springt in falsche Kontexte

herrmax

Neuer User
Mitglied seit
2 Okt 2006
Beiträge
77
Punkte für Reaktionen
0
Punkte
0
Hallo und ein *ich brauch Euch*,

bin mit meinem Lateien am Ende.

Folgendes Szenario: ich baue 2 Mini-IVRs die miteinander nix zu tun haben in unterschiedlichen Kontexten. Beide Menüs haben einen Menüpunkt 1 bis 3.

Wenn nun der Benutzer im IVR-Menu-2 die Auswahl 1 tätigt, springt mein guter Ast leider in den falschen Kontext des Menu-1 und arbeitet dort die Extension 1 ab!!!!

Und ich habe keine Ahnung wieso???

Code der extension.conf
[ceo]
include=>vb ; Voicebox einrichten
include=>kantine

[vb]
exten => 998,1,Answer()
exten => 998,2,Set(TIMEOUT(digit)=2)
exten => 998,3(menu),Playback(testmenu)
exten => 998,n(again),Background(testnochmal)
exten => 998,n,Background(silence/5)
exten => 998,n,Hangup()

exten => 1,1,Goto(menu)

exten => 2,1,Goto(again)

[kantine]
exten => 999,1,Background(testansage)
exten => 999,2,Background(silence/3)
exten => 999,3,Goto(1)

exten => 1,1,Playback(beep)
exten => 1,2,Goto(1)

exten => 2,1,Playback(s3_mailbox_ok)
exten => 2,2,Goto(1)

bedeutet: ich wähle ext 999 in kantine - wähle das menü 1 (möchte den beep hören) --> was passiert ist aber, mein * hupft in Kontext "vb" und arbeitet den Goto(menu) ab, was dann zum Fehler führt - weils die Prio menu ja in dem Kontext auch nicht gibt!!!!

Habt ihr Ideen??? Ich habe ursprünglich ein Klammer-Auf-Zu-Fehler vermutet. Die stimmen im Dialplan aber alle!!

Bin a bissl am Ende mit meiner Kreativität.

Danke Euch.
lg
mex
 
gib halt den gewünschten Context, die gewünschte Extension und die prio 1 in deinem Goto explizit an und teste dann nochmal.
 
hi betateilchen,

da hab ich mich wahrscheinlich nicht ganz klar ausgedrückt - nicht der Goto macht mir die Probleme - sondern: Wenn der * während der Background-Ansage eine Eingabe bekommt zb. die 1 - dann sollte er in dem aktuellen Kontext auch zur Priorität 1 springen.
Leider springt er aber in einen anderen Kontext und arbeitet dort die Prio 1 ab!!

Weisst Du was ich meine!! Da ist mein Goto noch gar nicht im Spiel....

danke Dir vorab schon mal
lg
mex
 
bitte poste mal die CLI Ausgabe, wenn Du das Ganze versuchst.
 
Du includest beide IVRs und in beiden gibt es die extension 1. Daher nimmt er den zuerst includierten, was völlig korrekt ist, und er kommt niemals dazu, die zweite extension 1 anzusprechen, da Du anscheinend im Kontext ceo bleibst.
 
Hi madiehl,
deine ausführung scheint exakt korrekt zu sein - aber was ist die lösung? ich möchte in meinem Dialplan mehrere IVR´s einbauen - die jeweils ein Menü 1,2,3 (also Prioritäten) haben.
Hab ich irgendwo einen Denkfehler??
Aber aus dem Kontext "ceo" inklude ich das IVR kantine mit Menü-Verzweigung 1,2,3...
Genauso möchte ich aber aus dem Kontext "ceo" das IVR Kühlraum mit Menü 1,2,3 inkludieren!!!???
Wie geht das dann??

1000dank
mex
 
Hi Betateilchen,

sodala - hier die CLI...
Ich erkenne schonN dass der Fehler irgendwie damit zu tun hat, dass er die inkludierten Kontexte sequenziell abarbeitet - und somit zu meinen Prioritäten nicht kommt. Aber wie kann ichs umgehen??

Sieht man schön an der Fehlermeldung No such label 'menu' in extension '1' in context 'ceo'


-- Executing Answer("SIP/13-b6e54738", "") in new stack
-- Executing Set("SIP/13-b6e54738", "TIMEOUT(digit)=2") in new stack
-- Digit timeout set to 2
-- Executing Playback("SIP/13-b6e54738", "s3_mailbox") in new stack
-- Playing 's3_mailbox' (language 'de')
-- Executing Playback("SIP/13-b6e54738", "s3_nachbeep") in new stack
-- Playing 's3_nachbeep' (language 'de')
-- Executing Playback("SIP/13-b6e54738", "s3_beep") in new stack
-- Playing 's3_beep' (language 'de')
-- Executing Record("SIP/13-b6e54738", "/tmp/s3_Umailbox13.gsm|3|20") in new stack
-- Playing 'beep' (language 'de')
-- Executing BackGround("SIP/13-b6e54738", "s3_mailbox_menu") in new stack
-- Playing 's3_mailbox_menu' (language 'de')
== CDR updated on SIP/13-b6e54738
-- Executing BackGround("SIP/13-b6e54738", "s3_Umailbox13") in new stack
-- Playing 's3_Umailbox13' (language 'de')
-- Executing Goto("SIP/13-b6e54738", "menu") in new stack
May 29 10:25:27 NOTICE[8623]: pbx.c:1754 pbx_extension_helper: No such label 'menu' in extension '1' in context 'ceo'
May 29 10:25:27 WARNING[8623]: pbx.c:6536 ast_parseable_goto: Priority 'menu' must be a number > 0, or valid label
== Spawn extension (ceo, 1, 2) exited non-zero on 'SIP/13-b6e54738'

grüße,
mex
 
Du musst in dem Goto-Befehl nicht nur das Ziel, sondern auch den Kontext angeben. Das hat Betateilchen Dir aber weiter oben bereits geschrieben.
Ich kann mich zur Zeit nicht so konzentrieren, aber such doch mal nach den Parametern die Du bei GoTo übergeben kannst.
 
JUNGS ihr missversteht mich!!
Wenn ihr Stress habt, dann möcht ich nicht lästig sein - aber es ist nicht der Goto der mir das Problem bereitet --> mir war schon klar, dass ich im Goto den Kontext mitgeben kann.
Das Problem ist die Interpretation von Background wenn man eine Taste drückt: im Kontext X drücke ich 1 um über das IVR zur Exten 1 zu gelangen --> Aber mein * springt in den Kontext Y zur Exten 1 !!!!
Dort spielt KEIN Goto mit!!

Wisst ihr was ich meine...??
danke trotz stress...
grüße,
mex

-- edit bt: nächster Beitrag kurze Zeit später --

Verhalten meines Dialplans anhand Beispiel-IVR von Stefan: http://www.das-asterisk-buch.de/stable/mehrstufige-ivr.html

in diesem Fall würde mein Ast im Kontext "kantine" bei Auswahl "1" nicht den Playback(essensplan-diese-woche) abarbeiten - sondern im Kontext "beispiel-ivr" den Dial(SIP/100) ausführen!!

Ich habe genau dieses Beispiel in meinen dialplan reinkopiert - und genau das ist dabei rausgekommen.??!!

Ich kapiers leider nicht...

lg
mex
 
Zuletzt bearbeitet von einem Moderator:
Da Du in [ceo] sowohl den Context [vb] als auch [kantine] inkludierst, und es in beiden inkludierten Contexten eine extension => 1 gibt, springt der Asterisk automatisch zur ersten passenden.

Test doch mal spaßeshalber folgendes: Vertausche die Reihenfolge der includes in [ceo], dann müßte der Asterisk in die andere extension => 1 springen.

Und nochwas...

Goto(menu) wird so nicht funktionieren, da damit automatisch nach einer extension mit dem Namen "menu" im aktuellen Context gesucht wird. Gleiches gilt für Deine anderen Goto() in denen Du - eigentlich - Contexte anspringen willst, aber keine extension/priority mitgibst.

Streß hat hier gar niemand - außer Dir, weil Dein Dialplan nicht funktioniert. Und Du kannst noch so oft aus irgendwelchen Büchern zitieren, aus denen Du abgeschrieben hast. Davon korrigieren sich Deine Fehler trotzdem nicht von alleine!
 
Ich glaube eher Du missverstehst uns.
Entweder springst Du gezielt in den korrekten Kontext oder Du versuchst weiter aus einem Kontext zwei gleiche extensions aufzurufen,das wird so nie klappen.
Da Dein Dialplan aber so z.B. in vb sowieso nicht klappen wird, ist es schwierig sich in die fehlerhaften Kontexte reinzudenken.
Du könntest beispielsweise im Kontext CEO die Extensions 998 und 999 in die entsprechenden Kontexte springen lassen, probier doch bitte mal so was:
Code:
[ceo]
exten => 998,1,Goto(vb,998,1)
exten => 999,1,Goto(kantine,999,1)

Noch ein Nachtrag:
Versuch zuerst einmal zu verstehen was da im Dialplan passiert bevor Du einfach wild Beispiele kopierst. Ist nicht böse gemeint, aber sonst lernst Du es nicht.
 
Zuletzt bearbeitet:
ich glaube ich habe den include nicht ganz kapiert!!
ich habe geglaubt, der Include bindet Kontexte im aufrufenden Kontext ein, aber bleibt immer noch ein in sich "geschlossener" Aufruf von Funktionen mit den dortigen Extensions und Prioritäten. IRRTUM :)

Ich arbeite nun mit dem GOTO aus ceo - dann klappt das alles.

Was das zitieren aus den Büchern betrifft - ich dachte es veranschaulicht am einfachsten mein Problem... wohl auch ein Irrtum.

However, ich danke Euch sehr.

Beste Grüße,
mex
 
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.