使用 Twilio Conversations 发送音频消息
Sending audio message with Twilio Conversations
我正在尝试发送带有 twillio 对话的音频消息。根据文档,我应该发送一个 contentType 和一个字符串或缓冲区类型的媒体。 JS 中缺少 Buffer 构造函数,所以我使用以下方法创建缓冲区:这是我的发送消息请求(我尝试发送不同的内容类型。甚至是 base64 中的音频。没有任何效果。):
function toBuffer(ab: any) {
const buf = Buffer.alloc(ab.byteLength)
const view = new Uint8Array(ab)
for (let i = 0; i < buf.length; i += 1) {
buf[i] = view[i]
}
return buf
}
const arrayBuffer = await new FileReader().readAsArrayBuffer(new Blob([message.audio]))
chats[chat].conversation?.sendMessage({
contentType: 'audio/wav',
media: toBuffer(arrayBuffer)
}, {
messageId: uuidv4(),
...attributes
})
我请求使用 twillio 对话提供的功能的音频 URL:
message.media.getContentTemporaryUrl()
它returns URL 不包含有效的音频文件,无法播放。请帮助我找到发送有效音频消息并能够播放它的正确方法。
谢谢
看起来您正在使用客户端 JS 库,因此无法使用缓冲区等 Node 功能。
JS SDK 的 media documentation 说:
For JavaScript, you can provide the following as the source for the new media message sent by a Chat-based Conversation Participant:
- A new FormData object containing file information: filename, content-type, size, and all FormData-required information
所以你可以这样做:
const file = document.getElementById("#formInputFile").files[0];
const formData = new FormData();
formData.append('file', file]);
formData.append('contentType', 'audio/wav')'
chats[chat].conversation?.sendMessage(formData);
我正在尝试发送带有 twillio 对话的音频消息。根据文档,我应该发送一个 contentType 和一个字符串或缓冲区类型的媒体。 JS 中缺少 Buffer 构造函数,所以我使用以下方法创建缓冲区:这是我的发送消息请求(我尝试发送不同的内容类型。甚至是 base64 中的音频。没有任何效果。):
function toBuffer(ab: any) {
const buf = Buffer.alloc(ab.byteLength)
const view = new Uint8Array(ab)
for (let i = 0; i < buf.length; i += 1) {
buf[i] = view[i]
}
return buf
}
const arrayBuffer = await new FileReader().readAsArrayBuffer(new Blob([message.audio]))
chats[chat].conversation?.sendMessage({
contentType: 'audio/wav',
media: toBuffer(arrayBuffer)
}, {
messageId: uuidv4(),
...attributes
})
我请求使用 twillio 对话提供的功能的音频 URL:
message.media.getContentTemporaryUrl()
它returns URL 不包含有效的音频文件,无法播放。请帮助我找到发送有效音频消息并能够播放它的正确方法。 谢谢
看起来您正在使用客户端 JS 库,因此无法使用缓冲区等 Node 功能。
JS SDK 的 media documentation 说:
For JavaScript, you can provide the following as the source for the new media message sent by a Chat-based Conversation Participant:
- A new FormData object containing file information: filename, content-type, size, and all FormData-required information
所以你可以这样做:
const file = document.getElementById("#formInputFile").files[0];
const formData = new FormData();
formData.append('file', file]);
formData.append('contentType', 'audio/wav')'
chats[chat].conversation?.sendMessage(formData);