大家好,我是 Rohan,Spur 的创始人,Spur 是一款 WhatsApp API 和 Instagram 评论/DM 自动化软件。
几周前,我写了一篇博客,讨论应该在哪里构建 WhatsApp 集成。这是一篇关于该主题的高级文章,今天我们将学习如何开始使用 WhatsApp API?
今天,我们将制作一个在 Node 服务器上运行的简单机器人,从 WhatsApp Cloud API 接收 Webhook,读取消息并使用
OpenAI GPT 4o 发送响应。
想直接跳到代码吗?链接在底部。
这相当简单,Meta 已经有这方面的指南。展望未来,我将假设
对于令牌,您可以使用临时令牌,我们将在另一篇教程中介绍如何部署到生产环境。
如果您没有 pnpm 设置,这是最简单的方法
corepack enable corepack prepare pnpm@latest --activate
现在我们开始
mkdir whatsapp-ai-bot # intialize npm project pnpm init # make the server file touch index.js # env file touch .env
立即安装所需的依赖项:
pnpm install express dotenv openai
切勿提交 API 密钥。为了将 API 密钥等敏感信息保留在代码库之外,我们将使用环境变量。在项目的根目录中创建一个 .env 文件并添加以下行:
OPENAI_API_KEY=<your-openai-api-key>
现在使用创建的index.js文件并添加以下代码
import express from 'express'; import { config } from 'dotenv'; import OpenAI from 'openai'; // Load environment variables config(); // Create a web server const app = express(); const port = process.env.PORT || 3034; app.listen(port, () => { console.log(`Server running on port ${port}`); }); // Add middleware to parse JSON bodies app.use(express.json()); // Initialize OpenAI API const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, }); app.get('/webhooks', (req, res) => { if ( req.query['hub.mode'] === 'subscribe' && req.query['hub.verify_token'] === '1234' ) { res.send(req.query['hub.challenge']); } else { res.sendStatus(400); } }); app.post('/webhooks', async (req, res) => { const body = req.body.entry[0].changes[0]; if (body.field !== 'messages') { // not from the messages webhook so dont process return res.sendStatus(200); } if (!body.value.messages) { return res.sendStatus(200); } const text = body.value.messages .map((message) => message.text.body) .join('\n\n'); console.log(text); const completion = await openai.chat.completions.create({ model: 'gpt-4o-mini', messages: [{ role: 'user', content: text }], }); // Extract the response from the OpenAI completion const aiResponse = completion.choices[0].message.content; // Extract the phone number from the incoming message const phoneNumber = body.value.messages[0].from; // Prepare the message payload const messagePayload = { messaging_product: 'whatsapp', to: phoneNumber, type: 'text', text: { body: aiResponse, }, }; // Send the response back to WhatsApp try { const response = await fetch( `https://graph.facebook.com/v20.0/${process.env.PHONE_NUMBER_ID}/messages`, { method: 'POST', headers: { Authorization: `Bearer ${process.env.SYSTEM_TOKEN}`, 'Content-Type': 'application/json', }, body: JSON.stringify(messagePayload), }, ); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } console.log('Message sent successfully'); } catch (error) { console.error('Failed to send message:', error); } res.sendStatus(200); });
并将package.json修改为
{ "name": "whatsapp-ai-bot", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node server.js", "dev": "nodemon server.js" }, "keywords": [], "author": "", "license": "ISC", "type": "module", "packageManager": "pnpm@9.6.0", "dependencies": { "dotenv": "^16.4.5", "express": "^4.19.2", "openai": "^4.53.2" }, "devDependencies": { "nodemon": "^3.1.4" } }
这个例子只是冰山一角,你可以做很多事情来改进它
就是这样。如果您也对我写的有关 WhatsApp 集成的文章感兴趣,可以在这里查看。
我还在 Spur 的 GitHub 组织上分享了工作示例的代码。
以上是WhatsApp AI 聊天机器人:让我们用 API 构建一个聊天机器人的详细内容。更多信息请关注PHP中文网其他相关文章!