Enregistrement et transcription des appels

Vue d'ensemble

L'API Voice de Vonage permet d'enregistrer le son des appels de plusieurs façons. Vous pouvez :

  1. Enregistrer un appel entre deux personnes de manière passive.
  2. Enregistrez le son d'un seul appelant lorsqu'il est invité à le faire. Par exemple, dans un système de messagerie vocale.
  3. Activer l'enregistrement d'une conversation nommée (utiliser l'action de conversation).

Par défaut, tous les enregistrements sont en format mono, avec tous les segments de la conversation dans un seul canal.

Vonage propose également une enregistrement fractionné où l'audio sera sauvegardé en tant que fichier stéréo. Dans ce cas, l'audio parlé par l'appelant initial sera dans le canal gauche, et l'audio entendu par l'appelant initial sera dans le canal droit. Cette fonction est souvent utile pour la transmission à des systèmes de transcription où l'on souhaite identifier qui a dit quoi.

Pour enregistrer une conversation, vous pouvez utiliser la fonction record dans un BCN. L'enregistrement se comportera différemment selon la manière dont vous configurez l'action. Pour plus d'informations sur la configuration d'un enregistrement, voir la section enregistrer la référence du NCCO

Une fois que le record se termine, Vonage enverra un webhook à l'adresse suivante eventUrl que vous avez spécifié lors de la configuration du record action. Ce webhook contient une URL à partir de laquelle le fichier d'enregistrement peut être téléchargé. Vous devrez vous authentifier avec un JWT signé par la même clé d'application que celle qui a créé l'enregistrement afin de télécharger le fichier d'enregistrement.

Transcription des appels est également disponible ; Vonage enverra un crochet Web à un utilisateur de eventUrl une fois la transcription terminée. Ce webhook contient une URL permettant d'accéder à la transcription. Comme pour l'enregistrement, vous devrez vous authentifier. Veuillez noter qu'il s'agit d'une fonctionnalité 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".

REMARQUE : Une fois l'enregistrement terminé, il est stocké par Vonage pendant 30 jours avant d'être automatiquement supprimé.

Enregistrement synchrone

A record L'action se terminera lorsque l'un ou l'autre des éléments suivants endOnSilence a été atteint, ou le endOnKey est envoyée ou la touche timeout est atteinte. L'enregistrement est alors terminé et un événement d'enregistrement est envoyé à l'adresse suivante event_url avant que l'action suivante ne soit exécutée. Cette fonction est utilisée pour des scénarios similaires à ceux de la messagerie vocale.

Enregistrement asynchrone

Si aucun des endOnSilence, endOnKey ou timeout est activé, 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.

Lors de l'enregistrement d'une conversation nommée, l'enregistrement est toujours asynchrone et lié au cycle de vie de la conférence. Pour enregistrer une conférence, vous devez ajouter le paramètre record à l'attribut true dans votre conversation au sein du BCN.

Enregistrement fractionné

Lors de l'enregistrement d'un appel, vous pouvez activer l'enregistrement fractionné, ce qui donnera un fichier stéréo avec un canal contenant le son envoyé par l'appelant et un autre canal contenant le son entendu par l'appelant.

Enregistrement multicanal

Lors de l'enregistrement d'un appel, vous pouvez activer l'enregistrement multicanal qui permet d'enregistrer séparément jusqu'à 32 segments d'appel. Un fichier contenant le nombre de canaux défini sera renvoyé.

Dans cet exemple, nous démarrons un enregistrement multicanal qui attend trois participants (channels: 3), puis connecte deux numéros supplémentaires à la conversation. Chaque participant apparaît dans son propre canal dans l'enregistrement.

Pour plus d'informations sur le record voir l'action Référence NCCO

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

Si vous avez ajouté un autre connect Dans ce cas, les deux premiers participants apparaîtraient dans leurs propres canaux, tandis que les participants 3 et 4 apparaîtraient ensemble dans le canal 3. Dans ce scénario, vous devrez augmenter le nombre de canaux à 4 pour que chaque participant ait son propre canal. Vous pouvez avoir jusqu'à 32 participants dans une même conversation.

Formats de fichiers

  • Vonage prend en charge l'enregistrement au format MP3, OGG ou WAV, le format par défaut étant MP3 (ou WAV pour l'enregistrement de plus de 2 canaux).
  • Les fichiers MP3 sont enregistrés avec une profondeur de 16 bits et une fréquence d'échantillonnage de 16 kHz. Ils sont encodés avec un débit constant de 32 Kbps.
  • Les fichiers WAV sont enregistrés avec une profondeur de 16 bits et une fréquence d'échantillonnage de 16 kHz.

Tous les formats sont mono par défaut. Si l'enregistrement fractionné est activé, un fichier stéréo est créé avec chaque canal en utilisant la profondeur de bits et les taux d'échantillonnage mentionnés précédemment.

Transcription

Si le transcription est activée, l'enregistrement sera transcrit en utilisant la valeur par défaut de l'option language, en-US :

[
    {
        "action": "record",
        "eventUrl":["https://example.com/recording"],
        "transcription": {}
    }
]

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

En outre, il s'agit d'une fonction 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".

Les paramètres de transcription vous permettent de spécifier un nom de fichier personnalisé. eventUrl et language pour vos transcriptions. Vous trouverez plus d'informations sur le site Référence NCCO. Vous pouvez également choisir d'effectuer une analyse des sentiments sur chaque segment d'enregistrement d'appel.

[
    {
        "action": "record",
        "eventUrl":["https://example.com/recording"],
        "transcription":
        {
            "eventMethod": "POST",
            "eventUrl":["https://example.com/transcription"],
            "language": "en-US",
            "sentimentAnalysis": "true"
        }
    }
]

Une fois la transcription terminée, un rappel sera envoyé à votre enregistrement. eventUrl. Si un enregistrement eventUrl n'est pas spécifié, le webhook sera envoyé à l'application eventUrl:

{
  "conversation_uuid": "CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
  "recording_uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
  "status": "transcribed",
  "transcription_url": "https://api.nexmo.com/v1/files/bbbbbbbb-aaaa-cccc-dddd-0123456789ab",
  "type": "record"
}

L'utilisation de la transcription_url vous pouvez faire une demande

GET
pour récupérer la transcription. Vous devrez vous authentifier avec un JWT signé par la même clé d'application que celle qui a créé l'enregistrement. La réponse de l'application transcription_url contiendra les phrases et une décomposition mot par mot avec leurs scores respectifs de confiance et d'analyse du sentiment :

{
  "ver": "1.0.19",
  "request_id": "6226182254ce513117079b58",
  "channels": [
    {
      "transcript": [
        {
          "sentence": "Transcription example test.",
          "timestamp": 9630,
          "duration": 2642,
          "action_items": [],
          "questions": [],
          "answers": [],
          "raw_sentence": "transcription example test",
          "words": [
            {
              "word": "transcription",
              "start_time": 9630,
              "end_time": 10887,
              "confidence": 1
            },
            {
              "word": "example",
              "start_time": 10952,
              "end_time": 11726,
              "confidence": 0.990055
            },
            {
              "word": "test",
              "start_time": 11728,
              "end_time": 12272,
              "confidence": 0.486845
            }
          ],
          "sentiments": [
            {
              "text_part": "transcription example test",
              "score": 0.1213
            }
          ]
        }
      ],
      "duration": 16.2
    }
  ]
}