我使用Twilio JavaScript SDK在浏览器中拨打和接听电话。作为其中的一部分,我需要在新的弹出窗口中拨打和接听电话。这样,用户可以在不断开呼叫的情况下继续浏览站点。
我有这个用于拨打电话(用户点击一个号码,在我的电话号码window.open
后面发起呼叫)。
但是对于来电,我试图在启动浏览器窗口中执行以下操作:
Twilio.Device.incoming(function (connection) {
$('#callPopup').show();
$('.js-answer-call').on('click', function (event) {
event.preventDefault();
var receiveCallWindow = window.open('/call/incoming', '', 'width=350,height=200');
receiveCallWindow.connection = connection;
$('#callPopup').hide();
});
$('.js-reject-call').on('click', function (event) {
event.preventDefault();
connection.reject();
$('#callPopup').hide();
});
});
将连接对象传递给弹出窗口,然后弹出窗口运行以下代码:
var connection = window.connection;
$(document).ready(function () {
connection.accept();
});
这会接听电话,但是呼叫上下文仍在父窗口内,如果用户离开该页面,它将结束通话。
据我所知,我可以通过一个只包含调用逻辑的主iframe来实现这一点,主框架内有一个主Web应用程序,但是我认为这是一个非常混乱的实现,并希望避免这种情况。
答案 0 :(得分:-1)
Twilio开发者传道者在这里。
在这种情况下,您的问题确实是调用上下文位于父窗口中。我现在唯一想到的是当用户登录时弹出呼叫窗口并准备应答呼叫,然后在弹出窗口中初始化Twilio.Device
。
您仍然可以将此弹出窗口连接到出站呼叫的代码。
这有帮助吗?