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

Warteschlangen joinempty=strict

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von konabi, 17 Jan. 2007.

  1. konabi

    konabi Mitglied

    Registriert seit:
    11 Apr. 2005
    Beiträge:
    424
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hallo,

    ich habe folgende Aufgabenstellung:

    Eine kostenpflichtige Warteschlange in der nur max 2 Anrufer gelangen dürfen.

    Das kann ich mit

    maxlen=2

    in der queues.conf lösen.
    In der Warteschlange befinden sich mehrere Mitglieder als SIP Clienten
    (member => SIP/123)

    Wenn kein Member verfügbar ist, darf kein Anruf in Warteschlange gelangen,
    also setze ich:

    joinempty=strict

    Nun ist es aver so:

    Wenn kein Mitglied der Warteschlange angemeldet ist, wird der Ruf nicht entgegengenommen.
    Wenn alle Mitglieder in der Pause sind (PauseQueueMember(,SIP/123) wird der Ruf nicht entgegengenommen.

    Wenn ABER beispielsweise alle Mitglieder der Warteschlangen sprechen, gelang ein eingehender Ruf trotzdem in die Warteschlange, und das soll es nicht, da ja das Warten den Anrufer Geld kostet.

    Queue Status:

    1. Member ist nicht angeneldet:
    SIP/604 (Unavailable) has taken no calls yet

    2. Member ist in Pause:
    SIP/603 (paused) (Not in use) has taken no calls yet

    3. Member spricht gerade:
    SIP/602 (In use) has taken no calls yet

    4. Member ist frei:
    SIP/602 (Not in use) has taken 1 calls (last was 2 secs ago)


    Hat da jemand eine andere Lösung?



    Danke Sven
     
  2. Hupe

    Hupe Aktives Mitglied

    Registriert seit:
    8 Apr. 2004
    Beiträge:
    2,586
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Du könntest z.B. die Agents bei An- und Abmelden mitzählen, und bevor die Anrufer in die Queue kommen, mittels GROUPCOUNT überprüfen, ob noch ein Agent frei ist.
     
  3. konabi

    konabi Mitglied

    Registriert seit:
    11 Apr. 2005
    Beiträge:
    424
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hallo Hupe,

    ich verwende keine Agents, sonden nur feste Mitglieder als SIP Clienten.

    Diese werden fest der Warteschlange zugeordnet alo keine An - und Abmeldung mit AddQueueMember oder RemoveQueueMember.


    Wenn zwei Anrufer in die Warteschlange sind kommt auch kein dritter mehr rein. Das funktioniert.

    Problem ist daß ein sprechendes, also besetztes Warteschlangenmitglied
    (in use) nicht als "nicht verfügbar" erkannt wird.

    Also wenn
    SIP/604 (Unavailable) oder SIP/603 (paused) oder SIP/602 (In use) dann ruf nicht annehmen.


    Oder einfacher wenn status von mindestens ein Warteschlangenmitglied ==
    (Not in use) dann betrete die Warteschlange.

    Aber wie?

    Gruß Sven

     
  4. Hupe

    Hupe Aktives Mitglied

    Registriert seit:
    8 Apr. 2004
    Beiträge:
    2,586
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Naja, an und abmelden tun sie sich ja trotzdem (wobei in die Pause gehen und wiederkommen ja das selbe sind). Und wenn Du die maximal verfügbaren Channels zählst, dann kannst Du diese auch entsprechend begrenzen.
     
  5. konabi

    konabi Mitglied

    Registriert seit:
    11 Apr. 2005
    Beiträge:
    424
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    #5 konabi, 23 März 2007
    Zuletzt bearbeitet: 23 März 2007
    Hallo Hupe,
    ich greife diesen Thread noch einmal auf.
    Die An- und Abmeldungen der Agenten zählen ist kein Problem.
    Auch die eingehenden Rufe auf den Channel der in die Warteschlange geht zählen ist kein Problem.

    Ich könnte dann auch steuern daß die Anzahl der reinkommenden Rufe kleiner sein muß als die Anzahl der Agenten.

    Nur habe ich das Problem das es sein kann daß alle Agenten sprechen. Queuememberstatus (in use). In diesem Fall kommt der Ruf in die Warteschlange und der Anrufer muß warten, was aber nicht sein darf, da dies eine kostepflichtige Hotline ist.


    Also, gibt es eine Möglichkeit dern Status der Agenten vor Eintritt in der Warteschlange zu prüfen? Dann könnte ich Anhand des Staus prüfen ob der Ruf in die Warteschlange geht oder ob der Ruf abgewiesen wird.


    Code:
    exten => 1008,1,Goto(check-agents,s,1)   
    exten => 1008,n,Set(CALLERID(name)=0900 Deutschland)
    exten => 1008,n,Ringing
    exten => 1008,n,Queue(germany-0900)
    
    
    [check-agents]
    ?????
    
    
    Danke für Deine Hilfe.

    Sven