文章摘要(AI生成)
文章介绍了微信公众号的基础功能和开发者功能,以及接入公众号的步骤和方法。公众号提供了丰富多样的消息形式和用户管理功能,为用户和开发者提供了创作和发展空间。然而,在公众号撰写文章存在一些缺点,如无法实现多端文章同步和高维护成本等。作者决定接入公众号,通过SDK实现订阅回复和自动回复功能,提升用户体验。通过配置公众号信息和创建相应对象,实现获取用户openid和发送客服消息等功能。自动回复功能可以根据用户发送的消息内容进行智能回复,通过路由进行不同消息种类的处理。通过公众号和博客的互动,可以吸引更多读者,提高用户黏性和为主站增加访客,实现双赢的局面。
一、微信公众号是什么
(一)公众号的基础功能
微信公众号作为一种强大的信息传播平台,为用户提供了丰富多样的基础功能。用户可以在公众号上发表原创文章,无论是专业的技术分享、生活感悟还是科普知识,都能通过公众号的平台传达给广大读者。而且,公众号支持发送图文、视频等多种消息形式,使内容更加生动丰富。
在图文消息方面,普通的公众帐号可以群发文字、图片、语音、视频等类别的内容。而认证的帐号,有更高的权限,能推送更漂亮的图文信息,这类图文信息也许是单条的,也许还是一个专题。例如,在发送图片消息时,图片链接地址可以用 HTTP GET 获取;发送语音消息时,虽然普通账号拿不到具体的语音文件,但语音格式多为 amr
,主要用于移动设备的音频,压缩比比较大,多用于人声、通话,效果还是很不错的。
此外,公众号还提供了基础的用户管理功能。不同的公众号类型具备不同的接口权限,比如未认证订阅号、微信认证订阅号、未认证服务号、微信认证服务号在基础支持、接收消息、发送消息、用户管理等方面的权限有所不同。以用户管理为例,公众号可以对用户进行分组管理、设置用户备注名、获取用户基本信息、获取用户列表等操作。
(二)开发者功能
同时,公众号也提供了多种 API 接口,为开发者带来了更多的可能性。开发者可以通过调用这些接口实现丰富的功能。例如,通过接口可以实现对话服务,让公众号与用户之间的互动更加智能和便捷。如果为企业账户,还可以实现对应的客服功能和菜单定制。
对于企业账号来说,开发模式下可以实现更多复杂的功能,提供个性化服务。比如可以接收用户发送过来的消息,并通过自己开发的系统把对应内容反馈回去;可以接收用户发送过来的地理位置,通过地理位置反馈附近餐厅信息或交通信息;通过事件推送,可以识别用户对公众帐号订阅和取消订阅操作的情况;开发模式的接口除了可以反馈图文消息,也可以反馈音频内容给用户;可以通过通用接口上传图片、语音、视频等内容到公众平台上,并且可以调用这些素材;可以管理自定义菜单功能等。
总之,微信公众号无论是基础功能还是开发者功能,都为用户和开发者提供了广阔的创作和发展空间。
一、我为什么要接入公众号
之前的公众号,我为什么放弃了
公众号写文章存在着一些明显的缺点。首先,在公众号上撰写文章无法实现多端文章同步。这意味着,当你在不同的设备上进行创作或修改时,可能会面临诸多不便,无法像在一些专业的写作平台上那样轻松地在多个终端之间切换并保持文章的一致性。
其次,随着时间的推移,公众号的维护成本会变得相当高昂。从内容的策划、撰写到排版、发布,再到与读者的互动和反馈处理,每一个环节都需要投入大量的时间和精力。长此以往,这种高成本的维护可能会让人感到疲惫不堪,最终不得不选择放弃。
再者,如果仅仅在公众号上写文章而不与用户进行互动,那么就完全无法提供用户黏性。用户可能只是匆匆浏览一下文章,然后就离开了,不会对公众号产生更深的情感依赖和忠诚度。而且,这样也不能为主站增加访客。没有有效的互动,用户很难对公众号背后的主站产生兴趣,也就不会主动去访问主站,从而无法为主站带来更多的流量和关注度。
我为什么想要将接入公众号
一方面,博客上的历史内容在三年的积累下已经足够丰富了,迁移到公众号的成本非常大。但是,我仍然想实现公众号和博客的良好互动。公众号更偏向科普向文章,可以吸引更多的普通读者,让他们了解一些基础知识和最新的科技动态。而博客则是我的一个大杂烩,包含了各种深入的技术分析、个人感悟和项目经验等。
通过公众号和博客的互动,可以实现优势互补。公众号可以为博客引流,吸引更多的读者去访问博客,了解更深入的内容。同时,博客也可以为公众号提供更多的素材和资源,让公众号的内容更加丰富和多样化。这样,不仅可以提高用户的黏性,还可以为主站增加访客,实现双赢的局面。
三、如何接入公众号
(一)借助开源 SDK,快速掌握开发上手
在接入公众号的过程中,开源 SDK 起到了至关重要的作用。以 WxJava
为例,它为开发者提供了便捷的开发工具和接口,使得开发过程更加高效。
WxJava
是微信开发的 Java SDK,支持微信支付、开放平台、公众号、企业微信、视频号、小程序等功能模块的后端开发。2023 年 12 月 28 日发布 4.6.0 正式版,提供了多种交流群及贡献源码视频,要求 JDK 最低版本为 8。可通过Maven Central
引用方式添加不同模块,如微信小程序(weixin-java-miniapp
)、微信支付(weixin-java-pay
)等。项目在码云、GitHub 等同步更新,有在线 Javadoc 和开发文档 Wiki。
我们可以使用WxJava
中的weixin-java-mp
公众号相关SDK完成功能开发。
weixin-java-mp
使用方式:
- 首先是配置公众号相关信息,创建
WxMpDefaultConfigImpl
对象并设置微信公众号的appid
、secret
(app corpSecret
)、token
和EncodingAESKey
。 - 然后创建
WxMpService
对象并设置配置存储。 - 给出获取用户
openid
的地址示例,并创建一个文本类型的客服消息WxMpKefuMessage
,发送给指定openid
的用户。
(二)订阅回复和自动回复功能开发
基于上述认知,我决定在已有博客项目中,基于SDK实现订阅回复和自动回复功能可以极大地提升用户体验。
对于订阅回复功能,可以在用户订阅公众号时,自动发送一条欢迎消息,介绍公众号的主要内容和特色。例如,可以发送一段文字,例如:
hi, 你好呀!~
感谢您的关注❀❀❀,这是橙序员管理的公众号. 除了日常文章推送之外,我还有如下功能:
1.向我发送消息,将由橙bot为你答疑❤
2.对我扣0,直接访问我的主页♛
3.热门☼、最新⏱文章,可以直接问我哦!
4.输入“搜索XXX相关的文章”,为你简索☞主站文章~
实现订阅回复功能的关键在于监听用户的订阅事件。通过监听公众号的消息事件,可以捕获到用户的订阅操作,并触发相应的处理逻辑。在处理逻辑中,可以根据需求定制回复内容,然后将回复消息发送给用户。
自动回复功能则可以根据用户发送的消息内容进行智能回复。例如,当用户发送一个问题时,公众号可以通过分析问题关键词,从预设的知识库中查找答案,并将答案回复给用户。这里我通过路由来进行不同消息种类的处理:
//扣0发送我的博客主页
newRouter.rule().async(false).msgType(TEXT).rContent("0+").handler(homeHandler).end();
//用户想看最新文章时,则展示博客的最新的一篇文章
newRouter.rule().async(false).msgType(TEXT).rContent(".*最新.*文章.*|.*文章.*最新.*").handler(recentHandler).end();
//用户想看热门文章时,则展示博客的热门的一篇文章
newRouter.rule().async(false).msgType(TEXT).rContent(".*热门.*文章.*|.*文章.*热门.*").handler(hotHandler).end();
//用户“搜索XXX相关的文章”时,可以检索相应信息搜索博客中相应的文章
newRouter.rule().async(false).msgType(TEXT).rContent("搜索(\\w+)相关的文章").handler(searchHandler).end();
//用户输入其他消息时,则调用GPT进行回复
newRouter.rule().async(false).msgType(TEXT).handler(msgHandler).end();
//用户输入其他类型消息时,则进行兜底回复
newRouter.rule().async(false).handler(nullHandler).end();
最终通过测试,我可以通过对话实现如下的对话效果:
基于SDK,我们可以轻松实现订阅回复和自动回复功能,为用户提供更加便捷和个性化的服务,进一步增强公众号与用户之间的互动和粘性。
四、总结与展望
通过接入公众号为我这个小破站带来了更多的可能性和优势。充分利用公众号的基础功能和开发者功能,借助开源 SDK 实现了订阅回复和自动回复功能,增强了公众号与用户之间的互动和粘性。希望这次接入过程也可以为各位提供参考和借鉴。
评论区