天天看點

微信公衆号開發筆記(十)發送視訊消息

發送視訊消息

上傳一段小視訊,擷取media_id,上傳的視訊不大于10MB,支援MP4格式, 當使用者發送視訊格式時,公衆号就回複視訊格式

1.擷取media_id

package com.qj.servlet;

import com.alibaba.fastjson.JSONObject;
import com.qj.util.UploadMediaApiUtil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;

/*
                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  `.
            /  \\|||  :  |||//  \
           /  _||||| -:- |||||-  \
           |   | \\\  -  /// |   |
           | \_|  ''\---/''  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .'  /--.--\  `. . __
      ."" '<  `.___\_<|>_/___.'  >'"".
     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======
                   `=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            佛祖保佑       永無BUG
*/
@WebServlet(name = "UploadMediaServlet")
public class UploadMediaServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        UploadMediaApiUtil uploadMediaApiUtil = new UploadMediaApiUtil();
        String appId = "wx8948d77934e934e0";
        String appSecret = "d4babf8b4bc341167b283e21e129e073";
        String accessToken = uploadMediaApiUtil.getAccessToken(appId,appSecret);

        String filePath = "D:\\1.mp4";
        File file = new File(filePath);
        String type = "VIDEO";
        JSONObject jsonObject = uploadMediaApiUtil.uploadMedia(file,accessToken,type);
        System.out.println(jsonObject.toString());


    }

}

           

2.啟動項目,通路http://localhost:8080/UploadMediaServlet,進行上傳視訊

微信伺服器會傳回一個media_id:

{"media_id":"h_Z1TXk5iektoi2BdlG-sRZg_6nH750IhwUheGVBjpJn8_gEqJOhsWRWnRsbZbSh","created_at":1569496025,"type":"video"}
           

代碼實作

1.在Message.util工具類中新增 buildVideoMessage方法

/**
     * 回複視訊消息
     * @param map
     * @return
     */
    private static String buildVideoMessage(Map<String, String> map) {
        String fromUserName = map.get("FromUserName");
        String toUserName = map.get("ToUserName");
        String title = "客官發過來的視訊喲~~";
        String description = "客官您呐,現在肯定很開心,對不啦 嘻嘻?";
        /*傳回使用者發過來的視訊*/
        //String media_id = map.get("MediaId");
        String media_id = "h_Z1TXk5iektoi2BdlG-sRZg_6nH750IhwUheGVBjpJn8_gEqJOhsWRWnRsbZbSh";
        return String.format(
                "<xml>" +
                "<ToUserName><![CDATA[%s]]></ToUserName>" +
                "<FromUserName><![CDATA[%s]]></FromUserName>" +
                "<CreateTime>%s</CreateTime>" +
                "<MsgType><![CDATA[video]]></MsgType>" +
                "<Video>" +
                "   <MediaId><![CDATA[%s]]></MediaId>" +
                "   <Title><![CDATA[%s]]></Title>" +
                "   <Description><![CDATA[%s]]></Description>" +
                "</Video>" +
                "</xml>",
                fromUserName,toUserName, getUtcTime(),media_id,title,description
        );
    }

           

2. 在 buildXml 建構消息的方法中新增代碼

//傳回使用者發過來的視訊
        if(msgType.toUpperCase().equals("VIDEO")){
            String fromUserName = map.get("FromUserName");
            String toUserName = map.get("ToUserName");
            String title = "客官發過來的視訊喲~~";
            String description = "客官您呐,現在肯定很開心,對不啦 嘻嘻?";
            /*傳回使用者發過來的視訊*/
           //String media_id = map.get("MediaId");
            String media_id = "h_Z1TXk5iektoi2BdlG-sRZg_6nH750IhwUheGVBjpJn8_gEqJOhsWRWnRsbZbSh";
            return String.format(
                    "<xml>" +
                            "<ToUserName><![CDATA[%s]]></ToUserName>" +
                            "<FromUserName><![CDATA[%s]]></FromUserName>" +
                            "<CreateTime>%s</CreateTime>" +
                            "<MsgType><![CDATA[video]]></MsgType>" +
                            "<Video>" +
                            "   <MediaId><![CDATA[%s]]></MediaId>" +
                            "   <Title><![CDATA[%s]]></Title>" +
                            "   <Description><![CDATA[%s]]></Description>" +
                            "</Video>" +
                            "</xml>",
                    fromUserName,toUserName, getUtcTime(),media_id,title,description
            );
        }
           

3.啟動項目,測試效果,使用者發送視訊,用戶端會傳回一段視訊

微信公衆号開發筆記(十)發送視訊消息