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

使用Twilio API添加参会者时,如何让现有参会者听到拨号铃声?

解决方案:让Twilio会议参会者听到拨打第三方的铃声

我来帮你搞定这个问题!要让会议里的现有参会者听到拨打第三方时的铃声,Twilio有几种简单靠谱的实现方式,下面给你一步步拆解:

方法1:添加临时播放铃声的参会者

这是最直接的方案——在发起第三方呼叫前,先向会议中加入一个“虚拟”参会者,专门循环播放铃声,等第三方接通后再移除这个虚拟参会者。

步骤1:创建播放铃声的TwiML

先在Twilio控制台创建一个TwiML Bin,内容如下(可以用自定义铃声或Twilio内置的等待音乐替代):

<Response>
  <!-- loop="0"表示无限循环播放,直到该参与者被移除 -->
  <Play loop="0">https://your-public-server.com/ringtone.mp3</Play>
  <!-- 如果没有自定义铃声,也可以用Twilio内置的等待音乐:
  <Play loop="0">http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient</Play>
  -->
</Response>

步骤2:调用API添加铃声参与者到会议

用你熟悉的编程语言(比如Python)调用Twilio API,把这个TwiML对应的URL作为临时参与者加入会议:

from twilio.rest import Client

# 替换成你的Twilio账号信息
account_sid = "YOUR_ACCOUNT_SID"
auth_token = "YOUR_AUTH_TOKEN"
client = Client(account_sid, auth_token)

# 添加播放铃声的临时参与者
ringtone_participant = client.conferences("YOUR_CONFERENCE_SID") \
    .participants \
    .create(
        from_="YOUR_TWILIO_PHONE_NUMBER",
        to="YOUR_TWILIO_PHONE_NUMBER",  # 用自己的Twilio号码作为临时呼叫对象,不会产生额外费用
        url="YOUR_TWIML_BIN_URL"  # 替换成你刚才创建的TwiML Bin的URL
    )

步骤3:拨打第三方并接入会议

接着发起对第三方用户的呼叫,呼叫接通后将其接入会议,同时移除铃声参与者:

# 发起第三方呼叫,接通后接入会议
third_party_call = client.calls.create(
    from_="YOUR_TWILIO_PHONE_NUMBER",
    to="THIRD_PARTY_PHONE_NUMBER",
    url="YOUR_CONNECT_CONFERENCE_TWIML_URL",  # 这个TwiML用来把第三方接入会议
    status_callback="YOUR_STATUS_CALLBACK_URL",  # 用来监听呼叫状态
    status_callback_event=["answered"]
)

对应的接入会议的TwiML(同样可以放在TwiML Bin里):

<Response>
  <Dial>
    <Conference>YOUR_CONFERENCE_NAME</Conference>
  </Dial>
</Response>

步骤4:呼叫接通后停止铃声

在你的status_callback_url接口中,当检测到第三方呼叫状态为answered时,移除刚才添加的铃声参与者:

# 假设这是你的status callback接口逻辑
from flask import request
from twilio.rest import Client

@app.route("/call-status", methods=["POST"])
def call_status():
    call_status = request.form.get("CallStatus")
    conference_sid = "YOUR_CONFERENCE_SID"
    ringtone_participant_sid = "STORED_PARTICIPANT_SID"  # 要提前存储步骤2中返回的participant.sid

    if call_status == "answered":
        client = Client("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN")
        # 移除铃声参与者,停止播放铃声
        client.conferences(conference_sid) \
            .participants(ringtone_participant_sid) \
            .delete()
    return "", 200

方法2:利用会议的Announcement功能(简化版)

如果不需要持续的铃声,只是想给现有参会者播放一段“正在邀请新成员”的提示音+单次铃声,可以直接调用Twilio的会议Announcement API:

# 向会议播放提示音和铃声
client.conferences("YOUR_CONFERENCE_SID") \
    .announcements \
    .create(
        url="YOUR_ANNOUNCEMENT_TWIML_URL"
    )

对应的Announcement TwiML:

<Response>
  <Say voice="alice">正在邀请新成员加入会议,请稍候</Say>
  <Play>https://your-public-server.com/ringtone.mp3</Play>
</Response>

这种方式适合不需要持续循环铃声的场景,播放一次提示后等待第三方接入即可。

注意事项

  • 确保你的铃声/提示音文件是公开可访问的MP3格式,Twilio才能正常获取并播放
  • 临时参与者的呼叫不会产生额外费用,因为是Twilio号码内部呼叫到TwiML,不会接通真实线路
  • 可以根据需求调整铃声的循环次数或提示内容,优化参会者体验

这样操作下来,现有会议成员就能清晰感知到正在邀请第三方加入的操作啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:18:23