2016-10-22 2 views
0

Ich bin mir nicht sicher, ob der Erfolg Callback von Twilio Authy register_user() feuert oder nicht. In meinem CodeTwilio Authy Callback Problem

var authyUsrId; 
//global.authyUsrId; 

app.post('/forTwilio', function(req, res){ 
    // send the received data to Twilio Authy 
    authy.register_user('[email protected]', '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}); 
}); 

Obwohl neue Benutzer wird erfolgreich zu Authy zugegeben, und die Antwortstatus ist 200.

ich den Wert von authyUsrId etwas in den Erfolg Rückruf von register_user() und es verwenden, setzen wollen in die JSON-Antwort, die ich an die POST-Anfrage sende

Aber in der Antwort, die ich bin immer nur dieses

{name: 'hello'}

Gibt es irgendeine Weise besonders den register_user() Abschnitt Rückruf zu debuggen?

Antwort

1

Twilio Entwickler Evangelist hier.

Ich sehe, Sie haben das Problem in your answer gelöst, aber ich wollte nur erklären, was los war und warum das die Lösung für Sie war.

In Originalcode:

app.post('/forTwilio', function(req, res){ 
    authy.register_user('[email protected]', '8753565612', '91', function(err, res){ 
     authyUsrId = 'world'; 
    }); 
    res.json({name: 'hello', msg: authyUsrId}); 
}); 

Sie legen die authyUsrId Variable in Ihrem Rückruf von API-Anfrage an Authy. Sie versuchen dann, authyUsrId in dem Aufruf zu verwenden, um mit JSON zu antworten. register_user ist jedoch ein asynchroner Aufruf, so dass der Code darunter vor dem Code ausgeführt wird, der innerhalb des Rückrufs ausgeführt wird. Tatsächlich muss die reguster_user-Funktion eine HTTP-Anforderung stellen, sodass der Rückruf nur ausgeführt wird, sobald die Anforderung abgeschlossen ist.

Wenn Sie zu Ihrem ursprünglichen Code hinzugefügt Protokollierung, wie folgt aus:

Sending JSON response 
Received response from Authy 

Ihr fix war zu reagieren Sie innerhalb der Callback ursprünglichen Web-Anfrage:

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

Sie in Ihrem Protokoll sehen würden , wenn Sie alle benötigten Daten haben. Und deshalb funktioniert es. Wenn ich Ihren ursprünglichen Code aktualisiere, würde es jetzt wie aussehen:

app.post('/forTwilio', function(req, res){ 
    authy.register_user('[email protected]', '8753565612', '91', function(err, res){ 
     authyUsrId = 'world'; 
     res.json({name: 'hello', msg: authyUsrId}); 
    }); 
}); 

Hoffe das macht Sinn.

+0

danke @philnash. Es war sehr hilfreich. – somnathbm

0

Ich löste es. Das Senden der Antwort direkt vom Erfolgsrückruf von register_user() funktioniert.

app.post('/forTwilio', function(req, res){ 

    // send the received data to Twilio Authy 
    authy.register_user('[email protected]', '9224753123', '91', function(err, res2){ 
     res.send(res2.user); 
    }); 
}); 
Verwandte Themen