Référence NCCO

Un objet de contrôle d'appel (NCCO) est représenté par un tableau JSON. Vous pouvez l'utiliser pour contrôler le flux d'un appel Voice API. Pour que votre NCCO s'exécute correctement, les objets JSON doivent être valides.

Pendant que vous développez et testez les NCCO, vous pouvez utiliser le Voice Playground pour tester les NCCO de manière interactive. Vous pouvez Pour en savoir plus, consultez l'aperçu de la Voice API ou accéder directement au terrain de jeu vocal dans le tableau de bord.

Actions du NCCO

L'ordre des actions dans le NCCO contrôle le flux de l'appel. Les actions qui doivent être achevées avant que l'action suivante puisse être exécutée sont les suivantes synchrone. Les autres actions sont asynchrone. En d'autres termes, ils sont censés poursuivre les actions suivantes jusqu'à ce qu'une condition soit remplie. Par exemple, une action record se termine lorsque l'action endOnSilence est satisfaite. Lorsque toutes les actions du BCN sont terminées, l'appel prend fin.

Les actions du NCCO et les options et types pour chaque action sont les suivants :

Action Description Synchrone
enregistrer Tout ou partie d'un appel Non
conversation Créer ou rejoindre un Conversation Oui
relier Vers un point d'extrémité connectable, tel qu'un numéro de téléphone ou un poste VBC. Oui
parler Envoi d'une synthèse vocale à une conversation. Oui, sauf si bargeIn=true
flux Envoyer des fichiers audio à une conversation. Oui, sauf si bargeIn=true
entrée Recueillir des chiffres ou des données vocales de la personne que vous appelez. Oui
notifier Envoyez une demande à votre application pour suivre les progrès réalisés par le biais d'un BCN. Oui
attendre Interrompre l'exécution pendant un nombre de secondes spécifié Oui
transfert Déplacer les segments d'appel d'une conversation en cours vers une autre conversation existante Oui

Note: Connecter un appel entrant fournit un exemple de la façon de servir vos OCNC à Vonage après le lancement d'un appel ou d'une conférence.

Notez que dans toutes les actions, le eventUrl DOIT être un tableau, même s'il ne contient qu'une seule valeur.

Enregistrer

Utiliser le record pour enregistrer un appel ou une partie d'un appel :

[
  {
    "action": "record",
    "eventUrl": ["https://example.com/recordings"]
  },
  {
    "action": "connect",
    "eventUrl": ["https://example.com/events"],
    "from":"447700900000",
    "endpoint": [
      {
        "type": "phone",
        "number": "447700900001"
      }
    ]
  }
]

L'action d'enregistrement est asynchrone. Vous pouvez définir une condition synchrone - endOnSilence, timeOut ou endOnKey - pour terminer l'enregistrement lorsqu'elle est remplie. Si aucune condition n'est définie, l'enregistrement fonctionnera de manière asynchrone et passera instantanément à l'action suivante tout en continuant à enregistrer l'appel. L'enregistrement ne se terminera et n'enverra l'événement correspondant que lorsque l'appel sera terminé. Cette fonction est utilisée pour des scénarios similaires à la surveillance des appels.

Vous pouvez transcrire un enregistrement à l'aide de la fonction transcription option. Une fois la transcription de l'enregistrement achevée, un rappel sera envoyé à une personne de l'Union européenne. eventUrl. Les paramètres de transcription vous permettent de spécifier un nom de fichier personnalisé. eventUrl et language pour vos transcriptions. Veuillez noter qu'il s'agit d'une fonction payante ; les tarifs exacts peuvent être consultés sur le site web de la Commission européenne. Prix de l'API Voice sous la rubrique "Fonctions programmables".

Pour plus d'informations sur la procédure à suivre, voir Enregistrement.

Vous pouvez utiliser les options suivantes pour contrôler un record action :

Option Description Exigée
format Enregistrer l'appel dans un format spécifique. Les options sont les suivantes :
  • mp3
  • wav
  • ogg
La valeur par défaut est mp3ou wav lors de l'enregistrement de plus de 2 canaux.
Non
split Enregistrer l'audio envoyé et reçu dans des canaux séparés d'un appareil d'enregistrement stéréo pour conversation pour permettre cela. Non
channels Le nombre de chaînes à enregistrer (maximum 32). Si le nombre de participants est supérieur à channels tout participant supplémentaire sera ajouté au dernier canal du fichier. split conversation doit également être activée. Non
endOnSilence Arrêter l'enregistrement après n secondes de silence. Une fois l'enregistrement arrêté, les données d'enregistrement sont envoyées à event_url. L'éventail des valeurs possibles est de 3<=endOnSilence<=10. Non
endOnKey Arrêter l'enregistrement lorsqu'un chiffre est appuyé sur le combiné. Les valeurs possibles sont : *, # ou tout autre chiffre, par exemple 9. Non
timeOut Durée maximale d'un enregistrement en secondes. Lorsque l'enregistrement est arrêté, les données d'enregistrement sont envoyées à event_url. Les valeurs possibles sont comprises entre 3 secondes et 7200 secondes (2 heures). Non
beepStart Régler sur true pour émettre un bip lorsqu'un enregistrement commence. Non
eventUrl L'URL du point de terminaison du webhook qui est appelé de manière asynchrone lorsqu'un enregistrement est terminé. Si l'enregistrement du message est hébergé par Vonage, ce webhook contient l'URL suivante URL nécessaire pour télécharger l'enregistrement et d'autres métadonnées. Non
eventMethod La méthode HTTP utilisée pour faire la demande à eventUrl. La valeur par défaut est POST. Non
transcription [Beta] Défini comme un objet vide, {}pour utiliser les valeurs par défaut ou personnaliser avec Paramètres de transcription Non

Paramètres de transcription

Option Description Exigée
language La langue (BCP-47 ) pour l'enregistrement que vous transcrivez. Cette fonction prend actuellement en charge les mêmes langues que l'enregistrement automatique de la parole, et une liste est disponible. ici. Non
eventUrl L'URL du point de terminaison du webhook qui est appelé de manière asynchrone lorsqu'une transcription est terminée. Non
eventMethod La méthode HTTP utilisée par Vonage pour faire la demande à eventUrl. La valeur par défaut est POST. Non
sentimentAnalysis [Avant-première pour les développeurs] Effectue une analyse des sentiments sur les segments de transcription de l'enregistrement des appels. Renvoie une valeur comprise entre -1 (sentiment négatif) et 1 (sentiment positif) pour chaque segment. La valeur par défaut est false. Non

Remarque : la durée maximale de transcription des appels vocaux est de 2 heures.

Paramètres de retour des enregistrements

Voir le Référence pour les webhooks pour les paramètres d'enregistrement ou de transcription qui sont renvoyés au eventUrl.

Conversation

Vous pouvez utiliser le conversation pour créer des conférences standard ou modérées, tout en préservant le contexte de communication. L'utilisation de conversation avec le même name réutilise les mêmes données persistantes Conversation. La première personne à appeler le numéro virtuel attribué à la conversation la crée. Cette action est synchrone.

Note: vous pouvez inviter jusqu'à 200 personnes à votre conversation.

Les exemples suivants du BCN montrent comment configurer différents types de conversation. Vous pouvez utiliser le answer_url afin de vous assurer que vous envoyez un NCCO aux participants et un autre à l'animateur.

[
  {
    "action": "conversation",
    "name": "nexmo-conference-standard",
    "record": true,
    "transcription": {
      "eventUrl": [ "https://example.com/transcription" ],
      "eventMethod": "POST",
      "language": "he-IL"
    }
  }
]

Vous pouvez utiliser les options suivantes pour contrôler un conversation action :

Option Description Exigée
name Le nom de la salle de conversation. Les noms sont classés par espace de noms jusqu'au niveau de l'application et région. Oui
musicOnHoldUrl Une URL vers le mp3 à diffuser aux participants jusqu'à ce que la conversation commence. Par défaut, la conversation démarre lorsque la première personne appelle le numéro virtuel associé à votre In-App Voice. Pour diffuser ce mp3 avant que le modérateur ne se joigne à la conversation, définissez l'option startOnEnter à faux pour tous les utilisateurs autres que le modérateur. Non
startOnEnter La valeur par défaut de vrai garantit que la conversation commence lorsque l'appelant se joint à la conversation name. Régler sur faux pour les participants dans le cadre d'une conversation animée. Non
endOnExit Indique si une conversation modérée se termine lorsque le modérateur raccroche. La valeur est fixée à faux par défaut, ce qui signifie que la conversation ne se termine que lorsque le dernier participant raccroche, que le modérateur soit ou non encore en ligne. Définir endOnExit à vrai pour mettre fin à la conversation lorsque le modérateur raccroche. Non
record Régler sur vrai pour enregistrer cette conversation. Pour les conversations standard, les enregistrements commencent lorsqu'un ou plusieurs participants se connectent à la conversation. Pour les conversations modérées, les enregistrements commencent lorsque le modérateur se connecte. C'est-à-dire lorsqu'un NCCO est exécuté pour la conversation nommée où startOnEnter est fixé à vrai. Lorsque l'enregistrement est terminé, l'URL à partir de laquelle vous avez téléchargé l'enregistrement est envoyée à l'URL de l'événement. Vous pouvez remplacer l'URL par défaut de l'événement d'enregistrement et la méthode HTTP par défaut en fournissant des eventUrl et eventMethod dans les options de la conversation définition de l'action.
Par défaut, l'audio est enregistré au format MP3. Voir la page enregistrement pour plus de détails.
Non
canSpeak Une liste d'UUID de jambe par lesquels ce participant peut être entendu. Si cette liste n'est pas fournie, le participant peut être entendu par tout le monde. Si une liste vide est fournie, le participant ne sera entendu par personne. Non
canHear Liste des UUID de jambe que ce participant peut entendre. Si cette liste n'est pas fournie, le participant peut entendre tout le monde. Si une liste vide est fournie, le participant n'entendra aucun autre participant. Non
mute Régler sur vrai pour mettre le participant en sourdine. Le son du participant ne sera pas diffusé dans la conversation et ne sera pas enregistré. Lors de l'utilisation de canSpeak, le mute n'est pas pris en charge. Non
transcription Paramètres de transcription. Si elle est présentée (même en tant qu'objet vide), la transcription est activée. Le paramètre d'enregistrement doit être réglé sur vrai. Voir Paramètres de transcription ci-dessus pour plus de détails. Non

Connecter

Vous pouvez utiliser le connect pour connecter un appel à des terminaux tels que des numéros de téléphone ou un poste VBC.

Cette action est synchrone, après une relier l'action suivante de la pile NCCO est traitée. Une action de connexion se termine lorsque le terminal que vous appelez est occupé ou indisponible. Vous appelez les terminaux de manière séquentielle en imbriquant les actions de connexion.

Les exemples suivants du BCN montrent comment configurer différents types de connexions.

[
  {
    "action": "talk",
    "text": "Please wait while we connect you"
  },
  {
    "action": "connect",
    "eventUrl": ["https://example.com/events"],
    "timeout": "45",
    "from": "447700900000",
    "endpoint": [
      {
        "type": "phone",
        "number": "447700900001",
        "dtmfAnswer": "2p02p"
      }
    ]
  }
]

Vous pouvez utiliser les options suivantes pour contrôler un connect action :

Option Description Exigée
endpoint Tableau de endpoint pour s'y connecter. Actuellement, il est possible d'utiliser un maximum d'un endpoint objet. Types de terminaux disponibles. Oui
from Un nombre en E.164 qui identifie l'appelant. Il doit s'agir de l'un de vos numéros virtuels Vonage si vous vous connectez à un téléphone réel, sinon l'appel ne sera pas connecté. Non
randomFromNumber Régler sur true pour utiliser un numéro de téléphone aléatoire comme from. Le numéro sera sélectionné dans la liste des numéros attribués à l'application en cours. L'application essaiera d'utiliser le(s) numéro(s) du même pays que la destination (si disponible). randomFromNumber: true ne peut pas être utilisé en même temps que from. La valeur par défaut est false. Non
eventType Régler sur synchronous à :
  • faire le connect action synchrone
  • permettre eventUrl pour renvoyer un NCCO qui remplace le NCCO actuel lorsqu'un appel passe à des états spécifiques.
Non
timeout Si l'appel reste sans réponse, définissez le nombre de secondes avant que Vonage n'arrête la sonnerie endpoint. Doit être un nombre entier entre 1 et 120. La valeur par défaut est 60. Non
limit Durée maximale de l'appel en secondes. La valeur par défaut et la valeur maximale sont 7200 secondes (2 heures). Non
machineDetection Configurer le comportement lorsque Vonage détecte qu'une destination est un répondeur. Régler sur soit :
  • continue - Vonage envoie une requête HTTP à event_url avec l'événement Call machine
  • hangup - mettre fin à l'appel
Non
advancedMachineDetection Configurer le comportement de la détection avancée des machines de Vonage. Remplacements machineDetection si les deux sont activés. Voir l'article Référence API pour plus de détails sur les paramètres. Cette fonction est payante ; les tarifs exacts peuvent être consultés sur le site Internet de la Commission européenne. Prix de l'API Voice sous la rubrique "Fonctions programmables". Non
eventUrl Définir le point de terminaison du webhook que Vonage appelle de manière asynchrone sur chacun des points de terminaison possibles. Appeler les États. Si eventType est fixé à synchronous les eventUrl peut renvoyer un NCCO qui remplace le NCCO actuel en cas de dépassement de délai. Non
eventMethod La méthode HTTP utilisée par Vonage pour faire la demande à eventUrl. La valeur par défaut est POST. Non
ringbackTone Une valeur URL qui pointe vers un ringbackTone à lire en boucle jusqu'à la appelantafin qu'ils n'entendent pas le silence. Les ringbackTone s'arrêtera automatiquement lorsque l'appel sera entièrement connecté. Il n'est pas recommandé d'utiliser ce paramètre lors d'une connexion à un terminal téléphonique, car l'opérateur fournira son propre système d'appel. ringbackTone. Exemple : "ringbackTone": "http://example.com/ringbackTone.wav". Non

Types et valeurs des points de terminaison

Téléphone (PSTN) - numéros de téléphone au format E.164

Valeur Description
type Le type d'extrémité : phone pour un terminal RTPC.
number Le numéro de téléphone auquel se connecter en E.164 format.
dtmfAnswer Définir les chiffres qui sont envoyés à l'utilisateur dès que l'appel est pris. Les chiffres * et # Les chiffres sont respectés. Vous créez des pauses en utilisant p. Chaque pause dure 500 ms.
onAnswer Un objet JSON contenant un url clé. L'URL sert de NCCO à exécuter dans le numéro connecté, avant que cet appel ne soit joint à votre conversation existante. En option, la touche ringbackTone peut être spécifiée avec une valeur URL qui pointe vers un fichier ringbackTone à lire en boucle jusqu'à la appelantIls n'entendent donc pas que du silence. Les ringbackTone s'arrêtera automatiquement lorsque l'appel sera entièrement connecté. Exemple : {"url":"https://example.com/answer", "ringbackTone":"http://example.com/ringbackTone.wav" }. Veuillez noter que la clé ringback est toujours pris en charge.
shaken Pour les clients de Vonage qui sont tenus par la FCC de signer leurs propres appels vers les États-Unis, nous offrons la possibilité de passer des appels Voice API en utilisant votre propre signature.

Cette fonction n'est disponible que sur demande. Les appels dont la signature n'est pas valide seront rejetés. Veuillez nous contacter pour plus d'informations.

Lorsque vous utilisez cette option, vous devez placer le contenu de l'en-tête d'identité STIR/SHAKEN que Vonage doit utiliser pour cet appel. Le format attendu est le suivant :
  • un JWT avec l'en-tête, la charge utile et la signature
  • un info avec un lien vers le certificat
  • un alg (algorithme) paramètre indiquant le type de cryptage utilisé
  • a ppt (type de passeport) qui doit être shaken
Reportez-vous à l'exemple fourni sous le tableau.

Exemple de la shaken option :

eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cHM6Ly9jZXJ0LmV4YW1wbGUuY29tL3Bhc3Nwb3J0LnBlbSJ9.eyJhdHRlc3QiOiJBIiwiZGVzdCI6eyJ0biI6WyIxMjEyNTU1MTIxMiJdfSwiaWF0IjoxNjk0ODcwNDAwLCJvcmlnIjp7InRuIjoiMTQxNTU1NTEyMzQifSwib3JpZ2lkIjoiMTIzZTQ1NjctZTg5Yi0xMmQzLWE0NTYtNDI2NjE0MTc0MDAwIn0.MEUCIQCrfKeMtvn9I6zXjE2VfGEcdjC2sm5M6cPqBvFyV9XkpQIgLxlvLNmC8DJEKexXZqTZ;info=<https://stir-provider.example.net/cert.cer>;alg=ES256;ppt="shaken"

Applications - Connecter l'appel à une application compatible RTC

Valeur Description
type Le type d'extrémité : app pour un Applications.
user Le nom d'utilisateur de l'utilisateur auquel se connecter. Ce nom d'utilisateur doit avoir été ajouté en tant qu'utilisateur.

WebSocket - le WebSocket auquel se connecter

Valeur Description
type Le type d'extrémité : websocket pour une WebSocket.
uri L'URI de la websocket vers laquelle vous diffusez votre flux.
content-type Le type de média Internet pour l'audio que vous diffusez. Les valeurs possibles sont les suivantes : audio/l16;rate=16000 ou audio/l16;rate=8000.
headers Un objet JSON contenant les métadonnées souhaitées. Voir se connecter à un websocket par exemple les en-têtes.
authorization Configuration facultative définissant la manière dont le Authorization L'en-tête HTTP est défini dans la poignée de main d'ouverture de WebSocket. Utiliser l'en-tête type: "vonage" pour que l'API Voice inclue le même JWT que celui utilisé pour les webhooks signés dans le fichier Authorization (Bearer <JWT>). Utiliser type: "custom" pour envoyer un Authorization mot pour mot. Lors de l'utilisation de type: "custom"vous devez également fournir value contenant la valeur de l'en-tête brut à inclure (par exemple, Bearer eyJhbGciOi... ou ApiKey X9Z...). Lors de l'utilisation de type: "vonage", value est ignorée. Plus d'informations ici.

SIP - le point d'extrémité SIP auquel se connecter

Valeur Description
type Le type d'extrémité : sip pour le SIP.
uri L'URI SIP du point d'accès auquel vous vous connectez dans le format suivant sip:rebekka@sip.example.com. Pour utiliser TLS et/ou SRTPcomprennent respectivement transport=tls ou media=srtp à l'URL avec le point-virgule ; comme délimiteur, par exemple : sip:rebekka@sip.example.com;transport=tls;media=srtp. Notez que cette propriété s'exclut mutuellement avec user et domain.
user Les user de l'URI. Il sera utilisé avec l'élément domain pour créer l'URI SIP complet. Si vous définissez cette propriété, vous devez également définir la propriété domain et quitter uri non paramétré.
domain L'identifiant d'un tronc créé à l'aide du tableau de bord. Il doit s'agir d'un domaine provisionné avec succès à l'aide de la fonction Tableau de bord SIP Trunking ou le API SIP programmable. Les URI fournis dans le tronc seront utilisés dans le cadre de la procédure d'appel d'offres. user pour créer l'URI SIP complet. Par exemple, si l'URI dans le tronc est : sip.example.com et user est example_userVonage enverra l'appel à example_user@sip.example.com. Si vous définissez cette propriété, vous devez laisser uri non défini. Notez que cette propriété se réfère au nom de domaine, et non à l'URI du domaine.
headers key => value des paires de chaînes contenant toutes les métadonnées dont vous avez besoin, par exemple { "location": "New York City", "occupation": "developer" }. Les en-têtes sont transmis dans le cadre de l'INVITE SIP en tant que X-key: value les en-têtes. Ainsi, dans l'exemple, ces en-têtes sont envoyés : X-location: New York City et X-occupation: developer.
standardHeaders Un objet JSON contenant une seule clé User-to-User. Elle est utilisée pour transmettre des informations d'utilisateur à utilisateur si elle est prise en charge par le fournisseur, conformément à la procédure suivante RFC 7433. Contrairement à headersla clé ne sera pas précédée de X-puisqu'il est normalisé. Par exemple : { "User-to-User": "342342ef34;encoding=hex" }. Vonage ne validera pas le contenu de l'en-tête User-to-User, si ce n'est pour s'assurer qu'il utilise des caractères valides et que le contenu ne dépasse pas le nombre maximal de caractères autorisé (256).

Pour comprendre comment votre application peut recevoir et traiter les en-têtes personnalisés SIP à la place, consultez la page suivante sur SIP programmable. Si vous souhaitez savoir comment votre application peut envoyer des en-têtes SIP, consultez la page Guide de référence des webhooks de l'API Voice.

VBC - l'extension Vonage Business Cloud (VBC) pour se connecter à .

Valeur Description
type Le type d'extrémité : vbc pour une extension VBC.
extension le poste VBC auquel connecter l'appel.

Parler

Les talk envoie un discours synthétisé à une conversation.

Le texte fourni dans l'action "talk" peut être soit simple, soit formaté à l'aide de la fonction SSML. Les balises SSML fournissent des instructions supplémentaires au synthétiseur de synthèse vocale qui vous permettent de régler la hauteur, la prononciation et de combiner des textes dans plusieurs langues. Les balises SSML sont basées sur XML et envoyées en ligne dans la chaîne JSON.

Par défaut, l'action talk est synchrone. Cependant, si vous définissez bargeIn à vrai vous devez définir un entrée plus loin dans la pile NCCO. Les exemples NCCO suivants montrent comment envoyer un message vocal synthétisé à une conversation ou à un appel :

[
  {
    "action": "talk",
    "text": "You are listening to a Call made with Voice API"
  }
]

Vous pouvez utiliser les options suivantes pour contrôler un parler action :

Option Description Exigée
text Une chaîne de 1 500 caractères maximum (à l'exclusion des balises SSML) contenant le message à synthétiser dans l'appel ou la conversation. Une simple virgule dans text ajoute une courte pause au discours synthétisé. Pour ajouter une pause plus longue, un break doit être utilisée dans le SSML. Pour utiliser la balise SSML vous devez entourer le texte d'une balise speak élément. Oui
bargeIn Régler sur true de sorte que cette action se termine lorsque l'utilisateur interagit avec l'application, que ce soit par DTMF ou par entrée vocale ASR. Utilisez cette fonction pour permettre aux utilisateurs de choisir une option sans avoir à écouter l'intégralité du message dans votre application. Réponse vocale interactive (RVI). Si vous réglez bargeIn à true l'action de non-parole suivante dans la pile NCCO doit soit un input action. La valeur par défaut est false.

Une fois bargeIn est fixé à true il restera true (même si bargeIn: false est défini dans une action suivante) jusqu'à ce qu'un input l'action est rencontrée
Non
loop Le nombre de fois où text est répétée avant que l'appel ne soit fermé. La valeur par défaut est 1. Réglez-la à 0 pour que la boucle soit infinie. Non
level Le niveau de volume auquel la parole est jouée. Cette valeur peut être comprise entre -1 à 1 avec 0 étant la valeur par défaut. Non
language La langue (BCP-47 ) pour le message que vous envoyez. Par défaut : en-US. Les valeurs possibles sont énumérées dans le Guide de synthèse vocale. Non
style Le style vocal (tessiture, tessiture et timbre). Par défaut : 0. Les valeurs possibles sont énumérées dans le Guide de synthèse vocale. Non
premium Régler sur true pour utiliser la version premium du style spécifié si elle est disponible, sinon la version standard sera utilisée. La valeur par défaut est false. Vous trouverez plus d'informations sur Premium Voices dans la rubrique Guide de synthèse vocale. Non

Paramètres de retour de la conversation

Voir Référence pour les webhooks pour les paramètres qui sont renvoyés au eventUrl.

Flux

Les stream permet d'envoyer un flux audio à une Conversation

Par défaut, l'action stream est synchrone. Cependant, si vous définissez bargeIn à vrai vous devez définir un entrée plus tard dans la pile NCCO.

L'exemple suivant du BCN montre comment envoyer un flux audio à une conversation ou à un appel :

[
  {
    "action": "stream",
    "streamUrl": ["https://acme.com/streams/music.mp3"]
  }
]

Vous pouvez utiliser les options suivantes pour contrôler un flux action :

Option Description Exigée
streamUrl Un tableau contenant une URL unique vers un fichier audio mp3 ou wav (16 bits) à diffuser dans l'appel ou la conversation. Oui
level Définit le niveau audio du flux dans l'intervalle -1 >=niveau<=1 avec une précision de 0,1. La valeur par défaut est 0. Non
bargeIn Régler sur true de sorte que cette action se termine lorsque l'utilisateur interagit avec l'application, que ce soit par DTMF ou par entrée vocale ASR. Utilisez cette fonction pour permettre aux utilisateurs de choisir une option sans avoir à écouter l'intégralité du message dans votre application. Réponse vocale interactive (RVI) ). Si vous définissez bargeIn à true sur une action de flux supplémentaire, puis sur l'action non de flux suivante dans la pile NCCO doit soit un input action. La valeur par défaut est false.

Une fois bargeIn est fixé à true il restera true (même si bargeIn: false est défini dans une action suivante) jusqu'à ce qu'un input est rencontrée.
Non
loop Le nombre de fois où audio est répétée avant la fermeture de l'appel. La valeur par défaut est 1. Régler sur 0 pour tourner en boucle à l'infini. Non

Le flux audio auquel il est fait référence doit être un fichier au format MP3 ou WAV. Si vous rencontrez des problèmes lors de la lecture du fichier, veuillez l'encoder selon les spécifications techniques suivantes : Quels types de fichiers audio préenregistrés puis-je utiliser ?

Si vous lisez le même fichier audio plusieurs fois, par exemple en utilisant le même enregistrement dans plusieurs appels, envisagez d'ajouter un paramètre Cache-Control à la réponse URL avec les valeurs appropriées.

Cache-Control: public, max-age=360000

Cela permet à Vonage de mettre en cache votre fichier audio au lieu de le télécharger à chaque fois, ce qui peut améliorer considérablement la performance et l'expérience de l'utilisateur. La mise en cache est prise en charge pour les URL HTTP et HTTPS.

Paramètres de retour des cours d'eau

Voir Référence pour les webhooks pour les paramètres qui sont renvoyés au eventUrl.

Entrée

Vous pouvez utiliser le input pour collecter les chiffres ou les paroles de la personne que vous appelez. Cette action est synchrone, Vonage traite l'entrée et la transmet dans l'interface de l'appelant. paramètres envoyé au eventUrl que vous configurez dans votre demande. Votre point de terminaison webhook doit renvoyer un autre NCCO qui remplace le NCCO existant et contrôle l'appel en fonction de l'entrée de l'utilisateur. Vous pouvez utiliser cette fonctionnalité pour créer un serveur vocal interactif (SVI). Par exemple, si votre utilisateur appuie sur 4 ou dit "Sales", vous renvoyez un relier NCCO qui transmet l'appel à votre service commercial.

L'exemple suivant du NCCO montre comment configurer un terminal IVR :

[
  {
    "action": "talk",
    "text": "Please enter a digit or say something"
  },
  {
    "action": "input",
    "eventUrl": [
      "https://example.com/ivr"
    ],
    "type": [ "dtmf", "speech" ],
    "dtmf": {
      "maxDigits": 1
    },
    "speech": {
      "context": [ "sales", "support" ]
    }
  }
]

L'exemple suivant du NCCO montre comment utiliser bargeIn pour permettre à un utilisateur d'interrompre un talk action. Il convient de noter qu'une action input action doit suivre toute action ayant un bargeIn (par exemple talk ou stream).

[
  {
    "action": "talk",
    "text": "Please enter a digit or say something",
    "bargeIn": true
  },
  {
    "action": "input",
    "eventUrl": [
      "https://example.com/ivr"
    ],
    "type": [ "dtmf", "speech" ],	
    "dtmf": {
      "maxDigits": 1
    },
    "speech": {
      "context": [ "sales", "support" ]
    }	
  }
]

Les options suivantes peuvent être utilisées pour contrôler un input action :

Option Description Exigée
type Type d'entrée acceptable, peut être défini comme [ "dtmf" ] pour l'entrée DTMF uniquement, [ "speech" ] pour ASR uniquement, ou [ "dtmf", "speech" ] pour les deux. Oui
dtmf Paramètres DTMF. Non
speech Paramètres de reconnaissance vocale. Non
mode Mode de traitement des entrées, actuellement uniquement applicable aux DTMF. Les valeurs valides sont synchronous (par défaut) et asynchronous. Si elle est réglée sur asynchronous, tous Paramètres DTMF doit être laissé vide. En mode asynchrone, les chiffres sont envoyés un par un au webhook de l'événement en temps réel. En mode asynchrone, les chiffres sont envoyés un par un au webhook de l'événement en temps réel. synchronous les entrées sont contrôlées par les paramètres DTMF et sont envoyées par lots. Non
eventUrl Vonage envoie les chiffres pressés par l'appelant à cette URL 1) après que l'appelant a appuyé sur la touche timeOut une pause dans l'activité ou lorsque # est appuyé pour DTMF ou 2) après que l'utilisateur a cessé de parler ou 30 secondes de parole pour l'entrée vocale. Non
eventMethod La méthode HTTP utilisée pour envoyer des informations sur les événements à event_url La valeur par défaut est POST. Non

Paramètres d'entrée DTMF

Remarque : Ces réglages ne s'appliquent pas si le mode est fixé à asynchronous.

Option Description Exigée
timeOut Le résultat de l'activité de l'appelant est envoyé au eventUrl point de terminaison du webhook timeOut secondes après la dernière action. La valeur par défaut est 3. Le maximum est de 10. Non
maxDigits Le nombre de chiffres que l'utilisateur peut appuyer. La valeur maximale est de 20la valeur par défaut est 4 chiffres. Non
submitOnHash Régler sur true afin que l'activité de l'appelant soit envoyée à votre point de terminaison webhook à l'adresse eventUrl après avoir appuyé sur #. Si # n'est pas enfoncé, le résultat est soumis après timeOut secondes. La valeur par défaut est false. En d'autres termes, le résultat est envoyé à votre point de terminaison webhook après que timeOut secondes. Non

Paramètres de reconnaissance vocale

Option Description Exigée
uuid L'identifiant unique du segment de l'appel dont l'utilisateur doit capturer la parole, défini comme un tableau à un seul élément. Par défaut, il s'agit du premier segment joint de l'appel. Non
endOnSilence Contrôle la durée pendant laquelle le système attendra que l'utilisateur cesse de parler pour décider que la saisie est terminée. La valeur par défaut est 2.0 (secondes). Les valeurs possibles sont comprises entre 0.4 secondes et 10.0 secondes. Non
language Langue attendue du discours de l'utilisateur. Format : BCP-47. Défaut : en-US. Liste des langues prises en charge. Non
context Tableau d'indices (chaînes) pour améliorer la qualité de la reconnaissance si certains mots sont attendus de la part de l'utilisateur. Non
startTimeout Contrôle la durée pendant laquelle le système attend que l'utilisateur commence à parler. Les valeurs possibles sont comprises entre 1 seconde et 60 secondes. La valeur par défaut est 10. Non
maxDuration Contrôle la durée maximale du discours (à partir du moment où l'utilisateur commence à parler). La valeur par défaut est 60 (secondes). Les valeurs possibles sont comprises entre 1 et 60 secondes. Non
saveAudio Régler sur true donc l'enregistrement de la parole (recording_url) est envoyé à votre point de terminaison webhook à l'adresse eventUrl. La valeur par défaut est false. Non
sensitivity Sensibilité audio utilisée pour différencier le bruit de la parole. Il s'agit d'une valeur entière où 10 représente une faible sensibilité et 100 une sensibilité maximale. La valeur par défaut est 90. Non

L'exemple suivant montre les paramètres envoyés au eventUrl pour l'entrée DTMF :

{
  "speech": { "results": [ ] },
  "dtmf": {
    "digits": "1234",
    "timed_out": true
  },
  "from": "15551234567",
  "to": "15557654321",
  "uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
  "conversation_uuid": "bbbbbbbb-cccc-dddd-eeee-0123456789ab",
  "timestamp": "2020-01-01T14:00:00.000Z"
}

L'exemple suivant montre les paramètres renvoyés au eventUrl pour la saisie vocale :

{
  "speech": {
    "recording_url": "https://api-us.nexmo.com/v1/files/eeeeeee-ffff-0123-4567-0123456789ab",
    "timeout_reason": "end_on_silence_timeout",
    "results": [
      {
        "confidence": "0.9405097",
        "text": "sales"
      },
      {
        "confidence": "0.70543784",
        "text": "sails"
      },
      {
        "confidence": "0.5949854",
        "text": "sale"
      }
    ]
  },
  "dtmf": {
    "digits": null,
    "timed_out": false
  },
  "from": "15551234567",
  "to": "15557654321",  
  "uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
  "conversation_uuid": "bbbbbbbb-cccc-dddd-eeee-0123456789ab",
  "timestamp": "2020-01-01T14:00:00.000Z"
}

Paramètres de retour d'entrée

Voir Référence pour les webhooks pour les paramètres d'entrée qui sont renvoyés au eventUrl.

Notifier

Utiliser le notify pour envoyer une charge utile personnalisée à l'URL de votre événement. Votre point de terminaison webhook peut renvoyer un autre NCCO qui remplace le NCCO existant ou renvoyer un payload vide, ce qui signifie que le NCCO existant continuera à s'exécuter.

[
  {
    "action": "notify",
    "payload": {
      "foo": "bar"
    },
    "eventUrl": [
      "https://example.com/webhooks/event"
    ],
    "eventMethod": "POST"
  }
]
Option Description Exigée
payload Le corps JSON à envoyer à l'URL de l'événement. Oui
eventUrl L'URL à laquelle envoyer les événements. Si vous renvoyez un NCCO lorsque vous recevez une notification, il remplacera le NCCO actuel. Oui
eventMethod La méthode HTTP à utiliser pour l'envoi de payload à votre eventUrl. Non

Messages vocaux Paramètres vocaux

Option Description Exigée
language La langue (BCP-47 ) pour les invites. Par défaut : en-US. Les valeurs possibles sont énumérées dans le Guide de synthèse vocale. Non
style Le style vocal (tessiture, tessiture et timbre). Par défaut : 0. Les valeurs possibles sont énumérées dans le Guide de synthèse vocale. Non

Attendre

Vous pouvez utiliser le wait pour ajouter une période d'attente et suspendre l'exécution du BCN en cours pendant un nombre de secondes spécifié.

L'action est synchrone. La période d'attente commence lorsque l'action d'attente est exécutée dans le BCN et se termine après la valeur de temporisation fournie ou par défaut. À ce stade, le BCN reprend l'exécution. L'action timeout est un nombre flottant. Les valeurs valides sont comprises entre 0,1 seconde et 7200 secondes. Les valeurs inférieures à 0,1 prennent par défaut la valeur 0,1 seconde, et les valeurs supérieures à 7200 prennent par défaut la valeur 7200 secondes. Si elle n'est pas spécifiée, la valeur par défaut est de 10 secondes.

Notesi vous avez besoin d'un rappel informant de la fin de l'action d'attente, ajoutez une action de notification après l'action d'attente.

L'exemple suivant du BCN montre comment exécuter l'action d'attente :

[
  {
    "action": "talk",
    "text": "Welcome to a Vonage moderated conference"
  },
  {
    "action": "wait",
    "timeout": 0.5
  },
  {
    "action": "talk",
    "text": "We will connect you when an agent is available"
  }
]

Vous pouvez utiliser les options suivantes pour contrôler un wait action :

Option Description Exigée
timeout Contrôle la durée de la période d'attente avant l'exécution de l'action suivante dans le NCCO. Ce paramètre est une valeur flottante. Les valeurs valides sont comprises entre 0,1 seconde et 7 200 secondes. Les valeurs inférieures à 0,1 prennent par défaut la valeur 0,1 seconde, et les valeurs supérieures à 7200 prennent par défaut la valeur 7200 secondes. La valeur par défaut est 10. Non

Transfert

Les transfer est synchrone. Vous pouvez l'utiliser pour déplacer les segments d'appel d'une conversation en cours vers une autre conversation existante. L'action transfer est terminée pour la conversation en cours, et le NCCO de la conversation cible continue à contrôler le comportement de la conversation cible. Tous les segments de la conversation en cours sont transférés dans la conversation cible, en respectant les paramètres audio (canHear, canSpeak, mute) s'ils sont fournis.

L'exemple suivant du BCN montre comment exécuter l'action de transfert :

[
   ...
   {
     "action": "transfer",
     "conversationId": "CON-f972836a-550f-45fa-956c-12a2ab5b7d22",
     "canHear": [ "9c132730-8c22-4760-a4dc-40502f05b444" ]
   }
   ...
]

Vous pouvez utiliser les options suivantes pour contrôler une action de transfert :

Option Description Exigée
conversation_id ID de la conversation cible, défini comme une chaîne de caractères. Oui
canHear Liste des UUID de jambe que ce participant peut entendre, définie comme un tableau de chaînes. S'il n'est pas fourni, le participant peut entendre tout le monde. Si une liste vide est fournie, le participant n'entendra aucun autre participant. Non
canSpeak Une liste d'UUID de jambe que ce participant peut entendre, définie comme un tableau de chaînes. S'il n'est pas fourni, le participant peut être entendu par tout le monde. Si une liste vide est fournie, le participant ne sera entendu par personne. Non
mute La valeur "true" permet de mettre le participant en sourdine. Le son du participant ne sera pas diffusé dans la conversation et ne sera pas enregistré. Lors de l'utilisation de canSpeak, le mute n'est pas pris en charge. Non