{"record":{"id":"8d0a1e44880cd051","repo":"JeffreySu/WeiXinMPSDK","slug":"irequestmessagevoice","errorCode":null,"errorMessage":"微信公众号不支持 IRequestMessageVoice 请求类型","messagePattern":"微信公众号不支持 IRequestMessageVoice 请求类型","errorType":"exception","errorClass":"MessageHandlerException","httpStatus":null,"severity":"error","filePath":"src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs","lineNumber":59,"sourceCode":"\n        public override IRequestMessageShortVideo NewRequestMessageShortVideo()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IRequestMessageShortVideo 请求类型\");\n        }\n\n        public override IRequestMessageText NewRequestMessageText()\n        {\n            return new RequestMessageText();\n        }\n\n        public override IRequestMessageVideo NewRequestMessageVideo()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IRequestMessageVideo 请求类型\");\n        }\n\n        public override IRequestMessageVoice NewRequestMessageVoice()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IRequestMessageVoice 请求类型\");\n        }\n\n        public override IResponseMessageImage NewResponseMessageImage()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageImage 响应类型\");\n        }\n\n        public override IResponseMessageMpNews NewResponseMessageMpNews()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageMpNews 响应类型\");\n        }\n\n        public override IResponseMessageMusic NewResponseMessageMusic()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageMusic 响应类型\");\n        }\n\n        public override IResponseMessageNews NewResponseMessageNews()","sourceCodeStart":41,"sourceCodeEnd":77,"githubUrl":"https://github.com/JeffreySu/WeiXinMPSDK/blob/be573f6f94bdbf718dd5f6cdecb137fbc7ff651e/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs#L41-L77","documentation":"WxOpenMessageEntityEnlightener.NewRequestMessageVoice unconditionally throws MessageHandlerException. Voice request messages are a 公众号 (MP) feature not supported by the WxOpen Mini Program message pipeline, so the factory deliberately refuses to construct the entity.","triggerScenarios":"Calling NewRequestMessageVoice() on the WxOpen enlightener, e.g. when the WxOpenMessageHandler receives a voice-type message XML or third-party code requests a voice request entity.","commonSituations":"Sharing one message-handling codebase between MP and WxOpen; tests exercising all IRequestMessageVoice paths; misconfigured callback URL routing 公众号 messages to a WxOpen handler.","solutions":["Route voice messages to an MP MessageHandler instead of the WxOpen handler.","Check requestMessage type before requesting the voice entity from the enlightener.","Verify the WeChat callback URL/token configuration so MP messages do not reach the WxOpen endpoint."],"exampleFix":"// before\nvar voiceMsg = enlightener.NewRequestMessageVoice();\n// after\nif (requestMessage is IRequestMessageVoice voiceMsg) { /* only valid in MP handler */ }","handlingStrategy":"type-guard","validationCode":"if (requestMessage is IRequestMessageVoice) { /* use MP MessageHandler */ return; }","typeGuard":"static bool IsVoiceRequest(IRequestMessage m) => m is IRequestMessageVoice;","tryCatchPattern":"try\n{\n    var voiceMsg = enlightener.NewRequestMessageVoice();\n}\ncatch (MessageHandlerException)\n{\n    // voice unsupported in WxOpen; route to MP handler or default reply\n}","preventionTips":["Verify token/server configuration so 公众号 messages are not routed to the 小程序 endpoint.","Check message type before calling any New* factory method.","Keep a mapping table of supported WxOpen message types in your handler code."],"tags":["wxopen","message-handler","unsupported-message-type","voice"],"backgroundTag":"unsupported-operation","analyzedSha":"be573f6f94bdbf718dd5f6cdecb137fbc7ff651e","analyzedAt":"2026-09-12T10:01:50.733Z","contentChangedAt":"2026-09-12T10:01:50.733Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}