Change extension username via CFD

Hugo_Sycom

Gold Partner
Advanced Certified
Joined
Jan 12, 2023
Messages
43
Reaction score
13
Hello,

we have some customers that are very old school and only use deskphones, like yealink T54W or now T74W.
they don't use smartphone app or 3CX web app too.

customers would like to handle manually the out of office time or break time. For that we built from 3CX store the scripts to set departments out of office or in break mode.
it works great, the user has a key with a speed dial that dial the script number and that switch the department into the desired status.

Now the request from customer is, how can they see easily on yealink device's screen in which "mode" is the system?
My idea is to set a BLF key from a Dummy extension and then at the end of CFD execute a command to update the name of this extension,
like after code to set out of office, then change extension 444 name to OOH, after script to set in office, change extension 444 name to INO, etc...

do you think we can achieve this goal with CFD and "set DN property" or something similar?
or have you any suggestion to achieve this goal by another way? i also can imagine a kind of BLF key that will switch led to red when system is in OOH or in break,
but i don't see how to define that dummy extension stay visible as "busy in a call" without be really in a call.

thank you for your help or ideas
BR
Hugo
 
Even if you change the user's name, the BLF won't update until next provision cycle (every 24h.) The BLF "label" is set on the phone.
 
@Hugo_Sycom
the BLF won't update until next provision cycle
...or the CFD app, which changes the username, searches for every 3CX user on every connected IP phone in all BLFs to see if this dummy user exists and then provisions that phone as well.
This only works in small environments. Another problem is that a phone can only be provisioned if it's not in use (no call, handset on the hook, etc.).
This is practically impossible.
 
  • Like
Reactions: Evolute IT
Hello,
Thank you for your answers,
i found a solution using the DN property and setting the BLF with some static text, it works but is not optimal because end user can't customize the BLF by himself.

I'm thinking instead to have visual indicator, i can imagine creating a script that will get the office hours status ( open, out of office, break) and then play a prompt message informing the user "office is Open ", "office is Closed".

Does anyone know the C# command how to get the Office status of the system?
thank you
 
and .. play a prompt message informing the user "office is Open ", "office is Closed".
This is possible: Use a CFD app or a call script that queries one or more 3CX entities (extension, IVR, RG, queue, etc.) or a department or the department assignment within the app itself and then announces the status of the department(s) to the caller of the program. We have built something like that: for every department it plays the name and the status (in or out office or break hours or on holiday).

Does anyone know the C# command how to get the Office status of the system?
If it's a 3CX v20: there and no 'Office status of the system'. Every department has it's own

rough sample code:
C#:
private string AddRouteAndDivertReason(DN routedn)
{
    string retval;
    var timeBasedroute = routedn.GetTimeBasedRoutingInfo();
    switch (timeBasedroute.reason)
    {
        case CallControlAPI.DivertReason.OfficeHours:
            // ... retval = '...';         
            break;
        case CallControlAPI.DivertReason.OutOfOfficeHours:
            // ... retval = '...';         
            break;
        case CallControlAPI.DivertReason.BreakTime:
            // ... retval = '...';         
            break;
        case CallControlAPI.DivertReason.Holiday:
            // ... retval = '...';         
            break;
    }
    return retval;
}

// main ....
var ps = MyCall.PS as PhoneSystem;
foreach( var x in ps.GetAll<Group>() )
{
    switch (x.CurrentGroupHours)
    {
        case GroupHoursMode.Default:
            // do something and then   AddRouteAndDivertReason(x)
            break;
        case GroupHoursMode.ForceOpened:
            // do something and then   AddRouteAndDivertReason(x)
            break;
        case GroupHoursMode.ForceClosed:
            // do something and then   AddRouteAndDivertReason(x)
            break;
        case GroupHoursMode.ForceBreak:
            // do something and then   AddRouteAndDivertReason(x)
            break;
        case GroupHoursMode.ForceHoliday:
            // do something and then   AddRouteAndDivertReason(x)
            break;
        default:
            // error ...
            break;
        ...
 
Last edited:
  • Like
Reactions: KyriacosS_3CX

Members Online Now

Forum statistics

Threads
111,832
Messages
589,284
Members
164,662
Latest member
DejanMDS