使用 Senparc 实现接收图片消息并回复

使用 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 返回。

发表回复

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