// Appel au chat et cobrowse Genesys
(function(d, s, id, o) {
var fs = d.getElementsByTagName(s)[0], e;
if (d.getElementById(id))
return;
e = d.createElement(s);
e.id = id;
e.src = o.src;
e.setAttribute('data-gcb-url', o.cbUrl);
fs.parentNode.insertBefore(e, fs);
})(document, 'script', 'genesys-js', {
src : "https://chatprd.inwi.ma/Ceritek/inwi.gcb.min.js",
cbUrl : "https://chatprd.inwi.ma/cobrowse"
});
var sessiondechat;
var identifiantinteraction;
// Variable qui permet d'ouvrir le formulaire d'évaluation à chaud ou pas.
var Ceritek_aevaluer;
// Compteur des messages échangés
var CeritekCompteurMessage = 0;
var ceritekatertTimer;
var fermetureTimer;
var fermetureEvalChat;
// Variable qui permet de déterminer le timeout de fermeture de session.
var alert_1 = '0';
var alert_2 = '0';
// Variable qui permet de savoir si sur un push le client a interragit ou pas.
var pushvalide = 'Non';
var TchatPush = 'Non';
var DateDebutChat = '';
var email;
var mdn;
// paramètre d'affichage
var _genesys = {
debug : true,
disableWebSockets : true,
onReady : [],
buttons : {
cobrowse : false,
chat : false
},
cobrowse : {
css: {
browser: true,
server: false
},
onReady : []
},
chat : {
// pour ne pas afficher le formulaire de saisie du client
registration : true,
onReady : [],
onReady : function(chat) {
chat.restoreChat().done(function(sessionChat) {
sessiondechat = sessionChat;
sessionChat.onSessionEnded(function(event) {
evalachaud(sessionChat);
// réinitialisation des compteur pour l'"val à chaud. Util si le client relance sa session chat sans fermer le navigateur.
CeritekCompteurMessage = 0;
alert_2 = 0;
Ceritek_aevaluer = false;
});
sessionChat.onAgentConnected(function(event) {
//alert(alert_1);
//Soufiane
//fermetureEvalChat = setTimeout(function(){fermetureEvalChat(sessiondechat);},30000);
Ceritek_aevaluer = true;
});
});
},
ui : {
onBeforeMessage : function(messageEl, messageText) {
// compteur pour le nombre d'échange entre le client et l'agent
CeritekCompteurMessage = CeritekCompteurMessage +1;
//alert(CeritekCompteurMessage);
// permet de savoir que le client a interagit avec le chat.
// vérifie que c'est un message agent
if ( messageEl.childNodes.length > 4 && messageEl.childNodes[1].innerHTML != 'Vous') {
Ceritek_aevaluer = 'true';
}
if ( messageEl.childNodes[1].innerHTML === 'Vous' ) {
pushvalide = 'Oui';
};
// Permet de d'envoyer la première alerte et declencher le deuxième compteur
if (alert_1 === '1' ){
alert_1 = '0';
//fermetureTimer = setTimeout(function(){fermetureTimeoutChat(sessiondechat);},30000);
clearTimeout(ceritekatertTimer);
}
// Permet de fermer la session après expiration du 2eme timeout
else if (alert_1 === '2' ) {
alert_1 = '0';
clearTimeout(ceritekatertTimer);
clearTimeout(fermetureTimer);
sessiondechat.leave();
} else
{
// si c'est un message agent déclencher le timer pour la fin de session
if (Ceritek_aevaluer && messageEl.childNodes[1].innerHTML != 'Vous') {
// si c'est un chat push et si pas encore de message client déclencher le timer chat push
if (pushvalide != 'Oui' && TchatPush === 'Oui') {
alert_1 = '0';
clearTimeout(ceritekatertTimer);
clearTimeout(fermetureTimer);
//ceritekatertTimer = setTimeout(function(){fermetureTimeoutChatPush(sessiondechat);},120000);
}
else
{
alert_1 = '0';
clearTimeout(ceritekatertTimer);
clearTimeout(fermetureTimer);
//ceritekatertTimer = setTimeout(function(){alertTimeoutChat(sessiondechat);},120000);
}
}
else
{
alert_1 = '0';
clearTimeout(ceritekatertTimer);
clearTimeout(fermetureTimer);
}
}
if (messageText === 'demande!! de!! cobrowse !!') {
startCobrowse(sessiondechat);
// Do not show the message in chat transcript.
return false;
} else if (messageText.substring(0, 14) === 'InteractionId=') {
identifiantinteraction = messageText.substring(14);
return false;
}
}
}
}
};
// démarrage du chat sans formulaire : pull
function startChatNoReg(Nom, Prenom, Email, MDN, PageWeb, Token, SiteWeb,
DateSysteme) {
// initialiser la variable pour l'evaluation
Ceritek_aevaluer = false;
DateDebutChat = Date.now() ;
alert_1 = '0';
clearTimeout(ceritekatertTimer);
clearTimeout(fermetureTimer);
// récupération des données attachées
this.Nom = Nom;
//if (this.Nom === '') { this.Nom = 'Prospect';};
this.Prenom = Prenom;
//if (this.Prenom === '') { this.Prenom = 'Prospect';};
this.Email = Email;
this.PageWeb = ''+PageWeb+'';
this.Token = Token;
this.MDN = MDN;
this.SiteWeb = SiteWeb;
this.DateSysteme = DateSysteme;
// Obtain the Co-browse API
_genesys.onReady.push(function(APIs, isTopContext) {
// démarrer le chat
APIs.chat.startChat({
registration: function(done) {
var $form = jQuery('
');
// bind done function to be called when the form is submitted
$form.on('submit', function() {
done({
FirstName: jQuery("#gcbChatFirstName").val(),
LastName : jQuery("#gcbChatLastName").val(),
PhoneNumber : jQuery("#gcbChatPhone").val(),
Question : jQuery("#gcbChatQuestion").val()
});
});
jQuery(document).ready(function() { });
$form.append('
Merci de renseigner vos informations et cliquer sur le bouton « Démarrer le tchat »
Vous serez connecté à lun de nos agents dans quelques instants.
Ce champ est obligatoire
Ce champ est obligatoire
Ce champ est obligatoireCe numéro est invalide
Ce champ est obligatoireCette question est invalide (une question doit contenir plus de 7 caractères)
');
//$form.append('');
$form.append('
');
//return form DOM representation: it will be displayed in the chat widget
return $form.get(0);
}
,
embedded : true,
userData : {
FirstName_Orig : this.Prenom,
LastName_Orig : this.Nom,
EmailAddress : this.Email,
PageWeb : this.PageWeb,
Token : this.Token,
PhoneNumber_Orig : this.MDN,
SourceChat : this.SiteWeb,
DateSysteme : this.DateSysteme,
// permet d'utiliser l'UCS pour l'identification
IdentifyCreateContact : '0',
TypeChat : 'TChat Client'
}
}).done(function(sessionChat) {
sessiondechat = sessionChat;
sessionChat.onSessionEnded(function(event) {
evalachaud(sessionChat);
// réinitialisation des compteur pour l'"val à chaud. Util si le client relance sa session chat sans fermer le navigateur.
CeritekCompteurMessage = 0;
alert_2 = 0;
Ceritek_aevaluer = false;
});
sessionChat.onAgentConnected(function(event) {
//alert(alert_1);
//Soufiane
//fermetureEvalChat = setTimeout(function(){fermetureEvalChatFunc(sessiondechat);},480000);
Ceritek_aevaluer = true;
});
});
});
}
// démarrage du chat push
function startChatPush(Nom, Prenom, Email, MDN, PageWeb, Token, SiteWeb,
DateSysteme) {
// initialiser la variable pour l'evaluation
TchatPush = 'Oui';
Ceritek_aevaluer = false;
DateDebutChat = Date.now() ;
alert_1 = '0';
clearTimeout(ceritekatertTimer);
clearTimeout(fermetureTimer);
// récupération des données attachées
this.Nom = Nom;
//if (this.Nom === '') { this.Nom = 'Prospect';};
this.Prenom = Prenom;
//if (this.Prenom === '') { this.Prenom = 'Prospect';};
this.Email = Email;
this.PageWeb = ''+PageWeb+'';
this.Token = Token;
this.MDN = MDN;
this.SiteWeb = SiteWeb;
this.DateSysteme = DateSysteme;
// Obtain the Co-browse API
_genesys.onReady.push(function(APIs, isTopContext) {
// démarrer le chat
APIs.chat.startChat({
registration: function(done) {
var $form = jQuery('');
// bind done function to be called when the form is submitted
$form.on('submit', function() {
done({
FirstName: jQuery("#gcbChatFirstName").val(),
LastName : jQuery("#gcbChatLastName").val(),
PhoneNumber : jQuery("#gcbChatPhone").val(),
Question : jQuery("#gcbChatQuestion").val()
});
});
jQuery(document).ready(function() { });
$form.append('
Merci de renseigner vos informations et cliquer sur le bouton « Démarrer le tchat »
Vous serez connecté à lun de nos agents dans quelques instants.
Ce champ est obligatoire
Ce champ est obligatoire
Ce champ est obligatoireCe numéro est invalide
Ce champ est obligatoireCette question est invalide (une question doit contenir plus de 7 caractères)
');
//$form.append('');
$form.append('
');
//return form DOM representation: it will be displayed in the chat widget
return $form.get(0);
}
,
embedded : true,
userData : {
FirstName_Orig : this.Prenom,
LastName_Orig : this.Nom,
EmailAddress : this.Email,
PageWeb : this.PageWeb,
Token : this.Token,
PhoneNumber_Orig : this.MDN,
SourceChat : this.SiteWeb,
DateSysteme : this.DateSysteme,
// permet d'utiliser l'UCS pour l'identification
IdentifyCreateContact : '0',
TypeChat : 'TChat Systeme'
}
}).done(function(sessionChat) {
sessiondechat = sessionChat;
sessionChat.onSessionEnded(function(event) {
evalachaud(sessionChat);
// réinitialisation des compteur pour l'"val à chaud. Util si le client relance sa session chat sans fermer le navigateur.
CeritekCompteurMessage = 0;
alert_2 = 0;
Ceritek_aevaluer = false;
});
sessionChat.onAgentConnected(function(event) {
Ceritek_aevaluer = true;
//alert(alert_1);
//Soufiane
//fermetureEvalChat = setTimeout(function(){fermetureEvalChatFunc(sessiondechat);},480000);
Ceritek_aevaluer = true;
});
});
});
}
// démarrage du chat sans formulaire : pull B2B
function startChatNoReg_B2B(Nom, Prenom, Email, MDN, PageWeb, Token, SiteWeb,
DateSysteme) {
// initialiser la variable pour l'evaluation
Ceritek_aevaluer = false;
DateDebutChat = Date.now() ;
alert_1 = '0';
clearTimeout(ceritekatertTimer);
clearTimeout(fermetureTimer);
// récupération des données attachées
this.Nom = Nom;
if (this.Nom === '') { this.Nom = 'Prospect';};
this.Prenom = Prenom;
if (this.Prenom === '') { this.Prenom = 'Prospect';};
this.Email = Email;
this.PageWeb = ''+PageWeb+'';
this.Token = Token;
this.MDN = MDN;
this.SiteWeb = SiteWeb;
this.DateSysteme = DateSysteme;
// Obtain the Co-browse API
_genesys.onReady.push(function(APIs, isTopContext) {
// démarrer le chat
APIs.chat.startChat({
registration : false,
embedded : true,
userData : {
FirstName : this.Prenom,
LastName : this.Nom,
EmailAddress : this.Email,
PageWeb : this.PageWeb,
Token : this.Token,
PhoneNumber : this.MDN,
SourceChat : this.SiteWeb,
DateSysteme : this.DateSysteme,
// permet d'utiliser l'UCS pour l'identification
IdentifyCreateContact : '0',
TypeClient : 'B2B',
TypeChat : 'TChat Client B2B'
}
}).done(function(sessionChat) {
sessiondechat = sessionChat;
sessionChat.onSessionEnded(function(event) {
evalachaud(sessionChat);
// réinitialisation des compteur pour l'"val à chaud. Util si le client relance sa session chat sans fermer le navigateur.
CeritekCompteurMessage = 0;
alert_2 = 0;
Ceritek_aevaluer = false;
});
sessionChat.onAgentConnected(function(event) {
//alert(alert_1);
//Soufiane
//fermetureEvalChat = setTimeout(function(){fermetureEvalChatFunc(sessiondechat);},480000);
Ceritek_aevaluer = true;
});
});
});
}
// démarrage du chat push B2B
function startChatPush_B2B(Nom, Prenom, Email, MDN, PageWeb, Token, SiteWeb,
DateSysteme) {
// initialiser la variable pour l'evaluation
TchatPush = 'Oui';
Ceritek_aevaluer = false;
DateDebutChat = Date.now() ;
alert_1 = '0';
clearTimeout(ceritekatertTimer);
clearTimeout(fermetureTimer);
// récupération des données attachées
this.Nom = Nom;
if (this.Nom === '') { this.Nom = 'Prospect';};
this.Prenom = Prenom;
if (this.Prenom === '') { this.Prenom = 'Prospect';};
this.Email = Email;
this.PageWeb = ''+PageWeb+'';
this.Token = Token;
this.MDN = MDN;
this.SiteWeb = SiteWeb;
this.DateSysteme = DateSysteme;
// Obtain the Co-browse API
_genesys.onReady.push(function(APIs, isTopContext) {
// démarrer le chat
APIs.chat.startChat({
registration : false,
embedded : true,
userData : {
FirstName : this.Prenom,
LastName : this.Nom,
EmailAddress : this.Email,
PageWeb : this.PageWeb,
Token : this.Token,
PhoneNumber : this.MDN,
SourceChat : this.SiteWeb,
DateSysteme : this.DateSysteme,
// permet d'utiliser l'UCS pour l'identification
IdentifyCreateContact : '0',
TypeClient : 'B2B',
TypeChat : 'TChat Systeme B2B'
}
}).done(function(sessionChat) {
sessiondechat = sessionChat;
sessionChat.onSessionEnded(function(event) {
evalachaud(sessionChat);
// réinitialisation des compteur pour l'"val à chaud. Util si le client relance sa session chat sans fermer le navigateur.
CeritekCompteurMessage = 0;
alert_2 = 0;
Ceritek_aevaluer = false;
});
sessionChat.onAgentConnected(function(event) {
Ceritek_aevaluer = true;
//alert(alert_1);
//Soufiane
//fermetureEvalChat = setTimeout(function(){fermetureEvalChatFunc(sessiondechat);},480000);
Ceritek_aevaluer = true;
});
});
});
}
// HEL: Démarrage du chat MyInwi
function startChatNoReg_MYINWI(Nom, Prenom, Email, MDN, PageWeb, Token, SiteWeb,
DateSysteme,Question) {
// initialiser la variable pour l'evaluation
Ceritek_aevaluer = false;
DateDebutChat = Date.now() ;
alert_1 = '0';
clearTimeout(ceritekatertTimer);
clearTimeout(fermetureTimer);
// récupération des données attachées
this.Nom = Nom;
if (this.Nom === '') { this.Nom = 'Prospect';};
this.Prenom = Prenom;
if (this.Prenom === '') { this.Prenom = 'Prospect';};
this.Email = Email;
this.PageWeb = ''+PageWeb+'';
this.Token = Token;
this.MDN = MDN;
this.SiteWeb = SiteWeb;
this.DateSysteme = DateSysteme;
this.Question = Question;
// Obtain the Co-browse API
_genesys.onReady.push(function(APIs, isTopContext) {
// démarrer le chat
APIs.chat.startChat({
registration : false,
embedded : true,
userData : {
FirstName_Orig : this.Prenom,
LastName_Orig : this.Nom,
PhoneNumber_Orig : this.MDN,
FirstName : this.Prenom,
LastName : this.Nom,
EmailAddress : this.Email,
PageWeb : this.PageWeb,
Token : this.Token,
PhoneNumber : this.MDN,
SourceChat : this.SiteWeb,
DateSysteme : this.DateSysteme,
Question : this.Question,
// permet d'utiliser l'UCS pour l'identification
IdentifyCreateContact : '0',
TypeClient : 'B2C',
TypeChat : 'TChat Client'
}
}).done(function(sessionChat) {
sessiondechat = sessionChat;
sessionChat.onSessionEnded(function(event) {
evalachaud(sessionChat);
// réinitialisation des compteur pour l'"val à chaud. Util si le client relance sa session chat sans fermer le navigateur.
CeritekCompteurMessage = 0;
alert_2 = 0;
Ceritek_aevaluer = false;
});
sessionChat.onAgentConnected(function(event) {
//alert(alert_1);
//Soufiane
//fermetureEvalChat = setTimeout(function(){fermetureEvalChatFunc(sessiondechat);},480000);
Ceritek_aevaluer = true;
});
});
});
}
// démarrer le cobrowse avec intégration au chat
function startCobrowse(sessionChat) {
// Obtain the Co-browse API
_genesys.onReady
.push(function(APIs, isTopContext) {
// Subscribe to the initialization of Co-browse scripts
APIs.cobrowse.onSessionStarted.add(function(session) {
sessionChat.sendMessage('{start:' + session.token + '}');
});
APIs.cobrowse.onInitialized
.add(function(session) {
// Check if there is an ongoing session. If there is no, ask the users permission to start Co-browsing.
if (!session
&& confirm('L\'agent inwi vous invite pour une co-navigation. Etes-vous d\'accord ?')) {
APIs.cobrowse.startSession();
}
});
});
}
//fonction d'évaluation a chaud
function evalachaud(sessionChat) {
//alert(identifiantinteraction);
var DureeChat = Date.now()- DateDebutChat;
if (Ceritek_aevaluer) {
//alert(identifiantinteraction);
//alert(CeritekCompteurMessage);
if(DureeChat > 240000 && CeritekCompteurMessage > 4 ){
//alert(identifiantinteraction);
window
.open(
'https://chatprd.inwi.ma/EvalChat/EvaluationChat.html?InteractionId='
+ identifiantinteraction,
'',
'width=800,height=600,left=0,top=0,resizable=yes,menubar=no,location=no,status=yes,scrollbars=yes');
}
}
;
}
function alertTimeoutChat(sessiondechat){
alert_1 = '1';
sessiondechat.sendMessage('Votre session est inactive depuis 2 minutes. Sans r\351ponse de votre part elle sera ferm\351e dans 30 secondes.');
}
function fermetureTimeoutChat(sessiondechat){
alert_1 = '2';
sessiondechat.sendMessage("Cher client,\r\n Votre session T\047chat est inactive depuis 2min 30s !\n Merci de reprendre contact avec votre centre de relation clients qui est disponible 7J\0577 de 10h à 22h. \n Inwi vous remercie pour votre fid\351lit\351.");
}
function fermetureTimeoutChatPush(sessiondechat){
alert_1 = '2';
sessiondechat.sendMessage('Fermeture Chat Push. inwi vous remercie pour votre chat.');
}
//Soufiane
function fermetureEvalChatFunc(sessiondechat){
alert_2 = '1';
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Function to validate the whole form
function validateForm(event1) {
event.preventDefault();
mdn = jQuery('#gcbChatPhone').val();
question = jQuery('#gcbChatQuestion').val();
// Checking if all the fields are filled
if ( jQuery("#gcbChatFirstName").val() != '' && jQuery("#gcbChatLastName").val() != '' && jQuery("#gcbChatPhone").val() != '' && jQuery("#gcbChatQuestion").val() != '' && valideMDN (mdn) == true && valideQuestion (question) == true ) {
jQuery('#idSpanNom').hide();
jQuery('#idSpanPrenom').hide();
jQuery('#idSpanMDN').hide();
jQuery('#idSpanQuestion').hide();
// Else : when one (or more) of the fields is/are empty
jQuery("#mainForm").submit();
}else{
if ( jQuery("#gcbChatLastName").val() == '' ) {
jQuery('#idSpanNom').show();
}else { jQuery('#idSpanNom').hide(); }
if ( jQuery("#gcbChatFirstName").val() == '' ) {
jQuery('#idSpanPrenom').show();
}else { jQuery('#idSpanPrenom').hide(); }
if ( jQuery("#gcbChatPhone").val() == '' ) {
jQuery('#idSpanMDN').show();
jQuery('#invalid_MDN').hide();
}else { jQuery('#idSpanMDN').hide();
valideMDN(jQuery("#gcbChatPhone").val());
}
if ( jQuery("#gcbChatQuestion").val() == '' ) {
jQuery('#idSpanQuestion').show();
}else { jQuery('#idSpanQuestion').hide(); }
event.preventDefault();
return false;
}
}
// Function to validate phone number
function valideMDN (mdn){
if (/^(0|\+212|00212)[1-9][0-9]{8}$/.test(mdn))
{
jQuery('#invalid_MDN').hide();
return true;
}else {
jQuery('#invalid_MDN').show();
event.preventDefault();
return false;
}
}
function valideQuestion (question){
var questionlength = jQuery('#gcbChatQuestion').val().length;
if ( questionlength > 7)
{
jQuery('#invalid_question').hide();
return true;
}else {
jQuery('#invalid_question').show();
event.preventDefault();
return false;
}
}