• Hallo Zusammen,


    ich möchte gerne etwas aufzeichen mit Records, das klappt auch ganz gut nur möchte ich etwas "mehr" machen und suche gerade eine Lösung wie das Modul erst dann weiter macht wenn der Anruf beendet ist nun komme ich gerade nicht weiter und hoffe auf hilfe von euch.


    Wenn ich das Records auf Syncron stelle dann kommt garkein freizeichen mehr und es klingelt auch das telefon nicht mehr.
    Wenn ich Records auf Asyncon stelle und eine while schleife mache ob die Leitung noch aktiv ist dann habe ich ein freizeichen aber das Telefon klingelt nicht mehr.


    Beides ist irgendwie die richtige richtung aber nun weiss ich nicht mehr weiter.


    Jemnand eine Idee?


    Danke
    Gruß


    Jens


  • Hast du deine While-Loop in einem anderen Thread (Fork -->) gestartet, der dann zum Beispiel den Rufstatus des Angerufenen oder isChannelStillUp auf dem Rufkanal zyklisch prüft, und nach der entsprechenden Änderung die Verarbeitung weiterführt?

    Quality Assurance


    STARFACE GmbH | Adlerstraße 61 | 76137 Karlsruhe | www.starface.com

  • Hallo,


    ich mache das einfach in dem gleichem "Schritt" mh ja stimmt, ich könnte forken.


    Das teste ich mal, danke!


    Gruß
    Jens


  • Wenn du es nicht nebenläufig machst, blockiert halt die Ausführung des Moduls bis deine Schleife zuende ist :)

    Quality Assurance


    STARFACE GmbH | Adlerstraße 61 | 76137 Karlsruhe | www.starface.com

  • Ich forke nun in eine andere funktion, hier habe ich eine schleife und prüfe immer ob der channel noch offen ist, leider sagt er immer direkt das der channel zu ist, das versteh ich nicht, muss ich irgendwie den Channelstatus vererben in die Funktion?

  • Hallo Jremme


    Du kannst auch einfach Prüfen, ob die Record-Datei noch in Verwendung ist.


    lsof -n [Datei] | wc -l


    Wenn Nummer > 0 ==> Datei in Verwendung.


    (Vorsicht! während des Recordvorganges liegt die Datei noch nicht als .wav im Verzeichnis, sondern in zwei Einzelteilen [Recordname].in [Recordname].out)


    Zitat

    Ich forke nun in eine andere funktion, hier habe ich eine schleife und prüfe immer ob der channel noch offen ist, leider sagt er immer direkt das der channel zu ist, das versteh ich nicht, muss ich irgendwie den Channelstatus vererben in die Funktion?


    Das Problem ist, wenn du auf dem Fork läufst, und das HauptThread, durch welcher das Modul ausgelöst wurde mit dem Modul fertig ist, verschwindet der Call aus dem context des Moduls. Somit gibt das isChannelUp ein False zurück.


    Die STARFACE hat vor einer weile mal eine Modulfunktion entfernt, welche dir den Status eines beliebigen Calls angeben konnte.
    Sowas ähnliches gibt es aboer noch im Tab UCI 3.0 ==> Call.getCallState.
    Wenn du keine eigenen Bausteine Bauen kannst/willst kannst du sonst die CallUUID via einem asterisk Command auslesen, und damit versuchen den Ruf verfolgen.


    Aber ich glaube in deinem Fall ist es ja ausreichend, zu wissen, ob der Record noch in Verwendung ist, oder nicht.


    MfG


    Fabian

  • Call.getCallState braucht auch einen User, ich weiss allerdings noch nicht welcher User das Telefonat nimmt da es auf eine Gruppe geht :(


    Ich lass das einfach sein :)


    Danke für die Hilfe.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!