在一个新的弹出窗口中调用Twilio

时间:2013-04-05 14:02:30

标签: websocket twilio

如果接收到呼叫的浏览器窗口被重新加载,我将面临实时Twilio呼叫被丢弃的情况。有没有办法克服这种挫折而不影响实时通话?

1 个答案:

答案 0 :(得分:3)

Twilio Evangelist在这里。

根据您的问题,我假设您使用的是Twilio Client JavaScript SDK?如果情况确实如此,那么不幸的是,如果托管SDK的页面被重新加载,浏览器和Twilio之间的连接将会丢失,因为浏览器正在重新加载所有内容,包括JavaScript SDK。

我可以想到几种不同的技术,可以用来帮助避免页面重新加载,还有另一种想法可以帮助你恢复与浏览器的连接因为页面重新加载。这很大程度上取决于您的特定应用以及您尝试为用户创建的体验。

所以为了避免重新加载页面:

1)对服务器使用AJAX请求以避免页面重新加载。如果您的页面包含类似表单的内容,或者您​​希望使用服务器中的数据更新页面内容,则可以使用AJAX请求向服务器而不是正常的整页回发来提交表单,或者检索数据表单服务器。这有助于避免在这两种情况下重新加载整个页面。

2)使用iFrame托管您的页面内容,然后将Twilio SDK放在父页面(定义iFrame的页面)中。这样您就可以重新加载iframe中托管的内容,而无需重新加载整个主页,从而避免重新加载Twilio库。这样做的缺点是,iframe中的内容与其主机之间的通信可能会非常混乱。

这两种技术都不是万无一失的。显然,用户总是可以点击浏览器上的刷新按钮,这会导致连接断开。

如果页面确实被重新加载,并且从Twilio到浏览器的连接被删除,一个想法是利用Twilios功能来帮助重新连接调用者。当用户呼叫您的twilio电话号码时,而不是将它们直接连接到浏览器中运行的Twilio客户端(通过拨打<Client>的客户端),而是将该呼叫者拨入会议<Conference>,然后让浏览器客户端连接到同一个会议。这样做的好处是,如果浏览器断开连接,原始呼叫者将不会被挂断,他们仍将坐在会议室中。只要您保存了会议SID或名称,就可以让浏览器客户端重新连接到该会议。

希望这有助于指明你正确的方向。