使用 Senparc 直接回复图片消息给客户端

使用 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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注