發送視訊消息
上傳一段小視訊,擷取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.啟動項目,測試效果,使用者發送視訊,用戶端會傳回一段視訊