2016-08-04 2 views
0

Я пытаюсь создать боттон facebook, используя этот учебник https://github.com/jw84/messenger-bot-tutorial/tree/master/. Я получаю эту ошибку, когда пытаюсь открыть сервер, написание узла index.js в Терминале.Ошибка facebook bot [ПОМОЩЬ]

events.js:141 
    throw er; // Unhandled 'error' event 
^
Error: listen EADDRINUSE :::5000 
at Object.exports._errnoException (util.js:873:11) 
at exports._exceptionWithHostPort (util.js:896:20) 
at Server._listen2 (net.js:1250:14) 
at listen (net.js:1286:10) 
at Server.listen (net.js:1382:5) 
at EventEmitter.listen (/Users/lauralisboa/Desktop/botchi/node_modules/express/lib/application.js:617:24) 
at Object.<anonymous> (/Users/lauralisboa/Desktop/botchi/index.js:65:5) 
at Module._compile (module.js:409:26) 
at Object.Module._extensions..js (module.js:416:10) 
at Module.load (module.js:343:32) 

Код, который у меня есть на index.js файл это один (копия пасты из учебника):

'использовать строгий'

const express = require('express') 
    const bodyParser = require('body-parser') 
    const request = require('request') 
    const app = express() 

    app.set('port', (process.env.PORT || 5000)) 

    // Process application/x-www-form-urlencoded 
    app.use(bodyParser.urlencoded({extended: false})) 

    // Process application/json 
    app.use(bodyParser.json()) 

    // Index route 
    app.get('/', function (req, res) { 
      res.send('Hello world, I am a chat bot') 
    }) 

    // for Facebook verification 
    app.get('/webhook/', function (req, res) { 
      if (req.query['hub.verify_token'] === 'my_voice_is_my_password_verify_me') { 
       res.send(req.query['hub.challenge']) 
      } 
      res.send('Error, wrong token') 
    }) 

    app.post('/webhook/', function (req, res) { 
      let messaging_events = req.body.entry[0].messaging 
      for (let i = 0; i < messaging_events.length; i++) { 
       let event = req.body.entry[0].messaging[i] 
       let sender = event.sender.id 
       if (event.message && event.message.text) { 
        let text = event.message.text 
        sendTextMessage(sender, "Text received, echo: " + text.substring(0, 200)) 
       } 
      } 
      res.sendStatus(200) 
    }) 

    const token="EAAXaNuLUMG8BAHDd3XJBhGNFQT2D6D5z8QfkOZAgKFWYVyiXh29r9jeZATDYFHseoFdHxBmizWUIyDK8YyVJCsTpNlrtJuS5Ia4qSeAZASkZCKqlnvPlw3EDw5IiZB1mEnLe6N9iZAqbDu050EbVSsSVbYFRl9BxiyWmoYLuEDOAZDZD" 

    function sendTextMessage(sender, text) { 
      let messageData = { text:text } 
      request({ 
       url: 'https://graph.facebook.com/v2.6/me/messages', 
       qs: {access_token:token}, 
       method: 'POST', 
       json: { 
        recipient: {id:sender}, 
        message: messageData, 
       } 
      }, function(error, response, body) { 
       if (error) { 
        console.log('Error sending messages: ', error) 
       } else if (response.body.error) { 
        console.log('Error: ', response.body.error) 
       } 
      }) 
    } 

// раскрутить сервер

app.listen(app.get('port'), function() { 

console.log('running on port', app.get('port')) 

})

Спасибо за внимание, Laura

+0

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

ответ

0

Вы работаете в своей локальной коробке или на коробке Heroku? Если вы находитесь в локальном поле, то другой процесс использует порт 5000. Если вы используете Linux-вкус, тогда sudo netstat -anlp может помочь найти, какой процесс использует порт. Может быть, это еще один пример той же работы?

Во многих случаях запуск приложения полностью на Heroku проще. См. Мою статью Facebook Bots for Fun and Profit. Это указывает на аналогичную настройку FB Bot, но с приложением, полностью запущенным на Heroku. Пример выглядит более полно, чем тот, с которым вы работаете.

Пример бот DMS Software Bot

Исходный код Github fb-robot

+0

Спасибо! Решено :) – Laura

+0

Удачи вам в бот, мне было очень весело с моей. Если бы мой ответ был полезным, пожалуйста, примите его или проголосуйте за него. –