在上篇文章 【超详细!】Python微信公众号开发(5)- 无需编程,手把手带你轻松实现公众号自定义菜单和自动回复 中,提到了微信公众号服务器配置启用后,原来微信公众号界面下方自定义的菜单栏和自动回复功能就失效了。
那如何解决两者的冲突,让两者共存呢?其实挺简单的,就是有点绕。
1. 停用服务器配置
如果你已经开启了服务器配置,那微信公众号自定义菜单的页面应该是这样的(即使你之前设置过自定义菜单,在你开启了服务器配置之后,也会变成这样):
在这种情况下,你需要先停用服务器配置:
然后再回到自定义菜单页面,就可以开始你的自定义菜单配置了。
2. 配置自定义菜单
这部分请参考: 【超详细!】Python微信公众号开发(5)- 无需编程,手把手带你轻松实现公众号自定义菜单和自动回复 ,文章第1部分【自定义菜单】给出了配置自定义菜单的详细操作步骤。
3. 重启服务器配置
4. 再次开启自定义菜单
这是本文最灵魂的一步。
(1)公众号后台 —> +新的功能 —> 已开通 —> 自定义菜单,进入“自定义菜单”页面
(2)在“自定义菜单”页面,点击“开启”
至此,服务器配置和自定义菜单就能共存,不会冲突了。
5. 关键字自动回复
以上只是实现了自定义菜单和服务器配置的共存,但是上篇文章中我们设置的“关键字自动回复”功能仍无法使用(如下图中所述功能:用户输入特定关键字,公众号给固定回复)。
这个的解决方案只能通过在服务器上写代码来实现了。最简单的实现方案:
- 服务器端接收到用户输入信息后
- 判断是否为预设置的关键字,如果是预设置的关键字,则直接返回对应的预设置的回复信息。
- 如果不是预设置的关键字,则调用OpenAI实现ChatGPT的对话功能
修改代码如下:
(1)定义一个函数来检查是否为预设关键字,并返回预设关键字对应的回复信息
def get_info_from_const_keywords(keyword):
print("get_info_from_const_keywords: ", keyword)
# ConstKeywordsAndInfo:预设置的关键字和回复信息
ConstKeywordsAndInfo = {
"GPT最佳实践": "《OpenAI:GPT 最佳实践中文大白话版本_未来力场编译》\
链接: https://pan.baidu.com/s/1S1_jVWTH8CMH4M_4AaPoig 提取码: xxxx",
"gpt提示技巧": " 《如何向 ChatGPT 提问以获得高质量答案:提示技巧工程完全指南》 \
链接: https://pan.baidu.com/s/1wLvEoP5UbiRDW1HalslSeg 提取码: xxxx"
}
try:
return ConstKeywordsAndInfo[keyword] # 如果找到关键字,回复预设置的回复信息
except:
return None # 没有找到关键字,返回None
(2)调用上述函数,并对返回结果进行相应处理
@app.route('/wechatai', methods=['GET', 'POST'])
def wechatai():
if request.method == 'GET':
return verify_wechat(request)
else:
# 处理POST请求
print("user request data: ", request.data)
printXML(request.data)
# 解析用户信息
user_message_content, from_user_name, to_user_name, msg_type = getUserMessageContentFromXML(request.data)
print("user message content: ", user_message_content)
response_content = get_info_from_const_keywords(user_message_content)
# None说明用户输入不是预设关键字,调用OpenAI API完成ChatGPT对话
if (response_content is None):
# 调用OpenAI接口生成回复内容
response_content = openai_test.get_chat_completion(user_message_content)
print("response content: ", response_content)
# 生成回复信息并返回
return generate_response_xml(from_user_name, to_user_name, response_content)
大功告成。
6. 最终效果
注意:配置完自定义菜单后,生效是需要时间的,所以需要耐心等待一小会儿。
从今天开始,持续学习,开始搞事情。踩坑不易,欢迎关注我,围观我!
有任何问题,欢迎+vx:jasper_8017,我也是个小白,想与志同道合的朋友一起讨论,共同进步!