我在Watson Assistant中进行了交谈,我希望能够从IBM云功能调用一个操作,以便对我的数据库进行查询(Azure)。我不熟悉云功能,所以这可能是一个愚蠢的问题,我不了解如何与数据库建立连接,我尝试编写一些nodejs代码,但是当然我错了,因为它会返回“内部错误” ”。 我也尝试用python而不是nodejs编写一些代码。 同样,这是一个愚蠢的问题,请原谅我。谢谢!
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'my_host',
user: 'my_user',
password: 'my_psw',
database: 'my_db'
});
connection.connect();
rows = connection.query('my_query')
if (!err) {
console.log(typeof(rows));
console.log('The solution is: ', rows);
} else {
console.log(typeof(rows));
console.log('Error while performing Query.');
}
connection.end();
{
"error": "Internal error."
}
import pyodbc as pyodbc
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=my_server;DATABASE=my_db;UID=my_user;PWD=my_pwd')
cursor = conn.cursor()
sql = "my_sql"
cursor.execute(sql)
result = cursor.fetchall()
print(result)
csr = conn.cursor()
csr.close()
del csr
conn.close()
{
"error": "The action did not return a dictionary."
}
答案 0 :(得分:0)
错误来自您如何返回结果。您需要将结果打包到有效的JSON结构中。
return {"sqlresult": myresult}
我在上面的评论中引用了两个教程。 chatbot tutorial使用Node.js来实现云功能。这些功能从Watson Assistant中调用。 Take a look at this action that fetches records from a Db2 database。它打开一个数据库连接,获取记录并将它们打包成JSON结构。然后将该JSON对象返回给Watson Assistant。
本教程还显示了如何将数据库凭据传递到Cloud Function中。