UserID beim eingehenden Gruppenanruf auslesen

  • Hallo in die Runde,

    ich war die letzten Tage beim Module-Creator Training und wollte direkt mein neu erlerntes wissen einsetzen, aber nun komm ich schon nicht weiter.

    Ich baue mir gerade ein Modul welches mir bei einem eingehenden Anruf auf eine Gruppe div. Informationen in eine SQL Datenbank schreibt, damit ich diese dann extern weiterverarbeiten kann.

    Es gibt eine Gruppe mit 5 Mitgliedern die sich mal einzeln und mal parallel in der Gruppe anmelden. Wie bekomme ich herraus wer am Ende das Gespräch der Gruppe entgegen genommen hat. Aktuell bekomme ich nur die Account-ID der Gruppe zurück.

    Alternativ würde ich mir die Daten auch aus der Asterisk DB ziehen, aber ich bin mir noch nicht sicher wie ich den Anruf dort finde :(

    Liebe Grüße,

    Robin

  • Der Einfachste weg, ohne auf Java Code zurückzugreifen wäre wie folgt.

    Du brauchst mindestens: Die AccountID, der Gruppe die Angerufen wird (GetCallee ==> Call), sowie die CallUUID (GetCurrentChannel ==> CALL)

    Du machst einen EinstiegsPunkt im CallProcessing, für Eingehende Anrufe

    Wenn ein Anruf reinkommt, holst du dir diese zwei Informationen und machst einen Fork (Basic Components) in eine zweite Funktion, um den Call nicht aufzuhalten.

    Die zweite Funktion, welche nimmt die AccountID, und CallUUID als Input.

    Zuerst beobachtest du den Anruf mithilfe der UCI 3.0 (Call.getCallState ==> UCI 3.0), du musst keinen User Mitgeben, lediglich die CallUUID.

    Du beobachtest den Anruf, bis der "State" auf "CONNECTED" steht.

    (Rücksicht nehmen, was zu tun wäre, wenn der Anrufer aufhängt, ohne Abgenommen zu werden ==> HANGUP)

    Sobald er auf CONNECTED steht:

    Hol dir die aktiven GruppenMitglieder der Gruppe (GetUsersofGroup ==> STARFACE Entities)

    Danach prüfst du für jedes Gruppenmitglied (foreach ==> Basic Components) den Status des Calls mithilfe des UCI 3.0 (Call.getCallState ==> UCI 3.0)

    Dort gibst du die AccountID vom User (foreach_entry, und den Channelname) mit, und erhälst dort einiges an Informationen zurück.

    Nur beim Gruppenmitglied, welches Abgenommen hat, liefert dir die Funktion alle Rufinformationen.

    Du kannst dir vorstellen, diese Funktion, ist wie wenn du im UCC-Client über die Besetztlampenfelder von anderen Howerst, du siehst nur Minimales an Info.

    Wenn du weisst, welchem Gruppenmitglied der Anruf gehört, kansnt du ihn weiter beobachten, bis dieser auf HANGUP ist.

    Ich hoffe ich konnte dir damit helfen.

    MfG

    Fabian

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!