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

Twilio通话中麦克风无法静音及状态更新异常的技术求助

Twilio通话中麦克风无法静音及状态更新异常的技术求助

大家好,我目前正在开发一个基于Twilio Voice服务的网页通话界面,现在已经实现了基础的通话接通和挂断功能,但遇到了两个棘手的问题:

  • 静音按钮(Silenciar)完全没有响应,点击后无法切换麦克风的静音状态
  • 通话状态显示(#estado_llamada)只能从初始的“Desconectado(已断开)”更新到“En llamada(通话中)”,后续的状态变化比如通话结束、静音切换都无法同步更新到页面上

我已经检查了前端的按钮绑定函数(toggleMute()、状态更新逻辑),但暂时没找到问题所在。下面是我的完整前端代码(注:拨号盘部分原粘贴内容有截断,我补充了完整的拨号盘结构,不影响核心逻辑排查):

<?php include 'php/conexion.php'; 
/**Validacion de Session**/ 
session_start(); 
if(!isset($_SESSION['user']['ID_Usuario'])){ 
    header("Location: ../"); 
} 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <?php include_once 'include/head.php';?> 
    <!--<script src="js/funciones.js"></script>--> 
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> 
    <script src="js/toast.js"></script> 
    <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script> 
    <!-- <script src="https://media.twiliocdn.com/sdk/js/voice/releases/2.13.0/twilio-voice.min.js"></script> --> 
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css"> 
    <title>Llamadas en linea</title> 
    <style> 
        #contenido_cliente table td { 
            vertical-align: top; 
            padding: 0.25rem 0.5rem; 
        } 
        #contenido_cliente td { 
            padding: 4px 8px; 
            vertical-align: top; 
        } 
    </style> 
</head> 
<?php include_once 'include/navbar.php'; ?> 
<!-- Modal de espera --> 
<div class="container-fluid"> 
    <div class="row"> 
        <?php include_once 'include/slide.php'; ?> 
        <main class="col-md-9 ms-sm-auto col-lg-10 px-md-4"> 
            <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom"> 
                <h1 class="h2 fw-bold"> Llamadas en linea </h1> 
            </div> 
            <div class="card mt-4"> 
                <div class="card-header bg-info text-white"> 
                    <h5 class="mb-0">Llamadas Telefónicas</h5> 
                </div> 
                <div class="card-body"> 
                    <div class="row"> 
                        <!-- COLUMNA IZQUIERDA: Teléfono + Dialpad --> 
                        <div class="col-md-4"> 
                            <!-- Input + Botones --> 
                            <div class="mb-3"> 
                                <label for="numero_llamar" class="form-label">Número a llamar</label> 
                                <input type="text" class="form-control" id="numero_llamar" placeholder="(000) 000 0000"> 
                            </div> 
                            <div class="mb-3"> 
                                <button class="btn btn-success me-2" id="llamar" onclick="realizarLlamada()">Llamar</button> 
                                <button class="btn btn-danger me-2" id="colgar" onclick="colgarLlamada()">Colgar</button> 
                                <button class="btn btn-warning me-2" id="mute" onclick="toggleMute()">Silenciar</button> 
                            </div> 
                            <div class="mb-3"> 
                                <strong>Estado:</strong> 
                                <span id="estado_llamada">Desconectado</span><br> 
                                <strong>Duración:</strong> 
                                <span id="duracion_llamada">00:00</span> 
                            </div> 
                            <!-- Dialpad --> 
                            <div class="border rounded p-3 mt-4"> 
                                <div class="col-md-12 text-center"> 
                                    <div class="d-grid gap-2 mb-2" style="max-width: 200px; margin: auto;"> 
                                        <div class="row"> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('1')">1</button></div> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('2')">2</button></div> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('3')">3</button></div> 
                                        </div> 
                                        <div class="row"> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('4')">4</button></div> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('5')">5</button></div> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('6')">6</button></div> 
                                        </div> 
                                        <div class="row"> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('7')">7</button></div> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('8')">8</button></div> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('9')">9</button></div> 
                                        </div> 
                                        <div class="row"> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('*')">*</button></div> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('0')">0</button></div> 
                                            <div class="col"><button class="btn btn-outline-dark w-100" onclick="agregarNumero('#')">#</button></div> 
                                        </div> 
                                    </div> 
                                </div> 
                            </div> 
                        </div> 
                        <!-- 右侧内容原代码未粘贴完整 --> 
                    </div> 
                </div> 
            </div> 
        </main> 
    </div> 
</div> 
<!-- 核心通话逻辑函数(realizarLlamada/colgarLlamada/toggleMute)放在外部JS文件中 -->

补充说明:
实际测试时我是启用了Twilio Voice SDK的,只是代码里暂时注释掉了。核心的通话函数是按照Twilio官方文档编写的——比如通过Device.connect()获取通话实例,调用call.mute()来切换静音,但点击静音按钮就是没反应;状态更新也只做了通话发起时的一次修改,后续不知道该监听哪些Twilio事件来同步更新。

有没有大佬能帮我排查下这两个问题的原因?谢谢大家!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 10:04:36