Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Vraag


  • orf
  • Registratie: Augustus 2005
  • Laatst online: 10:51
Ik ben bezig met de configuratie van onze (cloud) telefooncentrale. Die centrale heeft een API, waarmee je dynamisch een belplan kan configureren:


Inkomende beller -> call naar mijn script -> response -> afhankelijk daarvan telefoon van medewerker laten rinkelen


Door te koppelen met ons CRM kan ik de beller al doorschakelen naar het juiste toestel, maar het is ook van belang dat iemand op z'n plek zit om de telefoon op te nemen. Dat wil ik doen aan de hand van of de computer actief is. Als iemand van z'n plek wegloopt, lockt hij/zij altijd z'n computer.

Met Powershell kan ik dit na wat trial en error opvragen als ik voldoende rechten heb en de juiste services aanstaan op de client:

code:
1
2
3
4
5
6
7
8
$computer = "XXXXX"
$User = Get-WmiObject -Class Win32_ComputerSystem -ComputerName $Computer | Select-Object -ExpandProperty UserName -ErrorAction Stop
echo "$user is ingelogd op de computer $Computer"
If ((Get-Process logonui -ComputerName $Computer -ErrorAction SilentlyContinue) -and ($user))
{
    $Locked = $True
    echo "computer $computer is locked"
}


Het probleem is hoe ik dit aanroep vanuit mijn script. Mijn script is in PHP en draait op een Linux server in het domein. Ik heb al even gekeken naar Powershell voor Linux, maar dan worden Windows API's niet ondersteund.

Wat zou hiervoor een goede oplossing zijn? Een losse Windows VM draaien in het domein, met daarop PHP (standalone of met IIS), om deze Powershell commando's aan te roepen? PHP draaien op onze domaincontroller (Windows Server 2012)? Misschien een andere manier om dit op te vragen? Het moet zo ongeveer realtime zijn, omdat mijn script direct terug moet kunnen geven welke telefoon moet gaan rinkelen.

Hele andere ideeën of suggesties zijn ook welkom.

Beste antwoord (via orf op 28-05-2018 15:11)


  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 28-11 16:59

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

CH4OS schreef op maandag 28 mei 2018 @ 10:36:
Dan zul je alsnog de status van de PC moeten ophalen.
Nehoor, gewoon een scheduled task op de pc maken die start als het proces "logonui" actief wordt. De actie "workstation lock" is een build-in trigger voor een task zie ik net.

Dit soort zaken moet je gewoon zo simpel mogelijk, en bij voorkeur clientside gaan regelen.

[ Voor 10% gewijzigd door Question Mark op 28-05-2018 12:08 ]

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B

Alle reacties


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Kun je geen busy indicator programmeren op de toestellen? Lijkt mij veel effectiever en fijner voor de medewerkers; ze kunnen dan immers ook aangeven telefonisch niet bereikbaar te zijn, omdat men ergens op wil focussen bijvoorbeeld. Ik zou dat niet laten afhangen van de status van de PC. Ja, een extra handeling, maar went snel.

Mocht iemand in gesprek of busy zijn, kun je dan het gesprek naar een huntgroep doorsturen (waar de directe collega's in zitten) en dan een vast stramien langs laten gaan of het gesprek aanbieden bij degene die het langst geen gesprek heeft gehad.

[ Voor 40% gewijzigd door CH4OS op 28-05-2018 10:17 ]


  • orf
  • Registratie: Augustus 2005
  • Laatst online: 10:51
CH4OS schreef op maandag 28 mei 2018 @ 10:14:
Kun je niet een toets programmeren waarbij men kan aangeven of men telefonisch bereikbaar is? Lijkt mij veel effectiever en fijner voor de medewerkers; ze kunnen dan immers ook aangeven telefonisch niet bereikbaar te zijn, omdat men ergens op wil focussen bijvoorbeeld. Ik zou dat niet laten afhangen van de status van de PC.
Op zich is die mogelijkheid er al met een DND (Do Not Disturb) toets op de telefoon, maar in de praktijk vergeet iedereen dat te doen. Daardoor krijg je dat mensen vergeten om dat aan te zetten als ze weglopen naar de WC o.i.d., maar ook vergeten dat weer uit te zetten als ze weer op hun plek zitten.

De PC wordt juist wel altijd gelockt als iemand wegloopt. En als je echt niet gestoord wil worden, kan je alsnog de telefoon op DND zetten.

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Maar dat is natuurlijk een gedragsdingetje wat je nu dus technisch wilt oplossen. ;) Naar mijn mening dan.

Als ik [google=remote powershell php], vind ik an sich al vrij snel resultaten. Daarin geven ze eigenlijk al vrij snel aan om een webservice op te zetten op de powershell machine (je kunt ook op Windows PHP draaien, die op zijn beurt shell_exec uitvoert, waarbij Powershell tot de mogelijkheden behoort). Die webservice roep je dan weer aan vanuit de Linux-omgeving.

  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 28-11 16:59

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

Zijn die telefoons niet automatisch op DND te zetten, als een pc gelocked wordt?

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Dan zul je alsnog de status van de PC moeten ophalen.

Acties:
  • Beste antwoord

  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 28-11 16:59

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

CH4OS schreef op maandag 28 mei 2018 @ 10:36:
Dan zul je alsnog de status van de PC moeten ophalen.
Nehoor, gewoon een scheduled task op de pc maken die start als het proces "logonui" actief wordt. De actie "workstation lock" is een build-in trigger voor een task zie ik net.

Dit soort zaken moet je gewoon zo simpel mogelijk, en bij voorkeur clientside gaan regelen.

[ Voor 10% gewijzigd door Question Mark op 28-05-2018 12:08 ]

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Question Mark schreef op maandag 28 mei 2018 @ 12:06:
Nehoor, gewoon een scheduled task op de pc maken die start als het proces "logonui" actief wordt. De actie "workstation lock" is een build-in trigger voor een task zie ik net.
Tja, of je ophaalt of een machine (un)locked is, of een machine verteld welke status hij heeft, dat is gewoon links- of rechtsom. ;)

  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 28-11 16:59

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

Nee, periodiek ophalen (pull) is een minder nette methode dan een "push" vanuit de client.

Met pollen heb je altijd te maken met intervallen, waarin een gepolde situatie kan afwijken van de werkelijke situatie, om nog maar te zwijgen van de extra resources die dit kost.

Als je dit vanuit een client regelt, gaat hij alleen een push versturen als er ook daadwerkelijk een verandering in zijn situatie plaatsvind.

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


  • orf
  • Registratie: Augustus 2005
  • Laatst online: 10:51
Question Mark schreef op maandag 28 mei 2018 @ 12:06:
[...]

Nehoor, gewoon een scheduled task op de pc maken die start als het proces "logonui" actief wordt. De actie "workstation lock" is een build-in trigger voor een task zie ik net.

Dit soort zaken moet je gewoon zo simpel mogelijk, en bij voorkeur clientside gaan regelen.
Het op laten lossen door de client lijkt me het beste inderdaad!
Ondanks het ontbreken van Powershell kennis, kon ik dit snel en makkelijk toevoegen:

logon.ps1
code:
1
2
3
4
5
6
$computerName = Hostname
$url = "https://example.org/clientstatus.php?status=logon&computer=" + $computerName

$request = [System.Net.WebRequest]::Create($url)
$response = $request.GetResponse()
$response.Close()


Nu zijn de verantwoordelijkheden mooi gescheiden. Mijn webserver houdt alleen maar een log bij van computers die zijn aangemeld of afgemeld en ik heb geen gekke dingen nodig als Powershell for Linux, of een aparte Windows service die vast weer stuk gaat na een tijdje.
Pagina: 1