나는 node.js에 로봇을 쓰고 있습니다. console.log에 메시지 발신자의 IP 주소를 코드를 삽입하려면 어떻게해야합니까? 일부 자동 로그인을 수행하려면 IP 주소가 필요합니다.node.js가있는 로봇에서 사용자의 IP 주소를 얻는 방법은 무엇입니까?
많은 감사 !!
나는 node.js에 로봇을 쓰고 있습니다. console.log에 메시지 발신자의 IP 주소를 코드를 삽입하려면 어떻게해야합니까? 일부 자동 로그인을 수행하려면 IP 주소가 필요합니다.node.js가있는 로봇에서 사용자의 IP 주소를 얻는 방법은 무엇입니까?
많은 감사 !!
당신은 당신의 답변을
request.connection.remoteAddress
감사에 의해 요청 객체에서 IP 주소를 얻을 수 있습니다! 다음은 내 코드와 나는 그냥 당신이 나를 위해 일한 것은이 것을 알려하려는 "request.connection.remoteAddress"
var connect = require('connect');
var http = require('http');
var net = require('net');
var app = connect();
// require request-ip and register it as middleware
var requestIp = require('request-ip');
// This loads the environment variables from the .env file
require('dotenv-extended').load();
var builder = require('botbuilder');
var restify = require('restify');
var Store = require('./store');
var spellService = require('./spell-service');
// Setup Restify Server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function() {
console.log('%s listening to %s', server.name, server.url);
});
// Create chat bot
var connector = new builder.ChatConnector({
appId: "---------",
appPassword: "-------"
});
var bot = new builder.UniversalBot(connector);
server.post('/api/messages', connector.listen());
// You can provide your own model by specifing the 'LUIS_MODEL_URL' environment variable
// This Url can be obtained by uploading or creating your model from the LUIS portal: https://www.luis.ai/
const LuisModelUrl = 'https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/861083a6-05c9-4785-4656798036q873842524&verbose=true';
// Main dialog with LUIS
var recognizer = new builder.LuisRecognizer(LuisModelUrl);
bot.dialog('/', new builder.IntentDialog({ recognizers: [recognizer] })
.matches('SearchHotels', [
function (session, args, next) {
session.send('Welcome to xxx! We are analyzing your message: \'%s\'', session.message.text);
// try extracting entities
var cityEntity = builder.EntityRecognizer.findEntity(args.entities, 'builtin.geography.city');
var airportEntity = builder.EntityRecognizer.findEntity(args.entities, 'AirportCode');
if (cityEntity) {
// city entity detected, continue to next step
session.dialogData.searchType = 'city';
next({ response: cityEntity.entity });
} else if (airportEntity) {
// airport entity detected, continue to next step
session.dialogData.searchType = 'airport';
next({ response: airportEntity.entity });
} else {
// no entities detected, ask user for a destination
builder.Prompts.text(session, 'Please enter your destination');
}
},
function (session, results) {
var destination = results.response;
var message = 'Looking for hotels';
if (session.dialogData.searchType === 'airport') {
message += ' near %s airport...';
} else {
message += ' in %s...';
}
session.send(message, destination);
// Async search
Store
.searchHotels(destination)
.then((hotels) => {
// args
session.send('I found %d hotels:', hotels.length);
var message = new builder.Message()
.attachmentLayout(builder.AttachmentLayout.carousel)
.attachments(hotels.map(hotelAsAttachment));
session.send(message);
// End
session.endDialog();
});
}
])
.matches('ShowHotelsReviews', (session, args) => {
// retrieve hotel name from matched entities
var hotelEntity = builder.EntityRecognizer.findEntity(args.entities, 'Hotel');
if (hotelEntity) {
session.send('Looking for reviews of \'%s\'...', hotelEntity.entity);
Store.searchHotelReviews(hotelEntity.entity)
.then((reviews) => {
var message = new builder.Message()
.attachmentLayout(builder.AttachmentLayout.carousel)
.attachments(reviews.map(reviewAsAttachment));
session.send(message);
});
}
})
.matches('Help', builder.DialogAction.send('Hi! Try asking me things like \'search hotels in Seattle\', \'search hotels near LAX airport\' or \'show me the reviews of The Bot Resort\''))
.onDefault((session) => {
session.send('Sorry, I did not understand \'%s\'. Type \'help\' if you need assistance.', session.message.text);
}));
if (process.env.IS_SPELL_CORRECTION_ENABLED === 'true') {
bot.use({
botbuilder: function (session, next) {
spellService
.getCorrectedText(session.message.text)
.then(text => {
session.message.text = text;
next();
})
.catch((error) => {
console.error(error);
next();
});
}
});
}
// Helpers
function hotelAsAttachment(hotel) {
return new builder.HeroCard()
.title(hotel.name)
.subtitle('%d stars. %d reviews. From $%d per night.', hotel.rating, hotel.numberOfReviews, hotel.priceStarting)
.images([new builder.CardImage().url(hotel.image)])
.buttons([
new builder.CardAction()
.title('More details')
.type('openUrl')
.value('https://www.bing.com/search?q=hotels+in+' + encodeURIComponent(hotel.location))
]);
}
function reviewAsAttachment(review) {
return new builder.ThumbnailCard()
.title(review.title)
.text(review.text)
.images([new builder.CardImage().url(review.image)]);
}
u는 다음과 같이 사용할 수 있습니다. server.post ('/ api/messages', function (req, res, next)) { console.log (req.connection.remoteAddress); connector.listen(); }}) ; –
고마워요 !!!! –
도움이 된 것을 기쁘게 생각합니다. –
를 삽입 할 경우 확실하지 않다 :
server.post('/api/messages', [
function(req,res,next){
console.log(req.connection.remoteAddress);
next();
},
connector.listen()
]);
에서는 사용자의 IP 주소를 얻으려면
var app = require('express')();
app.get("/ip", (req, res) => {
console.log(req.ip) // "::ffff:127.0.0.1" ::ffff: is a subnet prefix for IPv4 (32 bit)
let ip = req.ip.split(':');
console.log(ip[3]);
res.json(ip[3]); // ==> 127.0.0.1 You can Get Your Ip address only
});
app.listen(3003);
답변 해 주셔서 감사합니다. 내 메시지 기능에 추가할까요? –
예 메시지가있는 곳에서 요청이 ... 의심되는 경우 메시지 기능 게시 –
답변과 시간을 내 주셔서 대단히 감사합니다! 아래 코드는 마이크로 소프트의 'botbuilder'라이브러리를 사용합니다! –