Я обновляю чат-чат Facebook до DialogFlow версии 2. У меня проблема с кнопками, они не работают в первый раз, но если пользователь отправляет текстовое сообщение, а затем пытается снова, кнопки начинают работать. Я работаю с Heroku и Node.js, вот результаты лога heroku
Это моя функция sendToDialogFlow
async function sendToDialogFlow(sender, textString, params) {
try {
const sessionPath = sessionClient.sessionPath(
config.GOOGLE_PROJECT_ID,
sessionIds.get(sender)
);
const request = {
session: sessionPath,
queryInput: {
text: {
text: textString,
languageCode: config.DF_LANGUAGE_CODE,
},
},
queryParams: {
payload: {
data: params
}
}
};
const responses = await sessionClient.detectIntent(request);
const result = responses[0].queryResult;
handleDialogFlowResponse(sender, result);
} catch (e) {
console.log('error');
console.log(e);
}
}
А вот и функция handleDialogFlowResponse
function handleDialogFlowResponse(sender, response) {
let responseText = response.fulfillmentMessages.fulfillmentText;
let messages = response.fulfillmentMessages;
let action = response.action;
let contexts = response.outputContexts;
let parameters = response.parameters;
var delay = 4000;
if (isDefined(action)) {
sendTypingOn(sender);
setTimeout(function(){
sendTypingOff(sender);
handleDialogFlowAction(sender, action, messages, contexts, parameters);
},delay);
} else if (isDefined(messages) && (messages.length == 1 && messages[0].type != 0 || messages.length > 1) ) {
sendTypingOn(sender);
setTimeout(function(){
sendTypingOff(sender);
handleMessages(messages, sender);
},delay);
} else if (responseText == '' && !isDefined(action)) {
} else if (isDefined(responseText)) {
sendTypingOn(sender);
setTimeout(function(){
sendTypingOff(sender);
sendTextMessage(sender, responseText);
},delay);
}
}
Спасибо