使用 Senparc 实现接收图片消息并回复
处理图片消息请求
当用户向公众号发送图片时,微信服务器会触发 MessageHandler 中的 OnImageRequest 事件。通过重写该方法,可以处理图片消息并生成对应的回复。
OnImageRequest 方法:
/// <summary>
/// 处理图片请求
/// </summary>
public override IResponseMessageBase OnImageRequest(RequestMessageImage requestMessage)
{
IResponseMessageBase responseMessage = null;
if (requestMessage != null)
{
responseMessage = GetReponse(requestMessage);
}
return responseMessage;
}Code language: PHP (php)
完善 GetReponse 方法
在 GetReponse 方法中,使用 RequestMsgType 枚举来区分消息类型,替代之前仅处理文字消息的逻辑。这样可以根据不同类型的请求返回不同的回复内容。
修改后的 GetReponse 方法:
protected IResponseMessageBase GetReponse(IRequestMessageBase requestMessage)
{
switch (requestMessage.MsgType)
{
case RequestMsgType.Text:
{
Writelog("进入了文本回复");
RequestMessageText requestMessageText = requestMessage as RequestMessageText;
var responseMessage = CreateResponseMessage<ResponseMessageText>();
responseMessage.Content = "您发的内容是:" + requestMessageText.Content;
return responseMessage;
}
case RequestMsgType.Image:
{
Writelog("进入了图片回复");
RequestMessageImage requestMessageImage = requestMessage as RequestMessageImage;
var responseMessage = CreateResponseMessage<ResponseMessageText>();
//直接回复图片的 URL 地址
responseMessage.Content = "您发送的图片链接为:" + requestMessageImage.PicUrl;
return responseMessage;
}
default:
{
var responseMessage = CreateResponseMessage<ResponseMessageText>();
responseMessage.Content = "感谢您的消息,暂未支持该类型回复。";
return responseMessage;
}
}
}Code language: PHP (php)
说明:以上示例将用户发送的图片 URL 以文本形式返回。如需回复图片消息(即返回一张图片给用户),可将
CreateResponseMessage<ResponseMessageText>()替换为CreateResponseMessage<ResponseMessageImage>(),并设置MediaId或图片地址。
关键点说明
RequestMsgType枚举清晰区分了文本、图片、语音、视频等消息类型,比直接转换MsgType更直观。- 图片消息的
PicUrl属性为微信服务器提供的图片临时链接,有效期较短,如需长期使用应下载保存。 - 回复图片消息需要提前将图片上传至微信服务器获取
MediaId,再使用ResponseMessageImage返回。

Previous: 使用 Senparc 完成自动回复功能
Next: 使用 Senparc 直接回复图片消息给客户端