JWT Token使用Twilio JS Client API时出现问题

时间:2013-12-12 07:51:10

标签: javascript python django twilio

我正在创建一个webb应用程序,用户可以点击数字并从浏览器拨号。

我正在使用Twilio JS Client API和Django后端来生成功能令牌。我正在使用这个Python Helper Library

一切似乎都运转得很好但是一旦我试图打电话,我的客户就会收到错误:

Uncaught Twilio.Exception: 31205: [object Object] twilio.min.js:45

WebSocket is already in CLOSING or CLOSED state.

错误31205是JWT令牌过期错误,这很奇怪,因为当我点击拨号时令牌的生命周期最多为1分钟。

这是我在Django中的view方法,它生成一个很好的功能令牌:

def dialer(req, phone_number):
    capability = TwilioCapability(settings.TWILIO_ACCOUNT_SID,
                                  settings.TWILIO_AUTH_TOKEN)
    # allow outgoing voice
    capability.allow_client_outgoing(settings.TWILIO_APP_SID)
    profile = user_models.UserProfile.objects.get(user=req.user)
    v = {'capability_token': capability.generate(expires=600),
         'phone_number': phone_number, 'user': req.user, 
         'caller_id': profile.user_phone}
    return shortcuts.render_to_response('dialer.html', v)

这是我的dialer.html中的JavaScript:

Twilio.Device.setup('{{capability_token}}'); 
Twilio.Device.ready( function(device) {
   console.log('Device ready...');
}); 
Twilio.Device.connect({
   CallerId:'{{caller_id}}',
   PhoneNumber: '{{phone_number}}'
});
$('#hang-up').click( function() {
   Twilio.Device.disconnectAll();
});

关于我为什么会收到此错误的任何想法? Twilio文档说,capability_token的生命周期默认为一小时。

谢谢!

PS。我使用Node.js作为后端制作了完全相同的应用程序,并且效果很好:)

1 个答案:

答案 0 :(得分:2)

解决了!

所以代码没有任何问题。问题是我的虚拟机有错误的日期/时间设置。

因此,当您尝试从Twilio检索功能令牌时,请确保这是正确的:)