
Pratiques exemplaires pour le centre de contact avec l'API Voice et le Client SDK de Vonage
Temps de lecture : 6 minutes
Introduction
Nous souhaitons mettre l'accent sur quelques points importants concernant la création d'un centre de contact avec les API de Vonage, qui pourraient améliorer les performances et l'expérience des utilisateurs.
Temps de réponse des Webhooks pour le NCCO
NCCO (A Call Control Object) est utilisé pour contrôler le flux d'une Voice API vocale. Lorsque vous utilisez le NCCO pour acheminer les appels entrants vers votre centre de contact, tenez compte du temps de réponse de l'URL de réponse de votre application Vonage. URL de réponse de votre application Vonage, car il est essentiel pour offrir la meilleure expérience au client. Si votre point de terminaison webhook prend beaucoup de temps pour renvoyer un NCCO, par exemple 4 secondes, votre client qui appelle ne pourra rien entendre d'autre que le silence pendant ces 4 secondes.
Au point d'arrivée de l'URL de réponse, si votre serveur d'application a besoin de temps pour effectuer des requêtes qui prennent du temps, vous pouvez envisager de renvoyer d'abord un message de type action "talk or stream" (parler ou écouter) pour indiquer à l'appelant que l'appel est connecté, puis d'utiliser l'action Modifier un appel en cours pour mettre à jour l'appel après avoir effectué les requêtes nécessaires, telles que la recherche d'un agent disponible ou la mise en file d'attente d'un appel.
Il en va de même pour tous les URL d'événement des actions du BCN qui sont censées renvoyer un BCN, telles que input, connecter (lorsque le type d'événement (eventType) est synchrone), et notifier. Ces actions sont synchrones, ce qui signifie que les actions suivantes doivent attendre qu'elles se terminent. Par conséquent, à leurs URL d'événement, vous souhaitez répondre par un NCCO (ou une réponse vide) aussi rapidement que possible pour éviter de laisser votre client dans l'incertitude.
Lors de la configuration de votre Applications, vous remarquerez que l'option URL de repliqui est l'URL de repli où les API de Vonage tentent de récupérer le NCCO lorsque votre URL de réponse ou d'événement est inaccessible ou renvoie certains codes d'erreur HTTP. Il est bon de mettre en place une gestion par défaut (comme l'enregistrement et le renvoi d'un NCCO par défaut), car les appels seront abandonnés si aucun NCCO n'est renvoyé.
Le délai d'attente par défaut pour l'URL de réponse et d'événement est de 5 secondes ; vous pouvez le modifier dans le tableau de bord du développeur Vonage si nécessaire.
Vous souhaitez en savoir plus sur Voice API et NCCO ? Voice API et le NCCO.
File d'attente, transfert et enregistrement
La file d'attente, le transfert et l'enregistrement sont des fonctions essentielles d'un centre de contact qui permettent de gérer efficacement les appels des clients. La file d'attente permet aux clients de faire la queue jusqu'à ce qu'un représentant soit disponible, tandis que le Transfert permet aux agents de transférer des appels à d'autres agents. L'enregistrementpermet d'enregistrer les appels.
Avec l'action du NCCO conversation, Voice APIet Conversation APIvous pouvez facilement mettre en œuvre la file d'attente et le transfert pour gérer et transférer les appels en attente. Nous avons des moyens faciles à utiliser pour mettre en œuvre l'enregistrement des appels et nous avons également Conversation API pour les cas où vous avez besoin de fonctions complexes telles que Enregistrement fractionné.
Lorsque vous les mettez en œuvre avec l'API de Vonage, il est essentiel de différencier l'élément uuid et conversation_uuid dans les webhooks d'événement et associez-les correctement dans votre serveur d'application aux événements de transfert et d'enregistrement, en particulier lorsque les appels sont transférés d'une conversation à l'autre et que vous souhaitez enregistrer tout.
Lorsqu'un appel (également appelé segment ou segment d'appel dans la Conversation API, voir plus) est créé à l'aide de la Voice API, c'est-à-dire lorsqu'un appel entrant arrive sur la plateforme Vonage ou que Vonage a reçu votre demande d'appel sortantLe numéro d'appel est assigné à un identifiant unique - uuid - et ajouté à une conversation (identifiée par conversation_uuid). L'identifiant uuid reste inchangé jusqu'à ce que l'appel soit terminé, mais l'identifiant conversation_uuid change lorsqu'un transfert est effectué sur l'appel alors que l'enregistrement est lié à une conversation.
Lorsqu'un transfert a lieu, c'est-à-dire lorsque l'action "conversation"est exécutée ou qu'une demande de transfert est terminéevous recevrez un webhook de transfert (voir plus) :
{
"conversation_uuid_from": "CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"type": "transfer",
"uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"conversation_uuid_to": "CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"timestamp": "2023-04-12T07:26:42.775720Z"
}Il est conseillé de stocker à la fois conversation_uuid_from et conversation_uuid_to si l'enregistrement est activé pour chaque conversation, car vous recevrez un événement d'enregistrement pour chaque conversation.
Par exemple, le NCCO suivant :
[
{
"action": "record"
},
{
"action": "talk",
"text": "You are joining a conference that was created using Vonage's Voice API."
},
{
"action": "conversation",
"record": true,
"name": "vonage-conference-abc",
}
]Il y a une action d'enregistrement et une action de conversation avec l'option d'enregistrement réglée sur true, de sorte que vous recevrez un webhook d'événement de transfert et deux webhooks d'événement d'enregistrement :
Un événement d'enregistrement pour la conversation à partir de laquelle l'appel a été transféré (conversation_uuid_from).
Un autre événement d'enregistrement pour la conversation à laquelle l'appel vient d'être ajouté (conversation_uuid_to).
Il est donc essentiel de les associer aux bons identifiants pour garder une trace de chaque enregistrement et de chaque transfert. Vous ne voulez pas vous demander plus tard de quel appel il s'agit si vous n'avez pas sauvegardé tous les conversation_uuid.
Comment enregistrer chaque participant dans un canal séparé ?
Enregistrement fractionné L'enregistrement sera un fichier stéréo avec un canal contenant l'audio envoyé par l'appelant et un autre canal contenant l'audio entendu par l'appelant.
Pour ajouter l'enregistrement fractionné dans votre application, selon qu'il s'agit d'une conversation créée avec l'action NCCO connect ou l'action NCCO conversation, vous pouvez choisir :
Lorsque vous utilisez l'action de connexion, définissez l'action NCCO record:
{
"action": "record",
"split": "conversation",
"channels": 3,//the number of channels to record (maximum 32)
"format": "wav",
},
{
"action": "connect", ... }Lorsque vous utilisez l'action de conversation, utilisez l'API recordConversation (qui fait partie de l Conversation API) :
lorsque la conversation commence, envoyer une demande à enregistrerConversation avec le corps de la demande :
{
"action": "start",
"split": "conversation",
"format": "wav",
"channels": 3
} En savoir plus sur l'enregistrement
Si vos conversations sont créées avec l'action NCCO connect, il est fortement conseillé de stocker chaque webhook d'événement vocal car Voice API ne les stockera pas, en particulier pour les événements d'enregistrement (qui ont une url d'enregistrement) dont vous aurez besoin plus tard pour interrompre l'enregistrement.
Cependant, lorsque vous créez des conférences avec l'action conversation, il existe un moyen de récupérer les événements d'enregistrement manquants avec cette action Événements de la Conversation API v0.2].
Enfin,
Outre la mise à jour régulière de la dernière version du Client SDK, votre application gagnerait à mettre en place un système de capture et de journalisation des erreurs.
Par exemple, si le bouton "répondre" de votre centre de contact ne parvient pas à connecter l'appel, il serait utile de générer une erreur et de l'envoyer à votre plateforme d'enregistrement des erreurs avec autant d'informations que possible sur le navigateur de l'utilisateur, son système d'exploitation, call_uuid, converstion_uuidetc. Cela permet de mieux cerner l'impact du problème et la cause possible lors du débogage.
try {
app.on("member:call", (member, call) => {
// Answer the call.
$( "#answer" ).click((e) => {
call.answer().then().catch(error => {
// Send the error to your error logging platform with additional information
logError({
message: 'Failed to answer the call',
data: [
member.id,
member.conversation.id,
call.id,
],
extra: [
`Browser: ${navigator.userAgent}`,
`OS: ${navigator.platform}`
]
});
});
});
} catch (error) {
logError({
message: `Error: ${error.message}`,
extra: [
`Browser: ${navigator.userAgent}`,
`OS: ${navigator.platform}`
]
});
}
Synthèse
Pour construire un centre de contact efficace avec les API de Vonage, il est fortement conseillé de surveiller le temps de réponse des webhooks de NCCO (vous devez activer la journalisation du serveur pour surveiller le temps de réponse des requêtes HTTP) et de s'assurer que l'URL de repli est configurée pour renvoyer un NCCO de repli (configuré dans Tableau de bord du client Vonage). Il est également important d'associer correctement l'appel uuid et conversation_uuid (en savoir plus sur les concepts utilisés dans la Conversion API) dans les webhooks d'événements. webhooks d'événements pour mettre en œuvre des fonctionnalités telles que Queue, Transfer et Record. Enfin, la mise en œuvre de la capture d'erreurs et de la journalisation vous aidera à déboguer l'application construite avec le Vonage Client SDK.
Si vous avez des questions ou des commentaires, rejoignez-nous sur le Slack des développeurs de Vonage.