Nano Hash - криптовалюты, майнинг, программирование

Amazon Alexa, Alexa-приложение и промежуточное ПО

уже 2 дня езжу по разным маршрутам и не могу понять. Возможно, кто-то сможет пролить свет на мои проблемы. Я пытаюсь запустить бот-сервер, который подключается к нескольким платформам, и уже работает около 5.

Сейчас я также пытаюсь интегрировать Alexa. Я вижу запросы Alexa, поступающие на мой сервер (так что навыки Alexa и конфигурация конечной точки верны), однако это также заняло у меня довольно много времени, поскольку Amazon, по-видимому, отправляет трафик только на порт 443, поэтому разрешено определение другого номера порта в центре разработки Amazon. , но ничего не делает... красиво! Решается добавлением балансировщика нагрузки с переадресацией портов.

На настоящий вопрос. Я пытаюсь использовать alexa-app в качестве основы из следующего примера:

var express = require("express");
var alexa = require("alexa-app");
var express_app = express();

var app = new alexa.app("sample");

app.intent("number", {
    "slots": { "number": "AMAZON.NUMBER" },
    "utterances": ["say the number {-|number}"]
  },
  function(request, response) {
    var number = request.slot("number");
    response.say("You asked for the number " + number);
  }
);

// setup the alexa app and attach it to express before anything else 
app.express({ expressApp: express_app });

// now POST calls to /sample in express will be handled by the app.request() function 
// GET calls will not be handled 

// from here on, you can setup any other express routes or middleware as normal 

Часть, которую я не могу понять, заключается в том, как использовать это, когда я настраиваю свой экспресс-сервер в одном файле, а затем хочу использовать функцию промежуточного программного обеспечения для настройки моего слушателя во втором файле... что-то вроде:

приложение.js:

var express = require("express");
var express_app = express();

https.createServer({
    key: fs.readFileSync(key),
    cert: fs.readFileSync(cert),
    ca: fs.readFileSync(ca)
}, app).listen(port, function () {
   console.log("http:  api server listening on port " + port);
});

app.use('/alexa', controller.Bot.Messenger.Listener.botMiddleWare());

слушатель.js:

var alexa = require("alexa-app");
var app = new alexa.app("sample");

bot.botMiddleWare = function botMiddleWare () {
    return <return function to connect to express in app.js>;
}

Спасибо за любую помощь или указатели!


  • Я не привязан к alexa-app, поэтому, если у людей есть другие библиотеки, которые можно использовать для достижения этой цели, я очень открыт для предложений. 06.04.2017
  • В конце концов мне удалось заставить это работать на основе Express и Alexa-приложения. 02.05.2017
  • не могли бы вы опубликовать свое решение в качестве ответа на этот вопрос? 23.07.2017
  • пытаюсь использовать alexa-sdk. Он достаточно четко определен. 10.10.2017

Ответы:


1

В конце концов мне удалось подключить мой основной app.js через маршрутизатор epxress к функции getMessagingHandler приложения alexa. Итак, в app.js направьте ваш веб-хук Alexa на getMessagingHandler в вашем слушателе, а затем в слушателе:

var bot = new alexa.app('my_bot');

bot.getMessagingHandler = function getMessagingHandler() {
    return function (req, res) {
         req.on('end', function(){
             var jsonData = JSON.parse(requestBody);
             if(jsonData.request.type == "LaunchRequest") {
               // handle response here
             }
         }
    }
}
module.exports = bot;

В основном app.js:

app.use('/alexa', controller.Bot.Alexa.Listener.getMessagingHandler());
28.07.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..