Запросите AWS RDS через Alexa

Я пытаюсь создать навык, который будет принимать пользовательский ввод, запускать запрос на его основе и возвращать некоторую информацию из базы данных.

У меня есть экземпляр базы данных, настроенный на AWS RDS, и навык, который работает с некоторым кодом javascript на лямбде, но я изо всех сил пытаюсь связать их.

Я могу запросить базу данных локально, используя файл php, но я не буду запускать сервер на лямбда-стороне

Должен ли я восстановить весь навык в PHP?

Или добавить конечную точку БД в мой навык Алекса? В таком случае, как я буду кодировать намерения и т. Д.

Я уверен, что это должно было быть сделано раньше, но я изо всех сил пытался найти где-нибудь, что объясняет это для новичка.

Обновить

Поэтому я попытался сделать ajax-вызов нижеприведенного php-файла из моего javascript-файла в aws lambda

Это только с 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();
};

Вышеприведенный результат является результатом того, что я взял работающую лямбда-функцию (откуда используется строгий запуск) и вставил над ней какой-то узел, который запрашивает базу данных, сохраняет ее в переменной с именем answer, а затем просто говорит это обратно.

Банкомат, я просто проверяю соединение и т. Д., Поэтому прошу Алексу ответить обратно, в будущем будет больше функции listPlant.

Это правильный путь?

Или это должно быть в отдельных файлах?

Это тот случай, когда мне нужно добавить арн к конечной точке навыка?

Могу ли я запустить такой узел в aws? Если нет, какой подход я должен выбрать?

Я полон решимости получить это, поэтому даже просто опубликовать ссылку с некоторой информацией будет принята с благодарностью

То, что я нашел до сих пор, использует python, который не является проблемой, он делает вызов ajax из lambda.

Заранее спасибо! Икс

-4

Решение

Alexa вызовет лямбда-функцию. Затем эта лямбда-функция может получить доступ к вашей базе данных Amazon RDS.

Нелегко написать функцию Alexa в PHP. Наиболее поддерживаемые языки: Node.js / JavaScript а также питон.

Я предлагаю вам начать с экспериментируя с базовыми навыками Alexa чтобы вы понимали модель взаимодействия и то, как кодировать навык, а затем расширяйте функциональность, чтобы обеспечить вашу конкретную функциональность. (Но не в PHP.)

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector