Wie kann ich ein Modul parallel ablaufen lassen?

  • Hallo,
    Von einem Partner habe ich ein Modul (GetCallerNameFromInternet) erhalten das eine Rückwärtssuche mit der eingehenden Nummer auf dem Internet durchführt. Ohne Gewähr, aber es funktioniert im Grossen und Ganzen doch schon sehr gut.


    Ich habe aber im Ablauf ein kleines Problem:
    - Eingehende Anrufe werden dem Modul "Ansage vor Melden" übergeben, welches eine Ansage abspielt.
    - Danach wird das Modul GetCallerNameFromInternet aufgerufen (Modul type: Call-Processing, Activation on incoming calls to user/group).
    - Die Internetsuche in diesem Modul dauert seine Zeit, so zwischen 5 und 10 Sekunden.
    - Während dieser zeit hört der Anrufende nichts, kein Freizeichen.
    - Erst nachdem das Modul GetCallerNameFromInternet abgeschlossen hat, ertönt ein Freizeichen.


    Diese Wartezeit ohne Freizeichen ist für die Anrufenden etwas verwirrend.


    Gibt es eine Möglichkeit diese Wartepause zu verkürzen (z.B. das Modul parallel ablaufen zu lassen), oder wenn das nicht möglich ist, während der Wartezeit zumindest eine Wartemusik abspielen zu lassen?


    Ist "fork()" die Lösung? Wenn ja, wie setze ich das ein?


    Eine Andere Möglichkeit wäre ja auch ev. GetCallerNameFromInternet während der Ansage vor Melden durchlaufen zu lassen? Würde das gehen?


    In jedem Fall wäre ich für Tips dankbar.


    Danke


    Daniel

  • Ich würde es mal mit dem Befehlen StartBackgroundPlayback vor der Abfrage und StopBackgroundPlayback nach der Abfrage versuchen. Da kann man wohl eine Musik einspielen lassen, während das Modul die Befehlabfolge weiter macht. Ich habe es selber aber noch nie ausprobiert. Die Befehle findet man unter Audio. Kannst ja mal bescheid geben wenn es funktioniert.


    MfG


    Stephan

  • Ich würde es mal mit dem Befehlen StartBackgroundPlayback vor der Abfrage und StopBackgroundPlayback nach der Abfrage versuchen.


    Hallo Stephan,


    Danke für den Tip. Das werde ich bei Gelegenheit mal probieren. Ich arbeite grad an einem anderen Modul wo das eventuell praktisch ist.


    Tatsächlich konnte ich mein Problem schon auf zwei verschiedene Arten lösen, wobei ich mich dann schliesslich für Lösung 2 entschieden habe :)
    Lösung 1: fork()
    Fork und delayed fork hat eigentlich recht gut funktioniert. Dazu wird die ursprüngliche "Target Function" durch eine eigene Funktion ersetzt die dann die ursprüngliche Funktion fork'ed.
    Lösung 2: Get the Internet running as it should!!
    Die Verzögerung der Internetabfrage beruhte auf einer nicht optimalen DNS Einstellung der SF. Eine einfache Korrektur der Namensauflösung hat den Lookup enorm beschleunigt. In meinem Fall habe ich einen schnelleren DNS Server gewählt.


    Manchmal liegt es nicht an der SF, sondern an etwas anderem :)


    Daniel

Jetzt mitmachen!

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