Я новичок в Node.js, и у меня возникли проблемы с получением «имени» пользователя facebook с помощью SDK. У меня есть история под названием «приветствие», в которой я хотел бы ответить «Привет {userName}».
Я определил действие имени getUserName, которое связано с историей «приветствие»:
getUserName({context, entities}) {
if(context.fbid) {
return new Promise(function(resolve, reject) {
if (context.userName) {
return requestUserName(context)
.then((json) => {
context.userName = json.first_name;
return context;
})
.catch((err) => {
console.error('Oops! An error occurred while asking the name of the user: ',
err.stack || err);
});
} else {
return resolve(context);
}
});
} else {
console.error('Oops! Couldn\'t find user for session:', sessionId);
// Giving the wheel back to our bot
return Promise.resolve()
}
}
где requestUserName определяется следующим образом:
const requestUserName = (id) => {
const qs = 'access_token=' + encodeURIComponent(FB_PAGE_TOKEN);
return fetch('https://graph.facebook.com/v2.8/' + id +'?' + qs)
.then(rsp => rsp.json())
.then(json => {
if (json.error && json.error.message) {
throw new Error(json.error.message);
}
return json;
});
};
Даже если кажется, что действие сработало, оно не работает, и я понятия не имею, в чем причина :( Удивительно, но срабатывает другое действие, но я не знаю, почему, так как это действие не связано с историей «приветствия». Я думаю, что упустил некоторые ключевые концепции Node.js SDK.
Помощь будет принята с благодарностью :)