专题网站开发 交互方法,网站备案在哪里查询,百度游戏风云榜,网站网站建设专业包含功能#xff1a;
MVP#xff08;最简可行产品#xff09;版本的客服机器人应该聚焦于核心功能#xff0c;以快速上线和测试用户反馈为目标。以下是一个简化的版本#xff1a;
自动问答#xff08;FAQ#xff09;功能#xff1a; 支持回答常见问题#xff0c;例如…包含功能
MVP最简可行产品版本的客服机器人应该聚焦于核心功能以快速上线和测试用户反馈为目标。以下是一个简化的版本
自动问答FAQ功能 支持回答常见问题例如营业时间、联系方式、退换货政策等。提供预设的常见问题列表并能自动匹配用户输入的关键词。 自然语言处理NLP基础 具备基本的语义理解能力能够识别用户的主要意图并提供相关回答。 人工客服转接 在遇到无法解答的问题时能提示用户转接到人工客服。提供简单的转接方式例如发送一条信息或链接告知如何联系人工客服。 订单查询 允许用户通过输入订单号查询订单状态。提供基本的订单信息反馈如订单处理中、已发货、已送达等状态。 用户反馈收集 在对话结束时简单地询问用户是否满意收集基本的满意度反馈。
这个MVP版本的客服机器人可以快速上线并根据用户反馈逐步增加更多功能和改进。它能够解决用户的一些基本需求同时保持开发和维护的简洁性。
技术架构
实现这些MVP功能的客服机器人需要一个清晰的技术架构确保其高效、稳定地运行。以下是推荐的技术架构
1. 前端接口
用户界面UI在网站或应用中嵌入聊天窗口可以使用JavaScript库如React或Vue.js来实现。消息传递通过WebSocket或REST API与后端服务器进行通信确保实时消息传递。
2. 后端服务器
Web框架选择Node.jsExpress或PythonDjango/Flask作为主要框架来处理HTTP请求和WebSocket连接。API接口提供REST API来处理前端发送的请求如查询订单状态、获取常见问题回答等。
3. 自然语言处理NLP
NLP引擎可以使用现成的NLP服务如Google Dialogflow、Microsoft Azure Bot Service、IBM Watson Assistant或开源库如Rasa。意图识别利用NLP引擎处理用户输入识别用户意图并生成相应的回答。
4. 数据库
知识库管理使用一个关系型数据库如PostgreSQL或MySQL来存储常见问题和答案。订单信息存储和查询订单信息可能与现有的订单管理系统集成。
5. 人工客服转接
消息队列使用RabbitMQ或Kafka等消息队列系统来管理和转发用户请求给人工客服。通知系统通过Email、短信或内部通知系统告知客服有用户需要帮助。
6. 用户反馈收集
数据库同样使用关系型数据库来存储用户反馈数据。简单的反馈接口在对话结束时弹出一个简单的评分系统如星级评分。
7. 安全和隐私
认证和授权使用JWTJSON Web Token或OAuth进行用户身份认证和授权确保数据安全。数据加密在数据传输过程中使用HTTPS在存储过程中使用数据库的加密机制。
实现步骤
前端开发创建聊天窗口UI集成WebSocket或REST API进行消息传递。后端开发搭建Web框架创建API接口处理用户请求。NLP集成选择并集成NLP引擎处理用户的自然语言输入。数据库设置设计数据库架构存储常见问题、订单信息和用户反馈。人工客服转接实现消息队列和通知系统确保用户能顺利转接至人工客服。安全措施实施认证、授权和数据加密确保用户数据安全。
通过以上架构和步骤可以有效地实现一个功能完备的MVP客服机器人。
优先级
前端开发搭建基本聊天界面和消息传递。后端基础架构建立服务器和API接口。NLP集成实现基本的自然语言处理能力。数据库设计存储常见问题和订单信息。人工客服转接实现消息转发和通知系统。用户反馈收集实现简单的反馈机制。安全和隐私保护确保用户数据的安全性。
windows平台开始前端开发
1. 设置 Vue 项目
npm install -g vue/cli2. 然后创建一个新的 Vue 项目
vue create chat-bot报错vue:无法加载因为在此系统上禁止运行脚本
分析原因权限不足
1. 以管理员身份运行powerShell
2.输入命令 set-ExecutionPolicy RemoteSigned
3. 输入Y
问题解决继续第二步 3.创建成功,在vscode中打开项目
3.1. 创建聊天组件
在 src 目录下创建一个新的组件文件 ChatBot.vue并添加以下代码
templatediv classchat-containerdiv classmessagesdiv v-for(message, index) in messages :keyindex classmessagediv :classmessage.sender{{ message.text }}/div/div/divdiv classinput-containerinputv-modeluserInputkeyup.entersendMessagetypetextplaceholderType a message.../button clicksendMessageSend/button/div/div
/templatescript
export default {data() {return {userInput: ,messages: [{ text: Hello! How can I help you today?, sender: bot },],};},methods: {sendMessage() {if (this.userInput.trim() ! ) {this.messages.push({ text: this.userInput, sender: user });this.userInput ;// Simulate bot responsesetTimeout(() {this.messages.push({ text: I am still learning. Please ask something else!, sender: bot });}, 1000);}},},
};
/scriptstyle scoped
.chat-container {width: 100%;max-width: 600px;margin: 0 auto;border: 1px solid #ccc;border-radius: 5px;display: flex;flex-direction: column;height: 400px;
}.messages {flex: 1;padding: 10px;overflow-y: auto;border-bottom: 1px solid #ccc;
}.message {margin: 5px 0;
}.user {text-align: right;color: blue;
}.bot {text-align: left;color: green;
}.input-container {display: flex;border-top: 1px solid #ccc;
}input {flex: 1;border: none;padding: 10px;font-size: 16px;border-top-left-radius: 5px;border-bottom-left-radius: 5px;
}button {padding: 10px;font-size: 16px;border: none;background-color: #007bff;color: white;cursor: pointer;border-top-right-radius: 5px;border-bottom-right-radius: 5px;
}button:hover {background-color: #0056b3;
}
/style
3.2 注册组件并启动应用
在 src/App.vue 中注册并使用 ChatBot 组件
templatediv idappChatBot //div
/templatescript
import ChatBot from ./components/ChatBot.vue;export default {name: App,components: {ChatBot,},
};
/scriptstyle
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
/style
3.3 运行应用
确保你在项目目录下然后运行以下命令启动应用
npm run serve3.4访问http://localhost:8080/ 支持简单输出和回复 后端flask实现
在D盘创建flaskproject
1.初始化项目
mkdir flask-chat-bot
cd flask-chat-bot
python -m venv venv
venv\Scripts\activate2.安装Flask
安装Flask和Flask-CORS
pip install Flask Flask-CORS3.创建Flask应用
用PyCharm里面在项目根目录下创建一个 app.py 文件并添加以下代码
# app.py
from flask import Flask, request, jsonify
from flask_cors import CORS
import randomapp Flask(__name__)
CORS(app)# 模拟的机器人回复
bot_responses [Im still learning. Please ask something else!,Can you please elaborate?,Im here to help you. What do you need?,
]def get_bot_response():return random.choice(bot_responses)app.route(/api/chat/message, methods[POST])
def chat():user_message request.json.get(message)if not user_message:return jsonify({error: Message is required}), 400# 模拟处理用户消息并生成回复bot_message get_bot_response()return jsonify({userMessage: user_message,botMessage: bot_message,})if __name__ __main__:app.run(debugTrue)
报错ModuleNotFoundError: No module named ‘flask_cors’flask_cors下载失败
分析问题python312版本和pycharm的310版本间出现冲突
解决问题
删除310版本更改pycharm的本地配置解释器为312版本
C:\Users\Administrator\AppData\Local\Programs\Python\Python312
问题解决。 4.启动Flask服务器
在终端中运行以下命令启动Flask服务器
python app.pyFlask服务器将在 http://localhost:5000 上运行。 REST API消息传递功能
基于Windows系统的Flask后端和Vue.js前端的REST API消息传递功能
1.修改ChatBot.vue文件
templatediv classchat-containerdiv classmessagesdiv v-for(message, index) in messages :keyindex classmessagediv :classmessage.sender{{ message.text }}/div/div/divdiv classinput-containerinputv-modeluserInputkeyup.entersendMessagetypetextplaceholderType a message.../button clicksendMessageSend/button/div/div
/templatescript
export default {data() {return {userInput: ,messages: [{ text: Hello! How can I help you today?, sender: bot },],};},methods: {async sendMessage() {if (this.userInput.trim() ! ) {this.messages.push({ text: this.userInput, sender: user });// 保存用户输入const userMessage this.userInput;this.userInput ;try {// 发送请求到后端APIconst response await fetch(http://localhost:5000/api/chat/message, {method: POST,headers: {Content-Type: application/json,},body: JSON.stringify({ message: userMessage }),});const data await response.json();// 显示机器人的回复this.messages.push({ text: data.botMessage, sender: bot });} catch (error) {console.error(Error:, error);}}},},
};
/scriptstyle scoped
.chat-container {width: 100%;max-width: 600px;margin: 0 auto;border: 1px solid #ccc;border-radius: 5px;display: flex;flex-direction: column;height: 400px;
}.messages {flex: 1;padding: 10px;overflow-y: auto;border-bottom: 1px solid #ccc;
}.message {margin: 5px 0;
}.user {text-align: right;color: blue;
}.bot {text-align: left;color: green;
}.input-container {display: flex;border-top: 1px solid #ccc;
}input {flex: 1;border: none;padding: 10px;font-size: 16px;border-top-left-radius: 5px;border-bottom-left-radius: 5px;
}button {padding: 10px;font-size: 16px;border: none;background-color: #007bff;color: white;cursor: pointer;border-top-right-radius: 5px;border-bottom-right-radius: 5px;
}button:hover {background-color: #0056b3;
}
/style
效果 接入openapi替代NLP技术实现
技术架构更改
1. 前端 技术栈Vue.js 功能 用户界面提供一个简单的聊天界面。输入处理用户输入消息并发送。消息显示显示用户消息和机器人回复。
2. 后端 技术栈FlaskPython 功能 接收前端发送的消息。调用OpenAI的API处理用户消息。返回OpenAI的回复给前端。
3. 第三方服务 OpenAI API 用于生成聊天机器人的回复。
具体流程
用户输入消息 用户在Vue.js前端输入消息并点击发送。 前端发送请求 前端通过REST API将用户消息发送到Flask服务器。 后端处理请求 Flask服务器接收到请求后提取用户消息。调用OpenAI的API将用户消息发送给OpenAI。 OpenAI生成回复 OpenAI根据用户消息生成合适的回复。 后端返回回复 Flask服务器接收到OpenAI的回复后将其发送回前端。 前端显示回复 Vue.js前端接收到服务器返回的回复并在聊天界面中显示
|-------------| HTTP |--------------| HTTP |---------------|
| Frontend | ----------------- | Backend | -------------- | OpenAI API |
| Vue.js | REST API | Flask | API Request | |
|-------------| |--------------| |---------------|| | | |User input Process request| | | |
Send message --- Receive message --- Call OpenAI| | | |
Display reply --- Return reply --- Get reply
后端代码优化
# app.py
from flask_cors import CORS
from flask import Flask, request, jsonify
from openai import OpenAI
from dotenv import load_dotenv, find_dotenvapp Flask(__name__)
CORS(app)_ load_dotenv(find_dotenv())client OpenAI()app.route(/api/chat/message, methods[POST])
def chat():user_message request.json.get(message)if not user_message:return jsonify({error: Message is required}), 400messages [{role: system, content: 你是一个客服机器人},{role: user, content: user_message}]print(messages)try:# 调用OpenAI API获取回复response client.chat.completions.create(modelgpt-3.5-turbo,messagesmessages)bot_message response.choices[0].message.contentprint(bot_message)except Exception as e:return jsonify({error: str(e)}), 500return jsonify({userMessage: user_message,botMessage: bot_message,})if __name__ __main__:app.run(debugTrue)前端代码优化
templatediv classchat-containerdiv classmessagesdiv v-for(message, index) in messages :keyindex classmessagediv :classmessage.sender{{ message.text }}/div/div/divdiv classinput-containerinputv-modeluserInputkeyup.entersendMessagetypetextplaceholderType a message.../button clicksendMessageSend/button/div/div/templatescriptexport default {data() {return {userInput: ,messages: [{ text: Hello! How can I help you today?, sender: bot },],};},methods: {async sendMessage() {if (this.userInput.trim() ! ) {this.messages.push({ text: this.userInput, sender: user });// 保存用户输入const userMessage this.userInput;this.userInput ;try {// 发送请求到后端APIconst response await fetch(http://localhost:5000/api/chat/message, {method: POST,headers: {Content-Type: application/json,},body: JSON.stringify({ message: userMessage }),});const data await response.json();// 显示机器人的回复this.messages.push({ text: data.botMessage, sender: bot });} catch (error) {console.error(Error:, error);}}},},};/scriptstyle scoped.chat-container {width: 100%;max-width: 600px;margin: 0 auto;border: 1px solid #ccc;border-radius: 5px;display: flex;flex-direction: column;height: 400px;}.messages {flex: 1;padding: 10px;overflow-y: auto;border-bottom: 1px solid #ccc;}.message {margin: 5px 0;}.user {text-align: right;color: blue;}.bot {text-align: left;color: green;}.input-container {display: flex;border-top: 1px solid #ccc;}input {flex: 1;border: none;padding: 10px;font-size: 16px;border-top-left-radius: 5px;border-bottom-left-radius: 5px;}button {padding: 10px;font-size: 16px;border: none;background-color: #007bff;color: white;cursor: pointer;border-top-right-radius: 5px;border-bottom-right-radius: 5px;}button:hover {background-color: #0056b3;}/style
更改后的效果如下 接入数据库
使用mysql数据库接入通过OpenAI API查询本地数据库以获取真实的订单信息
创建数据库并插入数据
采用DBeaver创建zh数据库并建立order表插入数据
CREATE DATABASE order_db;USE order_db;CREATE TABLE orders (id INT AUTO_INCREMENT PRIMARY KEY,order_number VARCHAR(50) NOT NULL,customer_name VARCHAR(100),product VARCHAR(100),quantity INT,status VARCHAR(50)
);-- 插入一些示例数据
INSERT INTO orders (order_number, customer_name, product, quantity, status)
VALUES
(ORD001, Alice, Laptop, 1, Shipped),
(ORD002, Bob, Smartphone, 2, Processing),
(ORD003, Charlie, Tablet, 1, Delivered); 数据库连接
添加app.py连接数据库
# 数据库配置
db_config {user: root,password: your_mysql_password, # 在此处替换为你的MySQL密码host: 127.0.0.1,database: order_db,raise_on_warnings: True
}查询订单信息
# 查询订单信息
def get_order_info(order_number):try:cnx mysql.connector.connect(**db_config)cursor cnx.cursor(dictionaryTrue)query SELECT * FROM orders WHERE order_number %scursor.execute(query, (order_number,))result cursor.fetchone()cursor.close()cnx.close()return resultexcept mysql.connector.Error as err:return {error: str(err)}chatgpt 访问数据库
添加chatgpt访问数据库
def get_completion(messages):# 调用OpenAI API获取回复response client.chat.completions.create(modelgpt-3.5-turbo,messagesmessages,temperature0,tools[{type: function,function: {name: get_order_id,description: Get the current order id,parameters: {type: object,properties: {order_id: {type: string,description: 订单号格式为ORD开头,}},required: [order_id],},}}],)return response.choices[0].messageapp.route(/api/chat/message, methods[POST])
def chat():user_message request.json.get(message)if not user_message:return jsonify({error: Message is required}), 400messages [{role: system, content: 你是一个客服机器人},{role: user, content: user_message}]print(messages)try:# 调用OpenAI API获取回复response get_completion(messages)bot_content response.contentprint(fbot_content:, bot_content)if bot_content:return jsonify({userMessage: user_message,botMessage: bot_content,})bot_message responseprint(fbot_message:, bot_message)messages.append(bot_message)if (response.tool_calls is not None):tool_call response.tool_calls[0]print(ftool_call:, tool_call)if (tool_call.function.name get_order_id):print(fget_order_id:)args json.loads(tool_call.function.arguments)order_id get_order_info(**args)print(forder_id:, order_id)messages.append({role: tool,content: Order ID: str(order_id),tool_call_id: tool_call.id})print(fmessages:, messages)response get_completion(messages)print(fresponse:, response)return jsonify({userMessage: user_message,botMessage: response.content,})except Exception as e:return jsonify({error: str(e)}), 500return jsonify({userMessage: user_message,botMessage: bot_message,})
chatgpt api调用官网
重新启动服务器
效果如下可以看到成功查询到本地数据库订单号为ORD001的订单状态信息并且成功返回客户端界面 MySQL存储常见问题和答案
1.数据库创建
数据库中创建一个名为 faqs 的表存储常见问题和答案
CREATE TABLE faqs (id INT AUTO_INCREMENT PRIMARY KEY,question TEXT NOT NULL,answer TEXT NOT NULL
);
插入数据
INSERT INTO faqs (question, answer) VALUES
(如何重置密码, 要重置密码请转到登录页面并点击“忘记密码”链接。按照说明重置您的密码。),
(退货政策是什么, 我们的退货政策允许您在购买后30天内退货。请确保产品处于原始状态。),
(如何跟踪我的订单, 要跟踪订单请登录您的账户并转到“订单”部分。点击您想要跟踪的订单以查看最新状态。),
(我可以更改收货地址吗, 是的您可以在订单发货前更改收货地址。请联系客户服务以获取帮助。),
(你们接受哪些付款方式, 我们接受多种付款方式包括信用卡、借记卡、PayPal和银行转账。),
(如何联系客户支持, 您可以通过电子邮件supportexample.com联系我们的客户支持或拨打1-800-123-4567。),
(你们的工作时间是什么时候, 我们的客户支持时间为周一至周五上午9点到下午5点。),
(如何取消我的订单, 要取消订单请登录您的账户转到“订单”部分然后选择您要取消的订单。如果订单尚未发货您将看到“取消订单”选项。),
(你们提供国际运输吗, 是的我们提供大多数国家的国际运输。运费和交货时间因目的地而异。),
(如何使用折扣码, 要使用折扣码请在结账时在“折扣码”字段中输入代码并点击“应用”。折扣将应用到您的订单总额。);
数据库显示及如下 2.整合到Flask应用
接下来我们需要调整Flask应用以支持FAQ查询。我们将实现一个新的API端点用于从数据库中检索常见问题和答案。
# 查询FAQ
def get_faq(question):try:cnx mysql.connector.connect(**db_config)cursor cnx.cursor(dictionaryTrue)query SELECT answer FROM faqs WHERE question LIKE %scursor.execute(query, (%question%,))result cursor.fetchone()cursor.close()cnx.close()return resultexcept mysql.connector.Error as err:return {error: str(err)}添加chatgpt功能部分代码 {type: function,function: {name: get_faq,description: Get the current question id,parameters: {type: object,properties: {question: {type: string,description: question should be a question in table,}},required: [question],},}增加返回值判断 elif (tool_call.function.name get_faq):print(fget_faq:)args json.loads(tool_call.function.arguments)answer get_faq(**args)print(fquestion_id:, answer)messages.append({role: tool,content: answer: str(answer),tool_call_id: tool_call.id})print(fmessages:, messages)response get_completion(messages)print(fresponse:, response)return jsonify({userMessage: user_message,botMessage: response.content,})
效果如下 ChatGPT的聊天过程
https://chatgpt.com/share/cd990a21-86d5-4a6c-ac0b-b3a775738d5a
人工客服转接
为了使用RabbitMQ消息队列系统来管理和转发用户请求给人工客服我们需要设置RabbitMQ服务器并且在Flask后端实现发送消息到RabbitMQ的功能。在接收端可以实现一个消费者程序实时监听队列并将请求分配给人工客服。
1. 安装RabbitMQ
首先你需要在你的系统上安装RabbitMQ。可以参考RabbitMQ官方文档进行安装。
由于本机的docker和vm虚拟器冲突无法使用docker按照传统方式安装rabbitMQ
以下是具体的命令和下载链接下载Erlang访问Erlang Solutions的官方网站下载最新版本的Erlanghttps://www.erlang.org/downloads安装Erlang双击下载的exe文件按提示进行安装。设置环境变量将Erlang的安装目录和bin目录添加到系统的PATH变量中。下载RabbitMQ访问RabbitMQ官方网站下载最新版本的RabbitMQhttps://www.rabbitmq.com/download.html安装RabbitMQ双击下载的exe文件按提示进行安装。可以使用RabbitMQ Plugin来管理和扩展RabbitMQ的功能通过命令行运行以下命令来启用管理界面rabbitmq-plugins enable rabbitmq_management
访问RabbitMQ管理界面打开浏览器访问 http://localhost:15672 使用默认用户guest和密码guest登录RabbitMQ管理界面。注意如果在安装过程中遇到问题请确保你的Windows系统支持RabbitMQ并查看官方文档以获取更多信息和解决方案。2. 配置RabbitMQ
安装完RabbitMQ后启动RabbitMQ服务
sudo service rabbitmq-server start
3. 安装Pika库
Pika是Python的RabbitMQ客户端库。可以通过pip安装
pip install pika4. 修改Flask后端以发送消息到RabbitMQ
我们将在Flask后端添加一个新的路由将用户请求发送到RabbitMQ队列中。
# 发送消息到RabbitMQ
def send_to_rabbitmq(message):try:connection pika.BlockingConnection(pika.ConnectionParameters(hostrabbitmq_host))channel connection.channel()channel.queue_declare(queuequeue_name, durableTrue)channel.basic_publish(exchange,routing_keyqueue_name,bodymessage,propertiespika.BasicProperties(delivery_mode2, # make message persistent))connection.close()except Exception as e:print(fFailed to send message to RabbitMQ: {e})# 将用户消息发送到RabbitMQ队列send_to_rabbitmq(user_message)5. 创建消费者以处理RabbitMQ消息
接下来我们创建一个消费者程序它会监听RabbitMQ队列并将用户请求分配给人工客服。
# consumer.py
import pikarabbitmq_host localhost
queue_name customer_requestsdef callback(ch, method, properties, body):print(fReceived {body})# 在此处处理消息将其分配给人工客服# 比如通过邮件、通知系统等方式ch.basic_ack(delivery_tagmethod.delivery_tag)def main():connection pika.BlockingConnection(pika.ConnectionParameters(hostrabbitmq_host))channel connection.channel()channel.queue_declare(queuequeue_name, durableTrue)channel.basic_qos(prefetch_count1)channel.basic_consume(queuequeue_name, on_message_callbackcallback)print(Waiting for messages. To exit press CTRLC)channel.start_consuming()if __name__ __main__:main()
6. 运行系统 启动RabbitMQ服务器 sudo service rabbitmq-server start 启动Flask应用 python app.py 3., 启动RabbitMQ消费者 python consumer.py 4; 测试应用 在浏览器中访问 http://localhost:8080输入消息发送到后端确认消息被成功发送到RabbitMQ并在消费者端被接收和处理。 通过这些步骤你就可以实现使用RabbitMQ消息队列系统管理和转发用户请求给人工客服的功能。
效果如下
通过Email告知客服有用户需要帮助
为了通过Email告知客服有用户需要帮助我们需要在消费者程序中添加发送电子邮件的功能。我们可以使用Python的smtplib库来实现发送邮件。下面是更新后的消费者代码添加了通过电子邮件通知客服的功能。
更新消费者程序以发送Email
首先确保你有一个SMTP服务器和有效的电子邮件账户来发送通知邮件。下面是一个使用Gmail SMTP服务器的示例。
# consumer.py
import pika
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipartrabbitmq_host localhost
queue_name customer_requests
smtp_server smtp.gmail.com
smtp_port 587
smtp_user your_emailgmail.com # 在此处替换为你的电子邮件
smtp_password your_email_password # 在此处替换为你的电子邮件密码
customer_support_email supportexample.com # 在此处替换为客服的电子邮件def send_email(user_message):subject New Customer Requestbody fYou have a new customer request:\n\n{user_message}msg MIMEMultipart()msg[From] smtp_usermsg[To] customer_support_emailmsg[Subject] subjectmsg.attach(MIMEText(body, plain))try:server smtplib.SMTP(smtp_server, smtp_port)server.starttls()server.login(smtp_user, smtp_password)text msg.as_string()server.sendmail(smtp_user, customer_support_email, text)server.quit()print(fEmail sent to {customer_support_email})except Exception as e:print(fFailed to send email: {e})def callback(ch, method, properties, body):user_message body.decode()print(fReceived {user_message})# 发送邮件通知客服send_email(user_message)ch.basic_ack(delivery_tagmethod.delivery_tag)def main():connection pika.BlockingConnection(pika.ConnectionParameters(hostrabbitmq_host))channel connection.channel()channel.queue_declare(queuequeue_name, durableTrue)channel.basic_qos(prefetch_count1)channel.basic_consume(queuequeue_name, on_message_callbackcallback)print(Waiting for messages. To exit press CTRLC)channel.start_consuming()if __name__ __main__:main()
配置和运行
安装必要的Python库
确保安装了pika和smtplib库如果没有安装可以使用pip安装
pip install pikasmtplib是Python标准库的一部分因此不需要额外安装。
配置SMTP服务器信息
在代码中替换以下变量为你自己的SMTP服务器信息和邮件账户信息
smtp_server smtp.gmail.com
smtp_port 587
smtp_user your_emailgmail.com
smtp_password your_email_password
customer_support_email supportexample.com
运行消费者程序
python consumer.py