Dans le flux, nous commençons par configurer les scripts d'événement dans le widget de démarrage. Ci-dessous, nous pouvons voir que les deux scripts d'événement sont configurés dans le widget.
Pour créer le code du script d'événement, vous devez ajouter un nouveau script d'événement au widget de démarrage. Le code peut ensuite être directement écrit dans l'éditeur de flux, comme illustré ci-dessous.
Les événements Engagement accepté et Disposition sauvegardée utilisent tous deux un code similaire. Il s’agit de simples blocs de code Javascript qui utilisent la fonction HTTP intégrée pour générer une requête POST HTTPS sortante.
Code du script de l'événement Engagement accepté
Dans cet exemple de code, nous incluons le numéro d'engagement, le numéro de téléphone de l'appelant, l'adresse e-mail de l'agent et le nom de la file d'attente. Ce code sera exécuté au moment où l'agent répondra à l'appel et commencera à discuter avec le client. Cet exemple utilise probablement la quantité minimale d'informations requises pour générer une fenêtre contextuelle ou pour commencer la journalisation du nouvel appel. Il faut savoir que si votre configuration de flux ZCC collecte des données sur l'appelant dans le flux/SVI, telles que son numéro de compte, son numéro de dossier/ticket, etc., il suffit d'ajouter des variables à la variable request_body pour inclure ces données dans cette requête HTTP.
async function main () { try { let request_body = { "engagementId": var_get()["global_system.Engagement.engagementId"], "caller_number": var_get()["global_system.Engagement.ANI"], "agent_email": var_get()["global_system.Agent.email"], "queue_name": var_get()["global_system.Engagement.queue"] } const result = await req.post('https://api.example.com/acceptedcall', request_body); let jsonResponseBody = result.data; log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody)); } catch (error) { log.debug("Received HTTP error " + error); }}
Code de script d'événement Disposition enregistrée
Pour l'événement Disposition enregistrée, nous réutiliserons le code utilisé dans l'exemple précédent, en lui ajoutant la variable « disposition » à la ligne 9. Ce bloc de code sera exécuté lorsque l'agent sélectionnera la disposition de l'appel, qui correspond à la dernière action effectuée par l'agent lors de l'engagement. Lors de l'envoi de cette requête, le système externe peut savoir que l'agent a terminé la disposition de l'engagement. Comme pour l'événement Engagement accepté ci-dessus, des variables peuvent être ajoutées si nécessaire, en fonction de votre cas d'utilisation.
async function main () { try { let request_body = { "engagementId": var_get()["global_system.Engagement.engagementId"], "caller_number": var_get()["global_system.Engagement.ANI"], "agent_email": var_get()["global_system.Agent.email"], "queue_name": var_get()["global_system.Engagement.queue"], "disposition_name": var_get()["global_system.Engagement.disposition"] } const result = await req.post('https://api.example.com/dispositionedcall', request_body); let jsonResponseBody = result.data; log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody)); } catch (error) { log.debug("Received HTTP error " + error); }}
Selon votre solution, il se peut que les scripts d'événement de flux ci-dessus suffisent, ou que des événements de l'API Zoom App Marketplace soient requis pour couvrir tous les cas d'utilisation de votre intégration. Par exemple, vous pouvez compléter les deux événements de flux ci-dessus en vous abonnant aux événements de l'API Zoom App Marketplace pour les événements de mise en attente/reprise/activation du son/désactivation du son. Ces événements supplémentaires peuvent fournir à votre application des informations sur la fréquence à laquelle les agents mettent les appels en attente ou en sourdine.
Les deux scripts d'événement de flux ci-dessus ainsi que les événements Webhook/Websocket de Zoom App Marketplace sont disponibles dans votre solution.