Node.js — передача переменных сеанса в вызов функции SQL Server

В MS Teams BOT у меня есть рабочий код диалога, чтобы задать ряд вопросов и вернуть отформатированный ответ пользователю в сеансе, например:

session.send(`Details: <br/>Question1: ${session.dialogData.Question1}   <br/>Question2: ${session.dialogData.Question2} <br/>Question3: ${session.dialogData.Question3}`);

Итак, я знаю, что нужные мне значения находятся в переменных сеанса. Теперь я хочу передать переменные сеанса функции вставки SQL (executeStatement):

    var session_username = session.dialogData.username
    var session_yesterday = session.dialogData.yesterday
    var session_today = session.dialogData.today
    var session_obstacles = session.dialogData.obstacles

    executeStatement(session_username, session_yesterday, session_today, session_obstacles)

Я могу передавать строки, и функция работает нормально. Но когда я пытаюсь передать переменные сеанса, как указано выше, или просто передать session.dialogData.yesterday, например, прямо в функцию, весь код работает нормально - никаких ошибок не выдается, но переменные сеанса не вставляются и возвращается 0 строк .

Как правильно передать переменную сеанса? Google не был добр в этом отношении. :)

Заранее спасибо...

Редактировать:

Так что я не мог спать, и у меня появилась (странная) идея. Используйте session.send при присвоении значений переменной следующим образом:

session_username = session.send(`${session.dialogData.username}`)

or

session_username = session.send(session.dialogData.username)

Он записывает в базу данных, но это значение [object Object]. Итак, как мне получить фактическое значение? Хм... Все еще ищу

Редактировать 2:

Чтобы получить значение объекта, которое я пробовал:

session_yesterday = session.dialogData.yesterday.text()

и

session_yesterday = session.dialogData.yesterday.value()

При первой попытке .text() я получил следующую ошибку:

TypeError: Cannot read property 'text' of undefined
at Array.<anonymous> (C:\Developer\dailyStatus\index.js:96:56)
at C:\Developer\dailyStatus\node_modules\botbuilder\lib\dialogs\WaterfallDialog.js:67:39
at next (C:\Developer\dailyStatus\node_modules\botbuilder\lib\dialogs\WaterfallDialog.js:92:21)
at WaterfallDialog.beforeStep (C:\Developer\dailyStatus\node_modules\botbuilder\lib\dialogs\WaterfallDialog.js:99:9)

at WaterfallDialog.doStep (C:\Developer\dailyStatus\node_modules\botbuilder\lib\dialogs\WaterfallDialog.js:61:14)
at WaterfallDialog.dialogResumed (C:\Developer\dailyStatus\node_modules\botbuilder\lib\dialogs\WaterfallDialog.js:46:14)
at Session.endDialogWithResult (C:\Developer\dailyStatus\node_modules\botbuilder\lib\Session.js:358:28)
at PromptText.Prompt.invokeIntent (C:\Developer\dailyStatus\node_modules\botbuilder\lib\dialogs\Prompt.js:331:21)
at PromptText.Prompt.replyReceived (C:\Developer\dailyStatus\node_modules\botbuilder\lib\dialogs\Prompt.js:147:18)
at Session.routeToActiveDialog (C:\Developer\dailyStatus\node_modules\botbuilder\lib\Session.js:525:24)
/ - ERROR: Cannot read property 'text' of undefined
/ - Session.endConversation()

person beginAgain    schedule 03.05.2018    source источник
comment
Можете ли вы убедиться, что session.dialogData.yesterday действительно содержит значение перед передачей в SQL.   -  person Gary Liu    schedule 04.05.2018
comment
Спасибо за ответ - эти объекты действительно содержат значения - когда я выполняю session.send(`Спасибо. Ежедневные сведения о статусе: ‹br/›Вчера: ${session.dialogData.yesterday} и т. д., правильное значение отправляется на пользователь в Teams - как мне получить то же значение, чтобы я мог отправить его в функцию SQL?Или я смотрю на это неправильно?   -  person beginAgain    schedule 04.05.2018


Ответы (1)


Я упрямо пытался получить доступ к переменным, потому что я ЗНАЛ, что информация была там.

Я протестировал возвращение в диалоговое окно results.response, как показано ниже, и это сработало:

session.dialogData.yesterday = session_yesterday = results.response;

Честно говоря, мне все еще немного странно, что я не мог просто получить доступ к переменной напрямую, но да ладно - я думаю, урок усвоен.

Спасибо

person beginAgain    schedule 04.05.2018