这是我在StackOverflow上的第一篇文章!
我遇到了一个我正在创建的新机器人的问题。
首先,这是我在 app.js
中的代码
# Example data frame
x <- as.data.frame(
matrix(letters[1:10], nrow = 2)
);
# Change names of columns 2-5
colnames(x)[2:5] <- paste0(colnames(x)[2:5], 1:4);
# Change all column names
colnames(x) <- paste0(colnames(x), 1:5);
&#13;
我在Facebook Developer页面上创建了应用程序并且链接了webhook: Facebook developer page: webhook
如果你继续https://my-personal-bot.herokuapp.com/,应该说
正确部署
但如果你去这里
会说:
凭据无效
如果我记录import express from 'express';
import bodyParser from 'body-parser';
import mongoose from "mongoose";
import { VERIFY_TOKEN, PORT, MONGODB_URI } from './config';
import { botLogic } from './logic';
mongoose.Promise = global.Promise;
mongoose.connect(MONGODB_URI, { useMongoClient: true });
const app = express();
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.get('/', (req, res) => {
res.send('Correcly deployed!');
});
app.get('/webhook', (req, res) => {
if(req.query['hub.verify_token'] === VERIFY_TOKEN) {
res.send(req.query['hub.challenge']);
}
res.send('Invalid credentials');
});
app.post('/webhook/', async (req, res) => {
try {
await res.sendStatus(200);
await Promise.all(req.body.entry.map(async entry => {
await Promise.all(entry.messaging.map(async update => {
console.log(`Received update from ${update.sender.id}`);
await botLogic(update);
}));
}));
} catch (e) {
console.error(e);
}
});
app.get('*', (req, res) => {
res.status('404').send('Nothing interesting here');
});
app.listen(PORT, function() {
console.log('running on port', PORT);
});
,结果就是一个空对象。
我之前构建了几个机器人,这个初始设置非常简单,但是,在这个特殊情况下,我无法弄清楚问题出在哪里。我使用的API版本是 v2.11 ,这是我以前机器人的唯一区别。
提前感谢您的任何建议!
答案 0 :(得分:0)
app.use(bodyParser.urlencoded({extended: false}));
此外,请求是使用您的应用密钥加密的,因此您需要在使用bodyParser.json()之前对其进行解码
app.use(xhub({algorithm: 'sha1', secret: process.env.APP_SECRET }));
当然你想在heroku控制台中设置你的env变量APP_SECRET
有关webhooks的完整示例用法,请查看https://github.com/mduppes/webhooks_test/blob/master/index.js