Хост бот Node.js (экспресс и боткит) - PullRequest
0 голосов
/ 30 марта 2019

Я только что сделал бот в node.js для приложения Cisco Webex Teams. Мой бот использует "экспресс" и "боткит". «Экспресс» требует прослушивания через порт «3000», а «Botkit» прослушивает через порт «8080».

Я пробовал heroku.com, но он не принимает два предопределенных порта и не сохраняет файлы динамически (fs.write)

var PUBLIC_URL = "http://a796e3b7.ngrok.io";
var port ='3000';
var ACCESS_TOKEN ='xxx';
var SECRET = "xxx";

var express = require('express');
var app = express();

var Botkit = require('botkit');
var controller = Botkit.webexbot({
    log: true,
    public_address: PUBLIC_URL,
    access_token: ACCESS_TOKEN,
    secret: SECRET,
    webhook_name: process.env.WEBHOOK_NAME || 'Email2Webex',
});

controller.setupWebserver(8080, function(err, webserver) {
    controller.createWebhookEndpoints(webserver, bot, function() {
        console.log("Webhooks set up!");
    });
});

app.post('/mailgun', upload.any(),function(req, res, next){

  res.end('ok');

});

app.listen(port);

В настоящее время я использую ngrok для локального размещения бота на своем компьютере и хочу иметь возможность разместить его на сервере, поэтому мне не нужно об этом беспокоиться. как я могу это сделать?

1 Ответ

0 голосов
/ 30 марта 2019

Вы не можете установить порт в приложениях Heroku.Heroku устанавливает порт, который вы должны использовать, через переменную окружения PORT, и вы должны использовать его через process.env.PORT.Вообще говоря, развернутые приложения не должны запускаться на портах разработки, таких как 8080 - если это HTTP-сервер, он должен прослушивать, например, порт 80.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...