Node.js

WebSocketの作成

まず connection イベントを使用して、Webhook サーバーがオンラインになり、通話音声を受信する準備ができたことを報告できます:

expressWs.getWss().on('connection', function (ws) {
  console.log('Websocket connection is open');
});

Voice API WebSocket に音声を書き込む場合、音声は 特定形式.そのためには、バイナリーオーディオデータを正しいサイズの配列に分離する関数が必要です:

function chunkArray(array, chunkSize) {
    var chunkedArray = [];
    for (var i = 0; i < array.length; i += chunkSize)
        chunkedArray.push(array.slice(i, i + chunkSize));
    return chunkedArray;
}

次に /socket ルートを呼び出します。WebSocketが接続されると、このルートが呼び出されます:

app.ws('/socket', (ws, req) => {
    const wav = new WaveFile(fs.readFileSync("./sound.wav"));
    wav.toSampleRate(16000);
    wav.toBitDepth("16");

    const samples = chunkArray(wav.getSamples()[0], 320);
    for (var index = 0; index < samples.length; ++index) {
        ws.send(Uint16Array.from(samples[index]).buffer);
    }
})

このルートはディスクからオーディオファイルをロードします。 ギットハブ次に、WaveFileライブラリを使用して、Voice APIのサンプルレートとビット深度を変更します。次に、オーディオの最初のチャンネルからオーディオサンプルを取得し、先ほどの関数を使用してバイナリーオーディオデータ配列のサイズを変更します。最後に、バイナリオーディオデータが繰り返し処理され、WebSocket経由で send() 関数である。

注: Vonageは3072メッセージしかバッファしません。 ファイルがこれより長い場合は、各メッセージの間に18~19ミリ秒のディレイを入れる必要があります。