Pierwsze i „błąd, źle walidacja tokenu” podczas próby utworzenia Facebook Chatbot

głosy
2

Próbuję utworzyć Facebook chatbota z NodeJS, Express, a serwerem Heroku.

Tworzę webhook na Heroku i miał go zweryfikować i zapisywane przez Facebook. I wtedy zaczął dodanie kodu, który odpowie na przychodzące wiadomości i nie wydaje się uzyskać to podłączona. To powtarza „Błąd, niewłaściwy walidacji żeton”, gdy próbuję załadować mój webhook w przeglądarce. I gdy próbuję wysłać moje bot komunikat dostaję żadnej odpowiedzi. Mimo, że już go zweryfikować i nie zmienić kod.

Tu jest mój kodu:

var express = require('express');
var bodyParser = require('body-parser');

var app = express();
var port = process.env.PORT || 3000;

// body parser middleware
app.use(bodyParser.urlencoded({ extended: true }));

// test route
//app.get('/', function (req, res) { res.status(200).send('Hello world!') });

app.get('/', function (req, res) {
  if (req.query['hub.verify_token'] === '8FKU9XWeSjnZN4ae') {
    res.send(req.query['hub.challenge']);
  }
  res.send('Error, wrong validation token');
})

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

// error handler
app.use(function (err, req, res, next) {
  console.error(err.stack);
  res.status(400).send(err.message);
});

app.listen(port, function () {
  console.log('Listening on port ' + port);
});

var token = <myToken>;

function sendTextMessage(sender, text) {
  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 message: ', error);
    } else if (response.body.error) {
      console.log('Error: ', response.body.error);
    }
  });
}

Więc jestem zdezorientowany, dlaczego nic się nie dzieje i dlaczego ja dostaję ten błąd. Czuję się jakbym brakuje cały krok. Śledzę ten samouczek przy okazji: https://developers.facebook.com/docs/messenger-platform/quickstart

Każda pomoc jest mile widziana. Dzięki!

Edycja: Oto moje logi Heroku

Heroku

Utwórz 16/04/2016 o 17:13
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
0

Jesteś rzeczywiście użyciu „żądanie”, ale nigdy nie importujesz go w dowolnym miejscu. Oto jak to naprawić:

var request = require("request")

Po dodaniu, że do index.js lub app.js pliku (w zasadzie cokolwiek to plik), upewnij się zrobić:

npm install request --save

To powinno go naprawić. Niestety, nie Heroku błędu i powiedzieć, że nie wiem co „żądanie” jest i dlatego tak trudno było dowiedzieć się tego w pierwszej kolejności!

Odpowiedział 16/04/2016 o 19:06
źródło użytkownik

głosy
0

  1. Nie publikuj swoje pełne tokeny dostępu tutaj!
  2. Masz przetestowane wyjście wyzwanie? Ponieważ to tylko GET i znasz wszystkie wartości można spróbować samemu:your-app-domain.com/your-callback-url?hub_mode=subscribe&hub_verify_token=the_token_you_set_in_your_app_config&hub_challenge=ping który sould print „ping”, czy wszystko działa prawidłowo.
  3. Upewnij się dodać sendStatus (200) z odpowiedzią piasta wyzwanie, too.
  4. Musisz wykupić swoją stronę do aplikacji w pierwszej kolejności. Aby to zrobić uczynić żądanie POST do / państwa-strony-id / subscribed_apps który powinien wrócić "sukces". Można dokonać żądania GET do tego samego punktu końcowego, potem dokładnie sprawdzić swoją aplikację jest zapisany do swojej strony
  5. Nie wspominając które zdarzenia subskrybowane (musi być message_deliveries, wiadomości, messaging_optins, messaging_postbacks)
  6. Upewnij kartę webhooks w aplikacji desce rozdzielczej teraz mówi „kompletna”
  7. Przetestuj ponownie
Odpowiedział 18/04/2016 o 11:34
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more