一、前期准备
首先,确保你拥有一个Facebook账号,并前往Facebook for Developers注册成为开发者。注册后,你可以创建和管理自己的应用,获取必要的API访问权限。
1.创建Facebook应用:
在Facebook开发者平台中,创建一个新的应用,并为其配置Messenger平台。设置应用的基本信息,并同意Messenger平台的条款。完成后,你将获得App ID和App Secret,这是后续开发中用于身份验证的关键信息。
选择开发环境:
选择一个适合你的开发环境,如Node.js、Python或Java等。这里以Node.js为例,你需要在本地或云服务器上安装Node.js及npm(Node Package Manager),并创建一个新的项目目录。
bash复制代码
npm install express body-parser axios |
.安装必要的库,如express用于构建Web服务器,body-parser用于解析请求体,axios用于发起HTTP请求(与Facebook Graph API交互)。
二、配置Webhook
Webhook是Facebook机器人与你的服务器之间的通信桥梁。你需要在Facebook开发者平台上设置Webhook URL,指向你的服务器上的特定端点,并验证其有效性。
1.设置Webhook URL:
在Facebook应用中配置Webhook URL,确保该URL可以接收来自Facebook的POST请求。同时,设置一个验证Token,用于验证Webhook请求的真实性。
编写Webhook验证代码:
使用Node.js或Python编写Webhook验证逻辑。以下是一个Node.js示例:
javascript复制代码
const express = require(‘express’); | |
const bodyParser = require(‘body-parser’); | |
const app = express(); | |
const PORT = process.env.PORT || 3000; | |
app.use(bodyParser.json()); | |
app.get(‘/webhook’, (req, res) => { | |
const verifyToken = req.query[‘hub.verify_token’]; | |
if (verifyToken === ‘YOUR_VERIFY_TOKEN’) { | |
res.send(req.query[‘hub.challenge’]); | |
} else { | |
res.sendStatus(403); | |
} | |
}); | |
app.listen(PORT, () => { | |
console.log(`Server listening on port ${PORT}`); | |
}); |
替换’YOUR_VERIFY_TOKEN’为你的实际验证Token。
三、编写机器人逻辑
当Webhook设置成功后,Facebook将开始向你的服务器发送用户消息。你需要编写代码来解析这些JSON格式的请求体,并根据消息内容生成回复。
1.解析用户消息:
编写函数来解析用户发送的消息,并提取发送者ID和消息内容。
javascript复制代码
app.post(‘/webhook’, (req, res) => { | |
const messagingEvents = req.body.entry[0].messaging; | |
messagingEvents.forEach(event => { | |
if (event.message && event.message.text) { | |
const senderId = event.sender.id; | |
const messageText = event.message.text; | |
// 处理消息逻辑 | |
} | |
}); | |
res.sendStatus(200); | |
}); |
发送回复:
使用Graph API发送回复给用户。以下是一个使用axios发送文本消息的示例:
javascript复制代码
const sendMessage = async (recipientId, messageText) => { | |
try { | |
await axios.post(‘https://graph.facebook.com/v12.0/me/messages’, { | |
recipient: { id: recipientId }, | |
message: { text: messageText }, | |
access_token: YOUR_ACCESS_TOKEN // 替换为你的Page Access Token | |
}); | |
} catch (error) { | |
console.error(‘Error sending message:’, error); | |
} | |
}; |
替换YOUR_ACCESS_TOKEN为你的Page Access Token。
四、部署与测试
将你的项目部署到具有公网IP地址的服务器上。在Facebook开发者平台上,更新Webhook URL为你的服务器公网地址加上/webhook路径。
使用Facebook Page向机器人发送消息,检查是否能够正确接收并处理消息。同时,检查服务器日志以确认是否有任何错误发生。