【超简单!】Python微信公众号开发(6)- 服务器配置启用与自定义菜单冲突的解决方法

在上篇文章 【超详细!】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,我也是个小白,想与志同道合的朋友一起讨论,共同进步!

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

同学小张

如果觉得有帮助,欢迎给我鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值