Anrufbeantworter

jensx

Neuer User
Mitglied seit
20 Okt 2004
Beiträge
124
Punkte für Reaktionen
0
Punkte
0
klingt ja erst mal einfach, aber manchmal....

ich möchte eine HFC-Leitung (aber prinzipiell egal woher der Anruf kommt) überwachen und wenn diese nicht innerhalb einer bestimmten Zeit (von einem anderen externen nicht-asterisk-apparat) beantwortet wurde, dann einen Anrufbeantworter realisieren.

den Context für den eingehenden Ruf gibt es schon, der wird auch beim eingehenden Anruf aufgerufen. Da es aber kein Dial-Kommando gibt, wird der t-context nicht aufgerufen, auch nicht nach 120s. Erst wenn die Gegenstelle aufgibt wird der h-Context aufgerufen.

Wie kann man auswerten, ob der Anruf nach x-Sekunden beantwortet wurde?

Danke für Tipps, Jens
 
Poste mal bitte deine extensions.conf. Ohne die kann man dir nicht wirklich weiterhelfen.
 
vielleicht funktioniert so was:

exten => 1234,1,NoOP
exten => 1234,2,Wait(20.0)
exten => 1234,3,Voicemail(u1234)
exten => 1234,4,3Hangup


1234 ist die gleiche MSN wie vom Telefon
 
daran habe ich auch schon gedacht, nur setze ich ungern wait-befehle ein, denn es it immer unsicher was passiert, wenn innerhalb der wait-zeit die gleiche Nummer (bzw. dieser context) nochmals angerufen wird.

Aber eine Lösung wäre es erst mal.

@Maik: der betrefefnde Teil der ext, ist ja ber noch nicht viel drin

[isdntelekom]
exten => _X.,1,NoOp, CallerID: ${CallerID} CIDNAme ${CALLERIDNAME}CAlleridnum ${CALLERIDNUM} Exten: ${EXTEN} isdntelekom
;Caller ID im Netzwerk anzeigen
exten => _X.,2,NoOP
exten => _X.,3,agi(ip-callerid.php)
; wenn es die Faxnr ist, dann aufhaengen, weil sich der fritz! drum kuemmert
exten => _${FAXNR},4,Hangup
;HIER MUSS DER TIMER STARTEN, bzw. Zeit für t-Extension verändern?
exten => _X.,4,....

exten => h,1,deadagi(abgenommen.php)
 
jensjk schrieb:
daran habe ich auch schon gedacht, nur setze ich ungern wait-befehle ein, denn es it immer unsicher was passiert, wenn innerhalb der wait-zeit die gleiche Nummer (bzw. dieser context) nochmals angerufen wird.

??? Muss ich das jetzt verstehen? Wenn ein Anruf reinkommt wird ihm eine eindeutige Kanal-Nummer zugewiesen. Wenn da ein 2. Anruf reinkommt gibt es da keine Probleme.
 
Ja, schon, aber schon wenn man z.B. Variablen im Context einsetzt, dann funktioniert es nicht mehr, denn selbst definierte Variablen sind im Asterisk wohl generell GLOBAL.
 
Es gibt globale Variablen, die im Kontext [globals] definiert werden. Alle anderen Variablen sind nur fuer den aktuellen Kanal gueltig
 
Das werde ich mal testen (mir schien es nicht so). Leider ist es eben so, daß manches Verhalten der "Programmiersprache" nicht so genau dokmentiert ist oder sich manchmal anders verhält. So habe ich z.B. das Symptom, daß die extensions nur abgearbeitet werden, wenn die Nummern lückenlso durchnummeriert sind:

s,_.,1
s,_.,2

lt. Doku müßte aber auch funktionieren:

s,_.,1
s,_.,20
s,_.,30

aber, das ist nun langsam OT ...

ich werden Anrufbeantworter mit dem Wait realisieren. Der eigentliche Zeitplan wird sowieso über eine zeitabhängiges include gehen, insofern ist es nur eine Stelle, für die dieser Timer gebraucht wird.

Danke für die Hilfe und Tipps.
 
jensjk schrieb:
lt. Doku müßte aber auch funktionieren:

s,_.,1
s,_.,20
s,_.,30

Wuerde mich interessieren, wo du das gefunden hast, damit das mal korrigieren kann.

Es gibt nur sehr wenige Faelle, in denen die Prioritaeten nicht fortlaufend sein muessen. Einige Programme verzweigen je nachdem was passiert ist zu n+1 oder n+101 (bei EnumLookup evtl. sogar n+51). Ansonsten wird immer zu n+1 gesrpungen. Wenn du aber Luecken drin hast, kannst du auch einfach dazwischen ein paar mal 'NoOp' aufrufen. Dann musst du nicht gleich neu durchnummerieren.
 
ich schau mal ob ichs noch finde. Das Problem ist eben das spätere einfügen von Zeilen. Nicht umsonst hat man früher im "Ur"-Basic mit 10,20,30 nummeriert. Ich finde das neu nummerieren immer extrem lästig, insbesondere bei komplexeren Dialplänen zieht es immer Einiges nach sich.
Dann stimmen die Sprungziele nicht mehr, und und und, naja man ist halt durch Programmierumgebungen inzwischen verwöhnt, früher haben wir noch den hex-Code im Assembler selbst ausgerechnet.
 
Hallo,

ich habe ebenfalls ein Problem mit Wait(...).
Ich habe am externen S0 meinen Asterisk und eine Gigaset.
Anrufe auf den MSN kommen sowohl auf dem Gigaset als auch auf der Asterisk an, wenn allerdings das SIP Phone nicht aktiv ist, geht sofort der Asterisk AB ran. Soweit klar, deswegen der Wait...
Nun habe ich zwischen dem...Dial(SIP...) und den VoiceMail ein Wait(10.0) gesetzt.
Nun geht nicht mehr direkt der Voicemai ran, es erscheint auf der Console auch die entsprechende Meldung mit dem Wait, aber das war es dann auch... Nach 10 sek. passiert weiterhin nichts. Was mache ich falsch?

extensions.conf
Code:
:
[437]
exten=>437,1,Dial(SIP/437,30)
exten=>437,2,Wait(10.0)
exten=>437,3,voicemail2(u437)
exten=>437,4,Hangup
:

Auszug Konsole
Code:
Verbosity is at least 5
    -- creating pipe for PLCI=0x101 msn = *
    -- started pbx on channel (callgroup=0)!
    -- Executing Dial("CAPI[contr1/437]/2", "SIP/437|30") in new stack
Mar 24 11:00:19 NOTICE[22710]: app_dial.c:746 dial_exec: Unable to create channel of type 'SIP'
  == Everyone is busy/congested at this time
    -- Executing Wait("CAPI[contr1/437]/2", "10.0") in new stack

Und dabei bleibt es bis ich auflege :(
Was passiert wenn das SIP Phone aktiv ist? Die 30 Timeout zzgl. der 10 des Wait?

MfG
Sascha
 
evtl. schlägt vorher der Timeout-Context zu?
 
Hast Du schon mal probiert die Nachkommastellen wegzulassen? Also sowas wie
Code:
Wait(10)
zu verwenden?
 
Doppelpost, sorry
 
Das mit den NAchkommastellen hat leider nichts gebracht, ich habe aber für weitere Tests mal auf niedrigere Werte gesetzt. Bei einem Wait(4) klappt alles wie es soll, nur ist der Wert ein wenig zu klein;-) Nehme ich einen größeren Wert, dann geht er wieder nicht zur VoiceMail über...

@Jjensjk: Was hat das mit dem Timeout Context aufsich?
 
in jedem Context solt es den exten,t,... geben, der wird aufgerufen nachdem nach bestimmter Zeit nichts passiert sit. Nur 4 oder 10s sind dafür eigentlich zu kurz. geht evtl. innerhalb der 4s ein anderer Context noch ran?
 
Vielleicht hängt es aber auch damit zusammen, das der Ruf gar nicht per SIP möglich ist. Das steht ja schon oben in den Logfiles. Ich habe Wait-Anweisungen mit 20 und keine Probleme damit.
Ich würde zuerst einmal versuchen den Fehler mit dem nicht durchgehenden Ruf zu beheben.
 
an dem nicht verfügbaren SIP liegts sicher nicht, es ist so wie ich es sehe ja wohl der sinn, die 10s zuu warten gerade wenn sip nicht verfügbar ist.

bei mir sieht es so aus (ist im Macro, Globale Varaibel ${ABTIME} steht auf 10)

exten => s,1,gotoIF($["${AB}" = "Mittag"]?macro-anrufbeantworter,100,1)
exten => 100,1,SetLanguage(de)
exten => 100,2,agi(mittag.php)
exten => 100,3,Wait(${ABTIME})
exten => 100,4,Answer
exten => 100,5,Playback(/var/lib/asterisk/sounds/mittag)

ich kann nicht sagen, wie es mit voicemail ist, bei Playback mußte das Answer rein, evtl. liegt es daran.
Evtl. könnte man ja hinter das Wait mal einen NoOP-befehl reinhängen, der danach etwas in die Konsole schreibt (ja nanders kann man leider wohl nicht debuggen ;-)

jens
 
Hallo,

habe das mal mit Hilfe der Suchfunktion und dieses Threads bei mir eingerichtet: Scheinbar das gleiche Problem wie bei bei Sascha.Hampe: ab einem bestimmten Wert (bei mir 10) bleibt das Wait scheinbar hängen. Habe diverse Testanrufe gemacht und zum Schluss mal ein paar Waits kaskadiert. Nach dem 10er Wait passiert nichts mehr.
Code:
[isdntelekom]
exten => ${ABPATTERN},1,NoOP, CallerID: ${CallerID} CIDNAme ${CALLERIDNAME} CAlleridnum ${CALLERIDNUM} Exten: ${EXTEN} isdntelekom
exten => ${ABPATTERN},2,SetLanguage(de)
exten => ${ABPATTERN},3,NoOP                ;Dial(SIP/kphone,10)
exten => ${ABPATTERN},4,NoOP, CallerID: ${CallerID} CIDNAme ${CALLERIDNAME} CAlleridnum ${CALLERIDNUM} Exten: ${EXTEN} isdntelekom
exten => ${ABPATTERN},5,Wait(5,0)
exten => ${ABPATTERN},6,Wait(6,0)
exten => ${ABPATTERN},7,Wait(9,0)
exten => ${ABPATTERN},8,Wait(8,0)
exten => ${ABPATTERN},9,NoOP, CallerID: ${CallerID} CIDNAme ${CALLERIDNAME} CAlleridnum ${CALLERIDNUM} Exten: ${EXTEN} isdntelekom
exten => ${ABPATTERN},10,Voicemail(u${EXTEN})
exten => ${ABPATTERN},11,Playback(Goodbye)
exten => ${ABPATTERN},12,Hangup

Code:
     -- Executing NoOp("CAPI[contr1/1234]/42", " CallerID:  CIDNAme 0xxxxxxx CAlleridnum 0xxxxxx Exten: 1234 isdntelekom") in new stack
    -- Executing SetLanguage("CAPI[contr1/1234]/42", "de") in new stack
    -- Executing NoOp("CAPI[contr1/1234]/42", "") in new stack
    -- Executing NoOp("CAPI[contr1/1234]/42", " CallerID:  CIDNAme 0xxxxxxx CAlleridnum 0xxxxxx Exten: 1234 isdntelekom") in new stack
    -- Executing Wait("CAPI[contr1/1234]/42", "5|0") in new stack
    -- SIP/gmx5888-a3ca is making progress passing it to SIP/kphone-ee46
    -- Executing Wait("CAPI[contr1/1234]/42", "6|0") in new stack
    -- Executing Wait("CAPI[contr1/1234]/42", "10|0") in new stack

Ab hier tut sich nichts mehr bis ich irgendwann auflege.
Mache ich aus der 10 eine 9
exten => ${ABPATTERN},7,Wait(9,0)

Code:
    -- Executing NoOp("CAPI[contr1/1234]/44", " CallerID:  CIDNAme 0xxxxxxxx CAlleridnum 0xxxxxx Exten: 1234 isdntelekom") in new stack
    -- Executing SetLanguage("CAPI[contr1/1234]/44", "de") in new stack
    -- Executing NoOp("CAPI[contr1/1234]/44", "") in new stack
    -- Executing NoOp("CAPI[contr1/1234]/44", " CallerID:  CIDNAme 0xxxxxxxx CAlleridnum 0xxxxxx Exten: 1234 isdntelekom") in new stack
    -- Executing Wait("CAPI[contr1/1234]/44", "5|0") in new stack
    -- SIP/gmx5888-96b5 is making progress passing it to SIP/kphone-b3df
    -- Executing Wait("CAPI[contr1/1234]/44", "6|0") in new stack
    -- Executing Wait("CAPI[contr1/1234]/44", "9|0") in new stack
    -- Executing Wait("CAPI[contr1/1234]/44", "8|0") in new stack
    -- Executing NoOp("CAPI[contr1/1234]/44", " CallerID:  CIDNAme 0xxxxxxxx CAlleridnum 0xxxxxx Exten: 1234 isdntelekom") in new stack
    -- Executing VoiceMail("CAPI[contr1/1234]/44", "u1234") in new stack
    -- CAPI Answering for MSN 1234

.... dann laufen alle Waits durch und der AB geht ran....

Als Workaround nehm ich jetzt erst mal mehrere kleine Waits, aber vielleicht bringt das ja jemanden auf ne Idee.
 
na, wenn mehrere kleine waits helfen ist es ja ok.

ich komme mit dem vorherigen test-confs nicht ganz klar, weil ich irgendwie gar kein wait(10) finde.

jens
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
244,868
Beiträge
2,219,773
Mitglieder
371,585
Neuestes Mitglied
PauSchmitz
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.