You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于树莓派与Twilio实现双向通话的问题求助

树莓派+Jabra+Twilio双向通话问题解决指南

一、通话立即挂断的核心原因

你当前的逻辑没把树莓派端作为通话的有效接入终端。Twilio的<Dial>是用来将现有呼叫转接到另一号码,但你的树莓派并没有被Twilio识别为可连接的通话节点,手机接听后,Twilio找不到对应的音频源对接,所以直接触发挂断。

二、Twilio原生支持双向通话,但要匹配终端类型

Twilio完全支持双向通话,但你的场景里,树莓派(搭配Jabra音箱)属于自定义音频终端,不能通过普通号码转接实现,必须用Media Streams API把树莓派的音频流接入Twilio的通话链路。

三、具体解决步骤

1. 替换<Dial>为<Connect>指令

发起呼叫后,Twilio请求的TwiML要返回<Connect>来关联你的树莓派WebSocket服务,示例TwiML:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Connect>
    <Stream url="wss://你的树莓派公网WebSocket地址"/>
  </Connect>
</Response>

2. 树莓派端处理音频流

  • 用Python音频库(比如pyaudio)捕获Jabra麦克风的输入音频,同时接收Twilio传回的音频并播放到Jabra音箱。
  • 通过WebSocket和Twilio的Media Streams建立连接,把捕获的音频转成PCMU(μ-law)编码后发送给Twilio,同时解码Twilio传来的PCMU音频进行播放。

3. 确保树莓派WebSocket可被Twilio访问

Twilio需要主动连接你的树莓派WebSocket服务,所以树莓派要么有公网IP,要么用内网穿透工具把本地WebSocket端口映射到公网。

四、关键补充

你之前的代码只是触发了手机的呼叫请求,但没有把树莓派的音频链路接入Twilio通话系统,导致手机接听后无有效音频对接,Twilio会自动挂断。只有把树莓派作为通话一端通过流媒体方式接入,才能实现完整的双向交互式通话。

内容的提问来源于stack exchange,提问作者Nathan Hubens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:06:05