使用 Senparc 直接回复图片消息给客户端
功能说明
本节实现将用户发送给公众号的图片,直接原样返回给微信客户端。也可以返回自定义图片,但前提是需先将图片上传至微信素材库,获取 MediaId 后才能返回。由于素材管理尚未讲解,这里直接使用用户发来的图片 MediaId 进行回复。
修改 GetReponse 方法
在 GetReponse 方法中,针对 RequestMsgType.Image 类型,创建 ResponseMessageImage 响应消息,并将请求中的 MediaId 赋值给响应的 Image.MediaId。
修改后的完整代码:
/// <summary>
/// 通过消息类型和消息ID获取Response实体
/// </summary>
protected IResponseMessageBase GetReponse(IRequestMessageBase requestMessage)
{
Writelog("进入了GetReponse" + requestMessage.MsgType);
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("进入了图片回复");
var requestMessageImage = requestMessage as RequestMessageImage;
//响应图片消息给微信客户端
var responseMessage = CreateResponseMessage<ResponseMessageImage>();
Image image = new Image();
image.MediaId = requestMessageImage.MediaId;
responseMessage.Image = image;
return responseMessage;
//如需回复文本消息,可改用以下代码:
//var responseMessage = CreateResponseMessage<ResponseMessageText>();
//responseMessage.Content = "您发的内容是:" + requestMessageImage.PicUrl;
//return responseMessage;
}
}
return null;
}Code language: PHP (php)
关键点说明
requestMessageImage.MediaId:用户发送的图片在微信服务器上的临时素材 ID,可直接用于回复,无需重新上传。ResponseMessageImage:用于回复图片消息的响应类型,需设置Image.MediaId属性。- 临时素材的 MediaId 有效期为 3 天,过期后无法使用。若需长期保存图片,应下载至本地服务器或上传为永久素材。
- 注释部分展示了回复文本消息的替代方案,开发者可根据需求切换。
注意:如果希望回复自己的图片,需先通过”新增临时素材”或”新增永久素材”接口上传图片,获取 MediaId 后再赋值给
responseMessage.Image.MediaId。

Previous: 使用 Senparc 实现接收图片消息并回复
Next: 使用 Senparc 响应客户端的语音消息