使用 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);