TypeError: Невозможно прочитать свойство 'charCodeAt' из неопределенного - иногда кнопка не работает - PullRequest
0 голосов
/ 20 января 2019

Я обновляю чат-чат Facebook до DialogFlow версии 2. У меня проблема с кнопками, они не работают в первый раз, но если пользователь отправляет текстовое сообщение, а затем пытается снова, кнопки начинают работать. Я работаю с Heroku и Node.js, вот результаты лога heroku

enter image description here

Это моя функция 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);
  }
  }

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...