Node.js - 将会话变量传递给 SQL 服务器函数调用
Node.js - Pass Session Variables to a SQL Server function call
在 MS Teams BOT 中,我有工作对话代码来询问一系列问题,并且 return 在会话中将格式化的响应返回给用户,如下所示:
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 行是 returned.
传递会话变量的正确方法是什么? Google 在这方面并不友善。 :)
提前谢谢你...
编辑:
所以我睡不着,有了一个(奇怪的)想法。将值分配给变量时使用 session.send,如下所示:
session_username = session.send(`${session.dialogData.username}`)
或
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()
我固执地试图访问变量,因为我知道那里有信息。
我测试了返回对话框 results.response 如下所示,它起作用了:
session.dialogData.yesterday = session_yesterday = results.response;
老实说我还是有点奇怪,我不能直接访问变量但是哦好吧 - 我猜是吸取了教训。
谢谢
在 MS Teams BOT 中,我有工作对话代码来询问一系列问题,并且 return 在会话中将格式化的响应返回给用户,如下所示:
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 行是 returned.
传递会话变量的正确方法是什么? Google 在这方面并不友善。 :)
提前谢谢你...
编辑:
所以我睡不着,有了一个(奇怪的)想法。将值分配给变量时使用 session.send,如下所示:
session_username = session.send(`${session.dialogData.username}`)
或
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()
我固执地试图访问变量,因为我知道那里有信息。
我测试了返回对话框 results.response 如下所示,它起作用了:
session.dialogData.yesterday = session_yesterday = results.response;
老实说我还是有点奇怪,我不能直接访问变量但是哦好吧 - 我猜是吸取了教训。
谢谢