Presence Timers

  1. 11 years ago

    Hi,

    I really love the product, whats stopping me from using it in production is the fact the presence status does not have a timer set...Can you add a feature for presence timers, for example when someone is on lunch or a break a timer is started & is shown on the button. This way we can see who is on lunch & when they are coming back.....Also we can see how long an agent has been waiting for a call, i.e. available presence timer......i know not all users would want this, so a timer on/off setting within the config files would be best ?...

    Thanks very much....i'll happily but this for all my clients once we are able to do see timers

    many thanks !

  2. admin

    28 Dec 2012 Administrator

    Timers are a problem for presence, as fop2 is actually monitoring Asterisk events, and not its own. Also, there is not much screen real estate to add *another* timer into a button. You might think there is space between the label and information icons, but there is not as all the width will be used by the label itself.

    And as presences can be tied to specific asterisk functions (like DND or Queue Pauses), so the presence *changes* when you dial a feature code in your phone, having a builtin timer reacting to external events is not an easy task and it might lead to problems/confusions. Timer might be lost if you restart the fop2 server, but presence can stick if asterisk is not, leading to funny situations/incorrect data.

    If you want to pause queue members and see timers for them, you can use Asternic Call Center Stats Pro that will display timers for paused members (and reasons).

    Best regards,

  3. Thanks.......

    I have requested a trial for the Pro version so i can test it out (sent from james)

    Many Thanks

  4. Hi,

    The problem with using the Pause/Unpause feature - I want my agents to use that , and the only way i can give them access to this feature is with the Permissions : QueueAgent . But then they can also remove or add themselves to any Queue they want, and that is too much power for them to have.

    Why not having Presence attached to the Pause/Unpause command, So when an agent set his presence to Break it will also trigger the Pause command , and when an agent set it back to available it will trigger the Unpause command.

    Also i am using asternic Version 1.9.2 Maybe that's why i don't have any room to see the Pause reason in Realtime...

  5. The Problem:

    http://img542.imageshack.us/img542/651/problemj.png

    The Solution:

    http://img89.imageshack.us/img89/2387/solution.png

  6. admin

    1 Feb 2013 Administrator

    This can be done by using FOP2Callbacks.pm and custom contexts on your dialplan. Unfortunately I cannot provide you with a generic/fit all dialplan context, as every setup is different. The agent to be paused depends on your setup, if you use Local channeles, or Agent channels , or direct device SIP channels.

    In FOP2Callbacks.pm replace the setastdb event with this:

        if($command eq "setastdb") {
    
            # Pause Local/xxxx@from-internal/n
    
            $return = "Action: Originate\r\n";
            $return .= "Channel: Local/".$parameters[2].":".$parameters[3];
            $return .= "\@custom-logpause\r\n";
            $return .= "Application: Noop\r\n";
            $return .= "\r\n";
            push @allreturn, $return;
            return @allreturn;

    And then have a custom-logpause context similar to this:

    [custom-logpause]
    exten => _X.,1,Verbose(Exten ${EXTEN})
    exten => _X.,n,Set(ACLIDNUM=${CUT(EXTEN,:,1)})
    exten => _X.,n,Set(PAUSECODE=${CUT(EXTEN,:,2)})
    exten => _X.,n,Set(MIAGENTE=Local/${ACLIDNUM}@from-queue/n)
    exten => _X.,n,Verbose(MIAGENTE  = ${MIAGENTE})
    exten => _X.,n,Verbose(ACLIDNUM  = ${ACLIDNUM})
    exten => _X.,n,Verbose(PAUSECODE = ${PAUSECODE})
    exten => _X.,n,GotoIf($[ "x${PAUSECODE}" = "x" ]?unpause)
    exten => _X.,n(pause),QueueLog(NONE,NONE,${MIAGENTE},PAUSE,${PAUSECODE})
    exten => _X.,n,PauseQueueMember(,${MIAGENTE},,${PAUSECODE})
    exten => _X.,n,Set(DB(PAUSECUSTOM/${ACLIDNUM})=${PAUSECODE}:${EPOCH})
    exten => _X.,n,Goto(end)
    exten => _X.,n(unpause),QueueLog(NONE,NONE,${MIAGENTE},UNPAUSE)
    exten => _X.,n,UnPauseQueueMember(,${MIAGENTE})
    exten => _X.,n,NoOp(${DB_DELETE(PAUSECUSTOM/${ACLIDNUM})})
    exten => _X.,n(end),Verbose(Fin log pausa)
    exten => _X.,n,Hangup
    

    Modify to suit your config.

or Sign Up to reply!