默认情况下,使用Twilio帮助程序库生成的所有标记在一小时后过期。但是,您应该将此过期配置为尽可能短的应用程序。
每次用户尝试新连接并尝试设置Twilio设备时,我都会尝试生成新令牌。但它每次都会创造出新的设备。所以所有Twilio设备都有来电,我可以看到多个通知。多个连接创建了一个dmultiple dtmf发送。我只想要一个带有新标记的twilio设备。
Twilio.Device.destroy()
方法存在,但它不起作用。我还有其他选择吗?
如何发布/销毁/停止/删除Twilio.Device?
保存已调用的凭据globalTwilioSagaSetup()
后,再过58分钟后,会生成令牌并完成Twilio.Device设置。
function globalTwilioSagaSetup()
{
// Get Twilio credentials
// Get Twilio Token
// Setup Twilio Device
// For token re-generation before expire. 58min
setInterval(function(){globalTwilioSagaSetup();},3480000);
}
答案 0 :(得分:0)
虽然在当前版本的twilio lib(即1.2)中有类似的问题。问题是,一旦setup
被调用ready
事件被触发,但只有在第一次调用setup
方法之后才会被触发。这意味着即使用新令牌初始化设备,也会出现建立新连接的问题。因此,调用Twilio.Device.destroy()
然后setup
然后连接(通过ready
事件)就可以解决该问题。这是一个例子:
srv.connectToTwilio = () => $q((resolve, reject) => {
var connection;
try {
connection = Twilio.Device.connect();
} catch (err) {
$log.debug('Device.connect(): throw', err);
}
if (connection) {
try {
connection.accept(() => {
$log.debug(`Twilio connection.accept.`);
resolve();
});
} catch (err) {
$log.debug('connection.accept(): throw', err);
}
} else {
reject(`Device.connect() did not return connection`);
}
});
srv.connect = (token) => {
return srv.setToken(token).then(() => srv.connectToTwilio());
};
srv.disconnect = () => {
shouldBeConnected = false;
try {
Twilio.Device.activeConnection().disconnect();
} catch (error) {
$log.debug(error);
} finally {
Twilio.Device.destroy();
}
$log.debug(`Twilio disconnect.`);
};