次の構造のペイロードを受信しようとしています:
MIME マルチパート コンテンツを含む HTTP POST 要求メッセージ。
最初の部分は、呼び出しメタデータをカバーする JSON 形式です。
2 番目の部分は、16 ビット PCM としてエンコードされたウェーブ オーディオです。
以下のコードを書きました。しかし、受信したオーディオは破損しており、ノイズが多く含まれています。傍受した音声ファイルをwireshark経由でダウンロードして聞いてみたところ、送信された音声が判読できることを確認できたので、リクエストデータ(MIME)の扱いが悪いのだと思います。
app.post('/export-call', handler(async (req, res) => {
const body = req.body;
console.log('req:', Object.keys(req.body));
//logger.info(JSON.stringify(req.body));
connectToDb();
if (body.metadata && body.media_audio_wav) {
const metadataParse = JSON.parse(body.metadata)
const metadataObj = metadataParse.metadata
const tempLocation = "/opt/sa/exportBrokerTesting/"
const audio = body.media_audio_wav
const audioBinary = new Buffer(audio, 'binary');
wav.fromScratch(2, 8000, '16', audioBinary, 'binary');
fs.writeFileSync(tempLocation + metadataObj.callId.toString() + '.wav', audioBinary);
} else {
logger.info('Metadata/ Audio is undefined')
res.sendStatus(204)
}
}))