Historique des modifications de l'API Amazon Connect Streams # 1: jusqu'en mai 2018
L'API Amazon Stream Streams (Streams) permet aux développeurs de créer des expériences d'agent personnalisées pour Amazon Connect. Depuis mon introduction à la fin de l'année 2017, plusieurs changements ont été apportés aux Streams, certains venant de la communauté, d'autres venant directement d'Amazon. Ces modifications sont gérées comme des demandes d'extraction. Ce post examinera les demandes d'approbation approuvées de novembre 2017 à mai 2018 et les conséquences de ces modifications sur la création d'applications personnalisées pour Amazon Connect.
Pull Requests
Le code pour Streams est hébergé dans Github et ouvert aux contributions de la communauté. forme de demandes de traction. Une demande d'extraction (PR) est un ensemble de modifications de code en attente que le propriétaire d'un référentiel Github peut approuver (fusionner) dans la base de code principale ou rejeter. Chaque PR a un fil associé pour la discussion connexe.
Vous pouvez voir une liste des PR ouverts pour les flux à: https://github.com/aws/amazon-connect-streams/pulls .
Vous pouvez voir tous les commits (modifications approuvées) à Streams à: https://github.com/aws/amazon-connect-streams/commits/master .
Le PR est approuvé dans les délais couverts par ce poste sont:
Compatibilité du navigateur CCP (PR # 26 et # 30)
PR # 26 et PR # 40 étaient des contributions de la communauté Sean Romocki ( https: //github.com/sromocki) qui traite des incompatibilités du navigateur CCP.
PR # 26
PR # 26 ( https://github.com/aws/amazon-connect-streams/pull / 26 ) adressait une modification de navigateur Web en attente qui bloquait le fonctionnement du panneau de contrôle des contacts Amazon Connect (CCP).
Comme décrit dans le PR, le navigateur Chrome est devenu plus strict quant à l'octroi de l'accès au microphone aux applications hébergées dans un iframe. Comme le CCP est hébergé dans un iframe par Streams, cette modification a mis à jour Streams pour demander explicitement la permission d'utiliser le microphone. Si vous travailliez avec Streams dans ce laps de temps, vous deviez construire la dernière copie de Streams pour que le CCP fonctionne.
PR # 26 a été approuvé le 23 janvier 2018: https://github.com/ aws / amazon-connect-streams / commit / 5fc44af68939a2016cc1c6fd08d13793e74d5ee4
Changements de code pour PR # 26
Comme nous l'avons vu dans mes intro posts les applications Streams commencent par invoquer le connect.core.initCCP méthode du fichier core.js. initCCP ajoute un iframe à la page HTML de l'application pour héberger le CCP. Avec les changements de code, avant d'ajouter l'iframe, initCCP définit l'attribut de l'iframe sur "microphone". L'attribut allow indique à Chrome qu'il est correct de laisser l'iframe utiliser le microphone.
PR # 30
PR # 30 ( https://github.com/aws/amazon-connect-streams/pull/30 ) était un tweak au code des notifications dans Streams qui supprime un avertissement de désapprobation dans la console JavaScript dans Chrome. Cet avertissement n'est pas quelque chose que l'utilisateur final typique rechercherait ou remarquerait, mais il est recommandé d'éviter les avertissements comme celui-ci pour une compatibilité future.
Le changement de code pour ce PR était d'invoquer le rappel des autorisations pour les notifications dans une promesse, en évitant l'avertissement.
PR # 30 a été approuvé le 29 mai 2018: https://github.com/ aws / amazon-connect-flux / commit / c965fbd347bcc2e18ab3b1d4f3eeb3c92be46e1b
Code Lignes directrices sur les contributions (PR # 48)
PR # 48 ( https://github.com/aws / amazon-connect-streams / pull / 48 ) a ajouté un modèle de demande d'extraction, un code de conduite et des directives de contribution pour le référentiel Streams. Ces documents décrivent comment les développeurs interagissent avec le référentiel lorsqu'ils veulent faire des demandes d'extraction. PR # 46 était une contribution de la communauté de Henri Yandell ( https://github.com/hyandell ).
PR # 48 a été approuvé le 29 mai 2018: https: // github .com / aws / amazon-connect-flux / commit / 0e4fd831b85a5c97025d33962c913de4801483b8
Mises à jour de la documentation (PR # 6, # 52, # 68, # 69)
Erreurs de grammaire mises à jour par Amazon, éclairci quelque langage vague, et fait d'autres changements mineurs dans une série de 3 demandes de traction:
Un exemple du type de modifications apportées ici est de s'assurer que la documentation se réfère toujours à "Amazon Connect" et pas simplement Connect. Ces demandes d'extraction étaient une contribution de randalld-aws ( https://github.com/randalld-aws ).
Ces demandes d'extraction ont été approuvées le 29 mai 2018:
Community contributor Bast Leblanc ( https://github.com/BastLeblanc ) a ajouté un exemple d'URL CCP à la documentation avec PR # 6 ( https://github.com/aws/amazon-connect- streams / pull / 6 ). Vous avez besoin de cette URL pour initialiser une application Streams personnalisée, il est donc utile d'avoir un pointeur supplémentaire dans la documentation.
PR # 6 a été approuvé le 29 mai 2018: https://github.com/aws/amazon-connect-streams/commit/83b913c897c02c3e2e60ab30b7e5bebccf2e7e91
Mises à jour de l'API (mute) et la construction de NPM (PR # 61)
PR # 61: https://github.com/aws/amazon-connect-streams/pull/61 a été créé par jagadeeshaby d'Amazon ([19659069] https://github.com/jagadeeshaby ). Ce PR a ajouté le contrôle muet aux Streams, ce qui a permis aux développeurs d'inclure plus facilement la bibliothèque Streams et de corriger un certain nombre de petits bugs.
Ces changements sont décrits à un haut niveau dans la description de la requête pull # 61 : //github.com/aws/amazon-connect-streams/pull/61 ).
Mute Control
Avec ces changements, Streams obtient 3 nouvelles méthodes d'objet agent pour contrôler l'audio de l'agent: muet unmute et onMuteToggle . Ces méthodes peuvent être utilisées pour créer des contrôles Mute et unmute dans un CCP personnalisé. Ces méthodes sont documentées à: https://github.com/aws/amazon-connect-streams/blob/master/Documentation.md .
Code
Les nouvelles méthodes de contrôle de mute se trouvent dans le fichier api.js, suspendu à l'objet agent.
Les fonctions mute et unmute diffusent des événements MUTE en amont, c'est-à-dire à tout autre composant d'écoute, avec un drapeau muet de true à mute, false to unmute.
Quels autres composants écoutez-vous? Notre vieil ami softphone.js, vu la dernière fois dans mon post sur la mise en œuvre d'un bouton de sourdine dans Amazon Connect ( https://blogs.perficient.com/2017/10/26/implementing-a-mute-button-in- amazon-connect / ). Dans softphone.js nous voyons des changements dans ce PR pour s'abonner et gérer des événements MUTE .
Le softphone s'abonne aux événements MUTE dans handleSoftPhoneMuteToggle et quand ça devient un événement MUTE appelle la fonction muteToggle . La fonction muteToggle recherche le flux multimédia de l'agent et définit sa propriété enabled sur false (muted) ou true (non muté). Une référence au flux multimédia est stockée dans l'objet localMediaStream chaque fois qu'un flux multimédia est ajouté à l'appel actif. Ce code est session.onLocalStreamAdded .
Une fois le flux multimédia modifié dans muteToggle, le softphone publie un événement MUTE_TOGGLE avec le nouveau statut muet pour les écouteurs en amont.
Si vous êtes curieux du code qui publie les événements "en amont" , vous pouvez vous référer au code source des objets Stream à: https://github.com/aws/amazon-connect-streams/blob/master/src/streams.js . L'idée générale est qu'il existe un technicien de service qui relaie les événements du code de l'application Streams à l'iframe CCP et de l'iframe CCP au service back-end d'Amazon Connect. Pour un visuel de cette interaction, voir le diagramme d'architecture à https://github.com/aws/amazon-connect-streams/blob/master/Architecture.md .
NPM Build
NPM ( https://www.npmjs.com/ ) est le gestionnaire de paquets le plus utilisé pour JavaScript et Streams PR ajoute le support pour la création de flux avec NPM. Auparavant, pour utiliser Streams, vous deviez le construire vous-même en utilisant un fichier de construction, comme je l'ai décrit à https://blogs.perficient.com/2017/10/05/intro-to-amazon-connect-streams-api -part-1 /. Ce type de construction ajoutait des étapes supplémentaires pour les développeurs Windows et était en décalage avec les pratiques courantes de bibliothèque JavaScript.
Avec cette prise en charge de compilation NPM, construire est une affaire de NPM, que les développeurs JavaScript exécuteront et exécutera quelques commandes simples. .
Obtenir des flux à construire en utilisant NPM est une belle amélioration pour les développeurs. Il y a quelques problèmes mineurs à connaître, qui ont été soulevés comme un problème dans Github: https://github.com/aws/amazon-connect-streams/issues/66 par le membre de la communauté extmchristensen ( https://github.com/extmchristensen ).
Amélioration de la journalisation et corrections de bogues divers
Le RP ne précise pas les détails de la meilleure journalisation ou des corrections de bogues. Ce sont des changements dans près de 20 fichiers et en particulier softphone.js a un grand diff entre la version précédente et le PR. Cela dit, j'ai parcouru les diff et identifié certains à mettre en évidence:
La logique de nettoyage dans core.js est maintenant invoquée sur le navigateur onunload par rapport à onbeforeunload . La différence ici est subtile. L'événement de déchargement est déclenché après beforeunload lorsqu'une page est déchargée. Je suppose que ceci fournit un comportement d'arrêt plus lisse lorsqu'un utilisateur ferme le navigateur ou quitte une application Streams
La publication de certains types d'événements comme API_METRIC LOG et MASTER_RESPONSE ne sont plus connectés event.js. Cela permet probablement de garder la console JavaScript moins encombrée dans le navigateur
Ringtone Start et Ringstone Stops Les événements de télémétrie avec infos d'appel sont maintenant publiés lors du démarrage et de l'arrêt des sonneries respectivement. La sonnerie de rappel est distinguée par un événement Callback Ringtone Connecting . Je ne suis pas sûr d'où ces événements vont ou s'ils sont accessibles pour l'interrogation. Ce nouveau code est dans ringtone.js
Traitement d'erreur supplémentaire pour arrêter une sonnerie si les rappels onAccepted ou onConnected échouent. Ce nouveau code est également dans ringtone.js
Meilleure gestion des appels redirigés vers le même agent plusieurs fois et meilleur nettoyage de la session dans softphone.js.
Mesures sur la réactivité de l'API Connect back-end , c'est-à-dire combien de temps il a fallu une requête donnée pour compléter, sont maintenant rassemblés par le travailleur dans worker.js. Voir la méthode WorkerClient
Implémente une stratégie d'arrêt exponentiel avec une nouvelle tentative lors de la tentative d'actualisation du jeton d'authentification pour l'API Connect principale. Cela devrait rendre les applications Streams plus résistantes si elles restent ouvertes longtemps. Voir connect.backoff dans util.js, puis ligne 575 dans worker.js
Merci d'avoir lu. La prochaine fois, nous examinerons certaines demandes d'extraction ouvertes pour les flux. Toutes les questions, commentaires ou corrections sont grandement appréciés. Pour en savoir plus sur ce que nous pouvons faire avec Amazon Connect, consultez Pour vous aider à tirer le meilleur parti d'Amazon Connect
Source link