[ASP] Chatapplicatie en netjes afsluiten sessie

Pagina: 1
Acties:
  • 705 views sinds 30-01-2008
  • Reageer

  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 04-11 09:21
Voor onze website heb ik een ASP script aangeschaft welke bedoeld is om te kunnen chatten met bezoekers van je website.

Iedere medewerker heeft een IE venster openstaan, welke bijhoudt of een klant contact wilt opnemen. Het script werkt verder prima, op 1 ding na. Ik heb hier al contact over gehad met de fabrikant, maar die kan daar helaas niets aan veranderen.

Het IE venster die een medewerker open heeft staan bevat een button "Online" en "Offline". Als men op "Offline" klikt dan wordt netjes in de database (en dus ook de website) aangegeven dat de status van die medewerker op "niet aanwezig" staat.

Echter als men op het kruisje rechtsbovenin klikt, dan sluit het venster wel, maar de status van de medewerker blijft op "aanwezig" staan. Dit geldt ook als de medewerker gewoon de computer afsluit.

Erg vervelend, want de klant denkt contact te maken met een medewerker, wat nooit lukt, want die medewerker is niet meer online.

Ik vraag mij af of dit uberhaupt op te lossen is. In de tabel van medewerkers wordt per medewerker aangegeven of deze online of offline is. Als er dus verkeerd is afgesloten dan blijft de waarde "Online" op 1 staan.

Ik zit te denken aan de volgende ideeen:

Een script maken die op de chatpagina checkt of iedere medewerker wel echt aanwezig is en de waarde "Online" in de database voor iedere medewerker aanpast. (wordt dus getriggerd bij iedere bezoeker die de chatpagina bezoekt.) Hoe weet ik nog niet.

Het hele idee van het IE venster van de medewerker veranderen. Hier iets van een eigen app van maken i.p.v. een IE venster. Kan mij voorstellen dat je dan bepaalde zaken kan opvangen, zoals "De pc wordt afgesloten, sluit ook de chatsessie".

Iemand een idee ?

Pay peanuts get monkeys !


  • Flard
  • Registratie: Februari 2001
  • Nu online
je zou ook nog in Global.asx een Session_OnEnd kunnen maken, dan zie je het 20 minuten te laat ;)

Of je zou in de HTML van de pagina een OnUnload handler toe kunnen voegen, die even laat weten dat hij offline gaat.

Wat betreft je online check:
Je zou ook iets van een 'ping'-veld in je database kunnen maken. En op je chatpagina elke x seconden dat pingveld updaten met de huidige tijd.
Om te kijken of een medewerker online is kun je dan gewoon kijken welke medewerkers een ping hebben van minder dan x seconden.

  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
Zoek eens op beforeunload / onbeforeunload met Google, kom je vrij veel voorbeelden tegen om dit met javascript af te vangen.

  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 04-11 09:21
Ja, beforeunload had ik al bekeken. Daarmee kan ik wel een waarschuwing tonen aan de medewerker dat hij/ zij het venster niet zo mag sluiten.

Het helpt echter niets tegen als de medewerker de computer aan het einde van de dag gewoon afsluit, zonder zichzelf op offline te zetten.

Ik bedenk mij nu dat ik wellicht nog iets kan bedenken dat het "offline" script aanroept op het moment dat de pc wordt afgesloten, echter heb ik dan weer een probleem met een aantal medewerkers die de laptop gewoon dichtklappen (gaat in slaapstand).

Pay peanuts get monkeys !


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 08:43

sopsop

[v] [;,,;] [v]

Als je nou gewoon dat 'bitje' dat bijhoudt of een medewerker al dan niet online is, wijzigt in een datum/tijd veld. Je laat dan je chatprogramma iedere [bepaalde interval] een nieuwe datum/tijd in de tabel wegschrijven. Om te kijken of een medewerker online is, check je of [huidige tijd] > [laatst geregistreerde tijd] + [interval] is.

=edit= dit is hetzelfde als die ping optie hierboven :)

[ Voor 8% gewijzigd door sopsop op 07-11-2006 10:33 ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 01-12 15:52

Jaspertje

Max & Milo.. lief

is het ASP of ASPX trouwens, want dat is wel een verschil (zeker mbt oplossingen)

je zou met de onunload een popup kunnen oproepen die de gebruiker op offline zet, maar dat is misschien wel irritant.

Mag je zelf bij de code cq database van de chat app?

[ Voor 52% gewijzigd door Jaspertje op 07-11-2006 10:50 ]


  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 04-11 09:21
Het gaat hier gewoon om classic ASP. Ik heb volledige toegang tot de website en de chatapplicatie.

Ik ben nu bezig om het 'ping' verhaal uit te werken.

Pay peanuts get monkeys !


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 15:03
Dan moet je geen medewerkers hebben die gewoon hun PC aan laten staan en vervolgens vertrekken...

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20:39

TeeDee

CQB 241

djluc schreef op dinsdag 07 november 2006 @ 11:12:
Dan moet je geen medewerkers hebben die gewoon hun PC aan laten staan en vervolgens vertrekken...
Inderdaad. Gewoon je medewerkers 'opvoeden'.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 27-11 10:50

_Thanatos_

Ja, en kaal

Kun je het niet zo maken dat de client iedere minuut een pakketje moet sturen? Als ie dat niet meer doet (en de browser dus afgesloten is), is de medewerker offline/unavailable. Dat pakketje sturen je gewoon asynchroon doen, met AJAX dus.

日本!🎌


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 15:03
TeeDee schreef op dinsdag 07 november 2006 @ 11:14:
[...]
Inderdaad. Gewoon je medewerkers 'opvoeden'.
Dat is het ideaal inderdaad maar helaas niet de praktijk ;)

De bovenstaande oplossing is wel netjes en werkt redelijk fail-safe. Het enige nadeel is dat het een tijdje duurt tot de server merkt dat de client niet meer gereageerd heeft. Je moet dus een goede afweging maken tussen de load en de zekerheid dat iemand er wel is.

Sowieso is het wel verstandig om in de applicatie in te bouwen dat een klant doorverwezen wordt indien een medewerker niet beschikbaar is?

  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 04-11 09:21
Het is gelukt. :)

De 'ping' methode is nu actief en werkt tot nu toe prima.

Het volgende heb ik gedaan:

- Het chatvenster update zichzelf iedere 10 seconden, dit was al zo.

- Bij iedere update wordt nu de huidige tijd toegevoegd bij de juiste medewerker in de database

- Zodra de pc wordt afgesloten of men klikt het chatvenster op de verkeerde manier weg, dan wordt de huidige tijd niet meer geupdate in de database.

- De chatpagina op de website activeert bij iedere bezoeker op de achtergrond een script. Deze selecteert eerst alle medewerkers die ingelogd zijn. Vervolgens wordt per ingelogde medewerker gekeken of de huidige tijd meer dan 20 seconden verschilt met de tijd in de database. Als dat het geval is, dan betekent dat dat die persoon niet meer online is, en wordt de status van deze persoon omgezet naar offline.

Prima oplossing !

Pay peanuts get monkeys !

Pagina: 1