{"record":{"id":"be7f80f51ff0b3a7","repo":"JeffreySu/WeiXinMPSDK","slug":"iresponsemessagevideo","errorCode":null,"errorMessage":"微信公众号不支持 IResponseMessageVideo 响应类型","messagePattern":"微信公众号不支持 IResponseMessageVideo 响应类型","errorType":"exception","errorClass":"MessageHandlerException","httpStatus":null,"severity":"error","filePath":"src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs","lineNumber":95,"sourceCode":"        public override IResponseMessageNews NewResponseMessageNews()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageNews 响应类型\");\n        }\n\n        public override IResponseMessageText NewResponseMessageText()\n        {\n            return new Senparc.Weixin.MP.Entities.ResponseMessageText();\n            //throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageText 响应类型\");\n        }\n\n        public override IResponseMessageTransfer_Customer_Service NewResponseMessageTransfer_Customer_Service()\n        {\n            return new ResponseMessageTransfer_Customer_Service();\n        }\n\n        public override IResponseMessageVideo NewResponseMessageVideo()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageVideo 响应类型\");\n        }\n\n        public override IResponseMessageVoice NewResponseMessageVoice()\n        {\n            throw new MessageHandlerException(\"微信公众号不支持 IResponseMessageVoice 响应类型\");\n        }\n\n        public override IRequestMessageMiniProgramPage NewRequestMessageMiniProgramPage()\n        {\n            return new RequestMessageMiniProgramPage();\n        }\n\n    }\n}\n","sourceCodeStart":77,"sourceCodeEnd":110,"githubUrl":"https://github.com/JeffreySu/WeiXinMPSDK/blob/be573f6f94bdbf718dd5f6cdecb137fbc7ff651e/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageEntityEnlightener.cs#L77-L110","documentation":"WxOpenMessageEntityEnlightener.NewResponseMessageVideo unconditionally throws MessageHandlerException. Video replies are a 公众号 (MP) response type unsupported by the WxOpen pipeline, so the factory throws MessageHandlerException instead of returning an entity.","triggerScenarios":"Calling NewResponseMessageVideo() on the WxOpen enlightener, typically from a WxOpen On* handler attempting a video reply or shared MP reply-generation code.","commonSituations":"Porting MP video-reply handlers to Mini Programs; unified response factories that create video replies regardless of platform.","solutions":["Reply with a supported WxOpen type such as ResponseMessageText.","Use ResponseMessageTransfer_Customer_Service so media replies can be sent by MP customer service.","Gate video-reply code behind a platform check so it only runs in MP handlers."],"exampleFix":"// before\nvar video = enlightener.NewResponseMessageVideo();\n// after\nvar reply = enlightener.NewResponseMessageTransfer_Customer_Service();","handlingStrategy":"validation","validationCode":"if (platform == Platform.WxOpen && replyKind == ReplyKind.Video)\n    replyKind = ReplyKind.TransferCustomerService;","typeGuard":"static bool IsVideoResponse(IResponseMessageBase r) => r is IResponseMessageVideo; // invalid in WxOpen","tryCatchPattern":"try\n{\n    var video = enlightener.NewResponseMessageVideo();\n}\ncatch (MessageHandlerException)\n{\n    reply = enlightener.NewResponseMessageTransfer_Customer_Service();\n}","preventionTips":["Send video content via MP customer service, not WxOpen replies.","Never assume WxOpen and MP share the same reply surface.","Add handler tests covering every reply branch per platform."],"tags":["wxopen","message-handler","unsupported-response-type","video"],"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"}