如何使用新令牌设置Twilio.Device?

时间:2014-09-17 09:27:42

标签: javascript token twilio destroy

默认情况下,使用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);
}

1 个答案:

答案 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.`);
    };