Twilio Authy Callback问题

时间:2016-10-22 09:57:28

标签: javascript node.js express twilio authy

我不确定Twilio Authy register_user()的成功回调是否正在解雇。在我的代码中

var authyUsrId;
//global.authyUsrId;

app.post('/forTwilio', function(req, res){
    // send the received data to Twilio Authy
    authy.register_user('maverick@example.com', '8753565612', '91', function(err, res){
        //global.authyUsrId = 'world';
                 authyUsrId = 'world';  
    });
    //res.set("Content-Type","application/json");
        res.json({name: 'hello', msg: authyUsrId});
    //res.json({name: 'hello', msg: global.authyUsrId});
});

虽然新用户已成功添加到Authy,但响应状态为200。

我想将authyUsrId的值设置为register_user()成功回调中的某些内容,并将其用于我发送给POST请求的JSON响应中。

但是在回复中我只得到了这个

{name: 'hello'}

有没有办法调试register_user()回调部分?

2 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

我看到你已经在your answer解决了这个问题,但是我只是想解释一下发生了什么以及为什么这是你的解决方案。

在原始代码中:

app.post('/forTwilio', function(req, res){
    authy.register_user('maverick@example.com', '8753565612', '91', function(err, res){
        authyUsrId = 'world';  
    });
    res.json({name: 'hello', msg: authyUsrId});
});

您将回调中的authyUsrId变量从API请求设置为Authy。然后,您尝试在调用中使用authyUsrId来响应JSON。但是,register_user是一个异步调用,因此它下面的代码会在回调中运行的代码之前运行。实际上,reguster_user函数必须发出HTTP请求,因此只有在请求完成后才会运行回调。

如果您将记录添加到原始代码中,请执行以下操作:

app.post('/forTwilio', function(req, res){
    authy.register_user('maverick@example.com', '8753565612', '91', function(err, res){
        console.log("Received response from Authy");
        authyUsrId = 'world';  
    });
    console.log("Sending JSON response");
    res.json({name: 'hello', msg: authyUsrId});
});

您会在日志中看到:

Sending JSON response
Received response from Authy

您的修复是在您拥有所需的所有数据时回复回调中的原始网络请求。这就是它起作用的原因。如果我正在更新您的原始代码,现在看起来像:

app.post('/forTwilio', function(req, res){
    authy.register_user('maverick@example.com', '8753565612', '91', function(err, res){
        authyUsrId = 'world';  
        res.json({name: 'hello', msg: authyUsrId});
    });
});

希望这是有道理的。

答案 1 :(得分:0)

我解决了。直接从app.post('/forTwilio', function(req, res){ // send the received data to Twilio Authy authy.register_user('jimmy@example.com', '9224753123', '91', function(err, res2){ res.send(res2.user); }); }); 的成功回调发送响应。

create procedure select_menu
(
@id int
)
begin
    select * from t_vsubmenu where id=@id
end