Forum Keyyo

Version complète : onNewCall event (js)
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Bonjour,

Je souhaite recevoir des appels dans mon application, j'utilise l'event onNewCall, cette évènement est déclenché malheureusement à chaque rechargement de page, c'est comme si il garde l'historique du dernier appel. Svp, comment je fais pour que cet event est déclenché seulement au lancement ou à la réception d'un nouveau appel.
Bonjour,


Il est possible que si vous rechargez la page juste après un événement d'appel, le dernier événement remonte toujours, car normalement la page est chargée une seule fois, puis son fonctionnement repose sur les événements Javascript.

Vous pouvez filtrer les événements en vérifiant le type et le Callref afin de déterminer si il s'agit d'un nouvel appel ou bien du précédent appel reçu ou émis.

N'hésitez pas à revenir vers nous pour toute question complémentaire.
Merci, je vais essayer cela
J'ai essayé pas mal de trucs ça ne marche toujours pas. Si l'application était mono-page ça aurait été parfait mais malheureusement ce n'est pas le cas.
Je serai ravi si j'ai un exemple en JS.
Merci bien
Bonjour,

Votre application dispose-t-elle de plusieurs pages ouvertes en même temps ou bien une seule page ouverte à la fois mais pouvant être rechargée ?
Plusieurs pages ouvertes en même temps
Bonjour,

L’événement remonte dans toutes les pages en simultané pour chaque appel ?

Pouvez-vous détailler le scénario afin que nous puissions comprendre et reproduire le problème ?
cti.onNewCall = function(call) {
var temp = cti.calls;
temp.splice(-1,1);
if (!_.find(temp, ['callref',call.callref])) {
let thecall = _.filter(cti.calls, ['callref',call.callref])
if (!_.find(thecall,['state',call.state])){

// TRAITEMENT

}
}

Je fais comme ça pour bloquer les evenements des anciens appels lors du rechargement de la page. Mais lorsque je reçois plusieurs appels. Les conditions ne sont pas assez suffisantes pour bloquer le traitement.
Bonjour,


Idéalement il faudrait stocker chaque appel dans un tableau et les supprimer lorsqu'ils passent en état "terminated". Cela permet de ne garder que les nouveaux appels.

Une autre solution serait de faire un plugin "WebExtension" qui tourne en background et qui est chargé de recevoir les événements et de les stocker. Ensuite les scripts sur les pages récupèrent les appels en cours auprès du script d'arrière plan.
URLs de référence