.titleBar { margin-bottom: 5px!important; }

Anrufbeantworter

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von jensx, 16 Feb. 2005.

  1. jensx

    jensx Neuer User

    Registriert seit:
    20 Okt. 2004
    Beiträge:
    124
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Dresden
    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
     
  2. Maik

    Maik Gesperrt

    Registriert seit:
    1 Apr. 2004
    Beiträge:
    1,778
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Poste mal bitte deine extensions.conf. Ohne die kann man dir nicht wirklich weiterhelfen.
     
  3. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  4. jensx

    jensx Neuer User

    Registriert seit:
    20 Okt. 2004
    Beiträge:
    124
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Dresden
    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)
     
  5. Maik

    Maik Gesperrt

    Registriert seit:
    1 Apr. 2004
    Beiträge:
    1,778
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ??? 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.
     
  6. jensx

    jensx Neuer User

    Registriert seit:
    20 Okt. 2004
    Beiträge:
    124
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Dresden
    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.
     
  7. Maik

    Maik Gesperrt

    Registriert seit:
    1 Apr. 2004
    Beiträge:
    1,778
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Es gibt globale Variablen, die im Kontext [globals] definiert werden. Alle anderen Variablen sind nur fuer den aktuellen Kanal gueltig
     
  8. jensx

    jensx Neuer User

    Registriert seit:
    20 Okt. 2004
    Beiträge:
    124
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Dresden
    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.
     
  9. Maik

    Maik Gesperrt

    Registriert seit:
    1 Apr. 2004
    Beiträge:
    1,778
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  10. jensx

    jensx Neuer User

    Registriert seit:
    20 Okt. 2004
    Beiträge:
    124
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Dresden
    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.
     
  11. Dakota

    Dakota Neuer User

    Registriert seit:
    17 März 2005
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  12. jensx

    jensx Neuer User

    Registriert seit:
    20 Okt. 2004
    Beiträge:
    124
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Dresden
    evtl. schlägt vorher der Timeout-Context zu?
     
  13. madiehl

    madiehl Mitglied

    Registriert seit:
    15 Feb. 2005
    Beiträge:
    438
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hast Du schon mal probiert die Nachkommastellen wegzulassen? Also sowas wie
    Code:
    Wait(10)
    zu verwenden?
     
  14. madiehl

    madiehl Mitglied

    Registriert seit:
    15 Feb. 2005
    Beiträge:
    438
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Doppelpost, sorry
     
  15. Dakota

    Dakota Neuer User

    Registriert seit:
    17 März 2005
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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?
     
  16. jensx

    jensx Neuer User

    Registriert seit:
    20 Okt. 2004
    Beiträge:
    124
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Dresden
    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?
     
  17. madiehl

    madiehl Mitglied

    Registriert seit:
    15 Feb. 2005
    Beiträge:
    438
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  18. jensx

    jensx Neuer User

    Registriert seit:
    20 Okt. 2004
    Beiträge:
    124
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Dresden
    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
     
  19. borax

    borax Neuer User

    Registriert seit:
    29 März 2005
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  20. jensx

    jensx Neuer User

    Registriert seit:
    20 Okt. 2004
    Beiträge:
    124
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Dresden
    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