我正在尝试构建一种技能,该技能将接受用户输入,基于该输入运行查询并从数据库返回一些信息。
我在AWS RDS上设置了一个数据库实例,并且这项技术可以在lambda上处理一些javascript代码,但是我正在努力链接它们。
我可以使用php文件在本地查询数据库,但不会在lambda端运行服务器
我应该重新构建php的全部技能吗?
还是将db端点添加到我的alexa技能中?在那种情况下,我将如何编码意图等
我敢肯定这必须已经完成,但是我一直在努力寻找一个可以为初学者解释的地方。
更新
所以我尝试通过aws lambda中的javascript文件对以下php文件进行ajax调用
这只是来自w3。.
<?php
$servername = "arn of database";
$username = "";
$password = "";
$dbname = "";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM testtable";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"] . "\n";
}
} else {
echo "0 results";
}
$conn->close();
?>
我现在无法理解,除非代码在服务器上运行,否则我无法进行ajax调用
这使我进入节点并尝试下面的代码,但是我不确定是否甚至可以在aws lambda上运行它?
var http = require('http');
var answer = "";
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World!');
var mysql = require('mysql');
var connection = mysql.createConnection({
host : '',
user : '',
password : '',
database : ''
});
connection.connect();
connection.query('SELECT * FROM testtable', function (error,
results, fields) {
if (error) throw error;
answer = results;
});
}).listen(8080);
"use strict";
var Alexa = require("alexa-sdk");
var handlers = {
'LaunchRequest': function() {
this.response.speak("HIC launched. Would you like me to list all
machines?").listen();
this.emit(':responseReady');
},
'ListIntent': function () {
// var name = this.event.request.intent.slots.answer.value;
this.response.speak(ListPlant());
this.emit(':responseReady');
}
}
var ListPlant = function() {
return answer;
};
exports.handler = function(event, context, callback){
var alexa = Alexa.handler(event, context);
alexa.registerHandlers(handlers);
alexa.execute();
};
上面是我使用一个有效的lambda函数(从严格开始使用的地方)并将其粘贴到查询数据库的节点上方的结果,并将其保存在名为answer的变量中,然后再说一遍。
ATM我只是在测试连接等,因此要求Alexa回答问题,将来listPlant函数会更多
这是走正确的路吗?
还是需要放在单独的文件中?
是否需要将arn添加到技能端点?
我甚至可以在AWS中运行这样的节点吗?如果没有,我应该采用哪种方法?
我决心做到这一点,所以即使只是发布带有一些信息的链接也将受到感激
到目前为止,我发现使用的是python,这不是问题,它可以通过lambda进行ajax调用
提前谢谢! x
答案 0 :(得分:0)
Alexa将调用Lambda函数。然后,该Lambda函数可以访问您的Amazon RDS数据库。
用PHP编写Alexa函数并不容易。最受支持的语言是 Node.js / JavaScript 和 Python 。
我建议您首先进行 Alexa基本技能的实验,以便您了解交互模型以及如何编写技能,然后扩展功能以提供您的特定功能。 (但不是在PHP中。)