更新时间:2024-11-21 GMT+08:00
单卡片5G消息发送
代码样例
package Demo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.URL; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.HashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import com.fasterxml.jackson.databind.ObjectMapper; import static java.nio.charset.StandardCharsets.UTF_8; /** *单卡片消息请求 */ public class SingleCardMs2 { static final int SUCCESS = 200; static final int ERR = 204; private static final HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }; /** * 单卡片消息请求 */ public static void main(String[] args) throws Exception { Map<String, Object> map1 = new HashMap<>(); map1.put("contributionID","contributionID"); map1.put("senderAddress","sip:471400.huawei@botplatform.rcs.chinamobile.com"); map1.put("address","sip:+8613911111018@ims.mnc000.mcc460.3gppnetwork.org"); map1.put("destinationAddress","sip:+8613911111018@ims.mnc000.mcc460.3gppnetwork.org"); map1.put("bodyText","\\n{\\n \\\"message\\\": {\\n \\\"generalPurposeCardCarousel\\\": {\\n \\\"layout\\\": {\\n \\\"cardWidth\\\": \\\"MEDIUM_WIDTH\\\"\\n },\\n \\\"content\\\": [\\n {\\n \\\"media\\\": {\\n \\\"mediaUrl\\\": \\\"http://10.243.50.178:9090/Access/PF?ID=Q0Q5QjAxRUU1NDBFRDUxQUQ5RkFFOTY0RjQ3MjM4NjBGQkM2NDFDNzQ2OTBCMENBOUJDRjlBRUE3Q0U0NDA5NTA3QkQ4M0UxNzM4NzlERTJCQzMxNEM5QUFDRDg2Nzg1\\\",\\n \\\"mediaContentType\\\": \\\"image/png\\\",\\n \\\"thumbnailUrl\\\": \\\"http://10.243.50.178:9090/Access/PF?ID=MkE2REU4QTQ2RjU4OEJBQjNBNDg3Q0ZCRUI0NUVBQzUxQUU1MkE5QjY0MDFCN0U5NkYwMzNFQjc5MjJGRDlGOEYxOTUwQjc5QUREQUFCRkY5ODBERUQ2ODMwNjEwOTY1\\\",\\n \\\"thumbnailContentType\\\": \\\"image/png\\\",\\n \\\"height\\\": \\\"SHORT_HEIGHT\\\"\\n },\\n \\\"title\\\": \\\"This is the first rich card in a carousel.\\\",\\n \\\"description\\\": \\\"This is the description of the rich card. It's the first field that will be truncated if it exceeds the maximum width or height of a card.\\\",\\n \\\"suggestions\\\": [\\n {\\n \\\"action\\\": {\\n \\\"mapAction\\\": {\\n \\\"showLocation\\\": {\\n \\\"location\\\": {\\n \\\"latitude\\\": 37.4220041,\\n \\\"longitude\\\": -122.0862515,\\n \\\"label\\\": \\\"Googleplex\\\"\\n },\\n \\\"fallbackUrl\\\": \\\"https://www.google.com/maps/@37.4219162,-122.078063,15z\\\"\\n }\\n },\\n \\\"displayText\\\": \\\"Show location on a map\\\",\\n \\\"postback\\\": {\\n \\\"data\\\": \\\"set_by_chatbot_open_map\\\"\\n }\\n }\\n },\\n {\\n \\\"action\\\": {\\n \\\"calendarAction\\\": {\\n \\\"createCalendarEvent\\\": {\\n \\\"startTime\\\": \\\"2017-03-14T00:00:00Z\\\",\\n \\\"endTime\\\": \\\"2017-03-14T23:59:59Z\\\",\\n \\\"title\\\": \\\"Meeting\\\",\\n \\\"description\\\": \\\"GSG review meeting\\\"\\n }\\n },\\n \\\"displayText\\\": \\\"Schedule Meeting\\\",\\n \\\"postback\\\": {\\n \\\"data\\\": \\\"set_by_chatbot_create_calendar_event\\\"\\n }\\n }\\n }\\n ]\\n },\\n {\\n \\t\\n \\\"title\\\": \\\"This is the second rich card in the carousel.\\\",\\n \\\"description\\\": \\\"Carousel cards need to specify a card width in the 'layout' section. For small width cards, only short and medium height media are supported.\\\"\\n \\n }\\n ]\\n }\\n }\\n}\\n"); map1.put("conversationID","conversationID"); map1.put("contentType","application/vnd.gsma.botmessage.v1.0+json"); Map<String, Object> map = new HashMap<>(); map.put("destinationAddress","tel:+8613911111030"); map.put("clientCorrelator","567895"); map.put("outboundIMMessage",map1); post("https://10.120.207.128:18323/openchatbot/v2/sip:888.chatbot@botplatform.rcs.chinamobile.com/outbound",map); } /** * 定义post方法 */ public static String post(String url, Map<String, Object> params) throws Exception { trustAllHttpsCertificates(); Logger logger = Logger.getLogger(SingleCardMs2.class.getName()); logger.setLevel(Level.WARNING); logger.warning("url" + url); URL url1 = new URL(url); InputStream is; // 将url以open方法返回的urlConnection连接强转为HttpURLConnection连接(标识一个url所引用的远程对象连接),此时cnnection只是为一个连接对象,待连接中 HttpsURLConnection conn = (HttpsURLConnection) url1.openConnection(); conn.setHostnameVerifier(DO_NOT_VERIFY); // 设置连接输出流为true,默认false (post请求是以流的方式隐式的传递参数) conn.setDoOutput(true); // 设置连接输入流为true conn.setDoInput(true); // 设置请求方式为post conn.setRequestMethod("POST"); // post请求缓存设为false conn.setUseCaches(false); // 设置该HttpURLConnection实例是否自动执行重定向 conn.setInstanceFollowRedirects(true); // 设置内容的类型,设置为经过urlEncoded编码过的from参数 conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Authorization", "Username=\"chatbottest12swt96\",Password=\"******\""); ObjectMapper objectMapper = new ObjectMapper(); PrintWriter pw = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), UTF_8)); pw.write(objectMapper.writeValueAsString(params)); // 查看传参信息 logger.warning(objectMapper.writeValueAsString(params)); pw.flush(); pw.close(); // 建立连接(请求未开始,直到connection.getInputStream()方法调用时才发起,以上各个参数设置需在此方法之前进行) conn.connect(); // 连接发起请求,处理服务器响应 (从连接获取到输入流并包装为bufferedReader) int status = conn.getResponseCode(); logger.warning("status:" + status); if (status != 200) { logger.warning("OK,SUCESSNo Content"); if (status == 201) { logger.warning("SUCESS BUT No Content"); is = conn.getInputStream(); } else if (status == 204) { logger.warning("err"); is = conn.getInputStream(); } else { // 400/401 is = conn.getErrorStream(); } } else { // 200 logger.warning("OK,SUCESS"); is = conn.getInputStream(); } BufferedReader br = new BufferedReader(new InputStreamReader(is, UTF_8)); String line; StringBuilder resultMsg = new StringBuilder(); while ((line = br.readLine()) != null) { // 读取数据 resultMsg.append(line); } // 关流,这个很重要 is.close(); br.close(); // 关闭连接 conn.disconnect(); logger.warning("resultMsg.toString()" + resultMsg.toString()); return null; } static void trustAllHttpsCertificates() throws Exception { TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { return; } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { return; } @Override public X509Certificate[] getAcceptedIssuers() { return null; } } }; SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, null); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } }
参数名称 |
参数说明 |
---|---|
url |
请求地址 |
Map |
封装请求的具体信息 |
Connection |
封装建立连接的认证信息、请求方式等 |
消息样例
resultMsg.toString(){"senderAddress":"******","senderName":"Default Name","address":"******","destinationAddress":"******","clientCorrelator":"567895","outboundIMMessage":{"contributionID":"c67771cf-bd31-483e-8f8a-479df74db92e","storeSupported":"true","bodyText":"******","reportRequest":["Delivered","Displayed","Failed"],"conversationID":"fSFDSFDR$%#$%$%$%","subject":"Default Subject","shortMessageSupported":"false","contentEncoding":"utf8","contentType":"multipart/mixed; boundary=\"next\"","serviceCapability":[{"capabilityId":"ChatbotSA","version":"+g.gsma.rcs.botversion=\"#=1\""},{"capabilityId":"ChatbotSA222","version":"+g.gsma.rcs.botversion=\"#=1\""}]}}
父主题: JAVA