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

Nachtschaltung & Asterisk

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von baschdieh, 22 Dez. 2006.

  1. baschdieh

    baschdieh Mitglied

    Registriert seit:
    15 Sep. 2005
    Beiträge:
    416
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    habe hier ein sehr extremes Problem mit der Programmierung meiner Nachtschaltung. Folgendes Scenario:

    Ein Snom 360 Telefon hat via Funktionstaste ein Weiterleitungsziel zur Aktivierung der "Nachtschaltung". Sobald dies ausgefuehrt wird, werden die Anrufe der Zentrale auf die Nebenstelle "5555" geleitet. An dieser "5555" gibts eine GoToIfTime Schleife, die dann jeweils unterschiedliche Queues ausfuehrt. Hinter den Queues sind angemeldete Agenten, die dann die Gespraeche entgegen nehmen sollen:

    extensions.conf
    Code:
    exten => 5555,1,GoToIfTime(*|mon|*|*?montag|1,1)
    exten => 5555,2,GoToIfTime(*|tue|*|*?dienstag|1,1)
    exten => 5555,3,GoToIfTime(*|wed|*|*?mittwoch|1,1)
    exten => 5555,4,GoToIfTime(*|thu|*|*?donnerstag|1,1)
    exten => 5555,5,GoToIfTime(*|fri|*|*?freitag|1,1)
    
    dazu gibts dann fuer jeden Tag folgendes:
    
    [montag]
    exten => 1,1,Set(TIMEOUT(Digit)=5)
    exten => 1,2,Set(TIMEOUT(Response)=10)
    exten => 1,3,Queue(montag|r|||)
    exten => 1,4,Hangup()
    
    usw.
    
    queues.conf
    Code:
    [montag]
    strategy=leastrecent
    timeout=70000
    retry=0
    wrapuptime=10
    timeoutrestart = yes
    announce-frequency = 0
    announce-holdtime = no
    member => Agent/529
    member => Agent/538
    member => Agent/537
    member => Agent/543
    member => Agent/534
    member => Agent/548
    
    usw.
    
    Die Logik funktioniert, allerdings stuertzt der Asterisk (1.2.13) komplett ab, wenn um was zu sagen 2 gleichzeitige Gespraeche umgeleitet werden. Leider sehe ich weder im verbose noch im debug irgendwelche Anhaltspunkte. Kann man mein Scenario irgendwie verbessern oder anders gestallten?

    Als die Nachtschaltung rausgenommen wurde, laeuft die Kiste normal weiter. Also ohne Probleme.

    danke im voraus!
     
  2. HobbyStern

    HobbyStern Aktives Mitglied

    Registriert seit:
    5 Dez. 2005
    Beiträge:
    1,837
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Beruf:
    vorhanden
    Ort:
    Ruhrgebiet
    Hallo Basti,

    Was heisst das ?

    Grundsätzlich sollte etwas im Verbose kommen, wenigstens als WARNING oder ggf. ein ERROR, wenn Asterisk abstürzt so tut er dies mW immer mit einem Exitcode - ggf. kannst Du diesen mal auswerten, ich würde das ganze reproduzieren (es ist ja anscheinend reproduzierbar) , alles entnehmen und dann Stück für Stück Code im Dialplan einsetzen, so wirst Du recht schnell merken an welcher Stelle er sich weghängt, das ganze dann natürlich mit einem Verbose = 4 o.ä. und einem Debug = 4 o.ä.

    Die Log Ausgaben kannst Du Dir auch ganz bequem benutzerdefiniert speichern lassen (siehe logger.conf)

    Schreib mal was passiert wenn das ganze noch aktuell ist.

    Grüsse, Stefan
     
  3. baschdieh

    baschdieh Mitglied

    Registriert seit:
    15 Sep. 2005
    Beiträge:
    416
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    vielen Dank fuer Deine Antwort:

    Leider kommt in der Tat keinerlei Fehlermeldung im Debug/Verbose vor, hier mal ein Auszug, wenn die "Nachtschaltung" aktiviert wurde:

    Code:
    Dec 27 09:13:46 VERBOSE[14267] logger.c:     -- Executing Dial("Zap/25-1", "SIP/empfang|240") in new stack
    Dec 27 09:13:46 VERBOSE[14267] logger.c:     -- Called empfang
    Dec 27 09:13:47 VERBOSE[13995] logger.c:     -- Got SIP response 302 "Moved Temporarily" back from 1.1.2.44
    Dec 27 09:13:47 VERBOSE[14267] logger.c:     -- Now forwarding Zap/25-1 to 'Local/5555@intern' (thanks to SIP/empfang-0824cab8)
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- Executing GotoIfTime("Local/5555@intern-ec04,2", "*|mon|*|*?montag|1|1") in new stack
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- Executing GotoIfTime("Local/5555@intern-ec04,2", "*|tue|*|*?dienstag|1|1") in new stack
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- Executing GotoIfTime("Local/5555@intern-ec04,2", "*|wed|*|*?mittwoch|1|1") in new stack
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- Goto (mittwoch,1,1)
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- Executing Set("Local/5555@intern-ec04,2", "TIMEOUT(Digit)=5") in new stack
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- Digit timeout set to 5
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- Executing Set("Local/5555@intern-ec04,2", "TIMEOUT(Response)=10") in new stack
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- Response timeout set to 10
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- Executing Queue("Local/5555@intern-ec04,2", "mittwoch|r|||") in new stack
    Dec 27 09:13:47 VERBOSE[14267] logger.c:     -- Local/5555@intern-ec04,1 is ringing
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- outgoing agentcall, to agent '532', on 'Local/32@intern-7ae8,1'
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- Called Agent/532
    Dec 27 09:13:47 VERBOSE[14272] logger.c:     -- Executing Dial("Local/32@intern-7ae8,2", "SIP/test") in new stack
    Dec 27 09:13:47 VERBOSE[14272] logger.c:     -- Called test
    Dec 27 09:13:47 VERBOSE[14272] logger.c:     -- SIP/test-0842bc60 is ringing
    Dec 27 09:13:47 VERBOSE[14269] logger.c:     -- Agent/532 is ringing
    Dec 27 09:13:47 VERBOSE[14272] logger.c:     -- SIP/test-0842bc60 is ringing
    Dec 27 09:13:48 VERBOSE[14272] logger.c:     -- SIP/test-0842bc60 is ringing
    Dec 27 09:13:52 VERBOSE[14269] logger.c:     -- Agent/532 answered Local/5555@intern-ec04,2
    Dec 27 09:13:52 VERBOSE[14267] logger.c:     -- Local/5555@intern-ec04,1 answered Zap/25-1
    Dec 27 09:14:12 VERBOSE[13995] logger.c:     -- Stopped music on hold on @i;H8XX55@intern-ec04,1<ZOMBIE>
    Dec 27 09:14:16 VERBOSE[14331] logger.c: Asterisk Event Logger Started /var/log/asterisk/event_log
    Dec 27 09:14:16 VERBOSE[14331] logger.c:   == Parsing '/etc/asterisk/dnsmgr.conf': Dec 27 09:14:16 VERBOSE[14331] logger.c:   == Parsing '/etc/asterisk/dnsmg
    Dec 27 09:14:16 VERBOSE[14331] logger.c: Asterisk Dynamic Loader loading preload modules:
    Dec 27 09:14:16 VERBOSE[14331] logger.c:   == Parsing '/etc/asterisk/modules.conf': Dec 27 09:14:16 VERBOSE[14331] logger.c:   == Parsing '/etc/asterisk/modu
    Dec 27 09:14:16 VERBOSE[14331] logger.c:   == Manager registered action Ping
    Dec 27 09:14:16 VERBOSE[14331] logger.c:   == Manager registered action Events
    
    So sieht das aus - man sieht, er restartet einfach - kein Segmentation Fault bzw. Core Dump - nichts..einfach ein restart. Ich versteh es nicht?!

    Der Agent "532" ist der SIP-Account "Test". Kannst Du irgendwelche Auffaelligkeiten entdecken? Sieht doch alles lt. Log gut aus ?!
     
  4. baschdieh

    baschdieh Mitglied

    Registriert seit:
    15 Sep. 2005
    Beiträge:
    416
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    So - habe nun mehr oder weniger das Problem gefunden. Es scheint wohl an der konfigurierten Snom Taste zu liegen.

    Beim Snom habe ich mittels KEY_EVENT eine Funktion F_REDIRECT:<nebenstelle> eingerichtet. Verweisse ich statisch innerhalb der extensions.conf die Rufnummer auf die Queue bzw. GoToIfTime Schleife, funktioniert es ohne Reset.
    Sobald allerdings am Telefon diese Funktionstaste aktiviert wird, bricht der Asterisk ab. Schade nur, dass ich keinerlei Fehler im Log sehen. Nichts desto trotz werde ich nun die Sache mit einem Dialstatus realisieren, somit kann man ja dann einfach das Telefon auf DND setzen und es sollte funktionieren.

    Wer mir bei den Dialstatus "s-busy" helfen moechte - siehe bitte meinen naechsten Thread "Dialstatus konfigurieren".

    Vielen Dank schon mal an Dich Stefan ! :)
     
  5. HobbyStern

    HobbyStern Aktives Mitglied

    Registriert seit:
    5 Dez. 2005
    Beiträge:
    1,837
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Beruf:
    vorhanden
    Ort:
    Ruhrgebiet
    Kein Problem, schön das Du es hinbekommen hast - auch wenn mir nicht so ganz klar ist warum das ein Problem produziert und nicht einfach "geschluckt" wird - aber ein Workaround hierzu wäre ein SIP DEBUG um zu sehen was da genau passiert - ich würde dazu raten.

    Grüsse, Stefan
     
  6. baschdieh

    baschdieh Mitglied

    Registriert seit:
    15 Sep. 2005
    Beiträge:
    416
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Mmm - aufgrund der Tatsache, dass ich in einem anderen Thread ebenfalls weitere Probleme hatte, sprich die Agenten die sich dort in diese Nachtschaltung einbuchen, konnten keinen Transfer durchführen. Auf der Seite von Digium habe ich dann einen bereits erkannten Bug gefunden, dieser Bug ist wohl seit der Asterisk 1.2.7.1 in der channel.c.

    Der Bug (bei einem Transfer der Agenten) führt wohl zu einem Core Dump (auch wenn ich kein *.dump file liegen habe).

    Jedenfalls habe ich in der channel.c, wie beschrieben zwei Zeilen gelöscht und recompiled.

    Nach diesem "Löschvorgang dieser Zeilen" konnte ich sogar die "Nachtschaltung" auf die Snom Funktionstaste legen. Seitdem scheint alles sehr stabil zu funktionieren.

    Weitere Infos zum Bug:
    http://bugs.digium.com/bug_view_page.php?bug_id=8064&history=1#history

    Gruss,
    basty