文档首页> 5G消息 Message over 5G> 开发指南> API代码样例> JAVA> 码流转成json的多卡片+悬浮菜单
更新时间:2024-04-28 GMT+08:00
分享

码流转成json的多卡片+悬浮菜单

代码样例

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
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.TrustManager;
import javax.net.ssl.X509TrustManager;
 
import com.fasterxml.jackson.databind.ObjectMapper;
 
import static java.nio.charset.StandardCharsets.UTF_8;
 
/**
* 多卡片发送消息悬浮菜单
*/
public class FivegMessageOutBoundMultiCardAndFloatMenu {
    // 带有值的返回成功状态码
    static final int SUCCESS_200_RES = 200;
 
    // 带有值的返回成功状态码
    static final int SUCCESS_201_RES = 201;
 
    // 不带值的返回成功状态码
    static final int SUCCESS_204_RES = 204;
 
    /**
     * 设置不验证主机
     */
 
    private static final HostnameVerifier DO_NOT_VERIFY = (hostname, session) -> true;
 
 
    private FivegMessageOutBoundMultiCardAndFloatMenu() {
    }
 
    /**
     * 多卡片发送消息悬浮菜单
     *
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
 
        Logger logger = Logger.getLogger(FivegMessageOutBoundMultiCardMessage.class.getName());
        logger.setLevel(Level.WARNING);
 
        trustAllHttpsCertificates();
        URL realUrl = getUrl();
 
        HttpsURLConnection connection = (HttpsURLConnection) realUrl.openConnection();
 
        // 设置请求方式
        connection.setDoOutput(true);
        connection.setHostnameVerifier(DO_NOT_VERIFY);
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Authorization", "Username=\"chatbottest12swt96\", Password=\"******\"");
        connection.setRequestProperty("Content-Type", "application/json");
        ObjectMapper objectMapper = new ObjectMapper();
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(connection.getOutputStream(), UTF_8));
        pw.write(objectMapper.writeValueAsString(getMap()));
        pw.flush();
 
        connection.connect();
        int status = connection.getResponseCode();
        logger.warning("5GMessageResponse status: " + status);
        InputStream is;
        if (status != SUCCESS_200_RES) {
            if (status == SUCCESS_201_RES) {
                is = connection.getInputStream();
            } else if (status == SUCCESS_204_RES) {
                logger.warning("No Content Success");
                is = connection.getInputStream();
            } else { // error
                logger.warning("Error, DELETE status: " + status);
                is = connection.getErrorStream();
            }
        } else { // 200
            logger.warning("OK,DELETE Success, DELETE status: " + status);
            is = connection.getInputStream();
        }
 
        if (is != null) {
            BufferedReader br;
            br = new BufferedReader(new InputStreamReader(is, UTF_8));
            String line;
            StringBuilder result = new StringBuilder();
 
            // 读取数据
            while ((line = br.readLine()) != null) {
                result.append(line + System.lineSeparator().intern());
            }
            br.close();
            logger.warning("Content: " + result.toString());
 
            // 关流
            is.close();
        }
 
 
        // 关闭连接
        connection.disconnect();
    }
 
    /**
     * 获取URL
     *
     * @return url
     * @throws MalformedURLException
     */
    public static URL getUrl() throws MalformedURLException {
        URL realUrl;
 
        // CSP接口 不需要sag带tid字段
        String cspUrl = "https://10.120.207.128:18323/openchatbot/v2/"
                + "sip:888.chatbot@botplatform.rcs.chinamobile.com/outbound";
 
        return new URL(cspUrl);
    }
 
    /**
     * 返回Body体
     *
     * @return Body
     */
    public static Map<String, Object> getMap() {
        Map<String, Object> map = new HashMap<>();
        Map<String, Object> childMap = new HashMap<>();
        
        childMap.put("imFormat", "IM");
        childMap.put("contentType", "multipart/mixed; boundary=\"next\"");
        childMap.put("bodyText", "<![CDATA[--next\r\nContent-Type: application/vnd.gsma.botmessage.v1.0+json\r\nTransfer-Encoding: chunked\r\n\r\n{\r\n    \"generalPurposeCardCarousel\":{\r\n        \"layout\":{\r\n            \"cardOrientation\":\"VERTICAL\",\r\n            \"imageAlignment\":\"LEFT\",\r\n            \"titleFontStyle\":[\r\n                \"underline\",\r\n                \"bold\"\r\n            ],\r\n            \"descriptionFontStyle\":[\r\n                \"calibri\"\r\n            ]\r\n        },\r\n        \"content\":[\r\n\t\t\t{\r\n                \"media\":{\r\n                    \"mediaUrl\":\"http://120.198.247.156:9090/Access/PF?ID=MzdCQjE4RjcwQzM0RkZENzkyNkIyNEI3MDUwRDAwOUIyOUQ3Qzk2QTNBQkIzQzI2QTE2RDQ3OEZGOTY1NEE3QkQ5NDQwNDNGNjc3RDE1NzU3OEExN0E3ODEzQjNDMDYw\",\r\n                    \"mediaContentType\":\"image/png\",\r\n                    \"thumbnailUrl\":\"http://120.198.247.156:9090/Access/PF?ID=QjZBQjE0QjUxRjA4NEZFRjhDQ0MyRkE4MzhENTM1Mzc5MTY5RkM0Qjk0QzgzREM5ODZGQzk1QUM1QkJGNkVGNjQ3RDYwNURDQkI3MTMwQjU2QUVEOTQ4OUM0NjA5N0M1\",\r\n                    \"thumbnailContentType\":\"image/png\",\r\n                    \"height\":\"MEDIUM_HEIGHT\",\r\n                    \"contentDescription\":\"VR旅游\"\r\n                },\r\n\t\t\t\t\"suggestions\":[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"action\": {\r\n\t\t\t\t\t\t\"urlAction\": {\r\n\t\t\t\t\t\t\"openUrl\": {\r\n\t\t\t\t\t\t\"url\": \"http://webapp.vizen.cn/gugong_app/index.html\",\r\n\t\t\t\t\t\t\"application\": \"webview\",\r\n\t\t\t\t\t\t\"viewMode\": \"half\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"displayText\": \"VR旅游\",\r\n\t\t\t\t\t\t\"postback\": {\r\n\t\t\t\t\t\t\"data\": \"set_by_chatbot_open_url\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}    \r\n\t\t\t\t]\r\n            },\r\n            {\r\n                \"media\":{\r\n                    \"mediaUrl\":\"http://120.198.247.156:9090/Access/PF?ID=OERDMDk3OUM3RjRENkE1MzNENkVFMUVENTgwNzM5MzE0QzdFRjk2NjAwMEQ3MDNGRkI5MUE2MTMwNDk3MkYxMzY2MzQxRjdBRTg5MUUzNzRDNUY3NDU0NEY3MTgzREQ3\",\r\n                    \"mediaContentType\":\"image/png\",\r\n                    \"thumbnailUrl\":\"http://120.198.247.156:9090/Access/PF?ID=MTM1MTMyMjg0ODlGRjUzNThCNjcyODg4ODkxNzBDRDgwMTIyRTM4ODE4RUM1MjFEMzczN0Q4RTE4NDUxRjMzNjlBNjdDODI2MThDRUVGQkE0QkM4NDZGNUQyQTRGMDM2\",\r\n                    \"thumbnailContentType\":\"image/png\",\r\n                    \"height\":\"MEDIUM_HEIGHT\",\r\n                    \"contentDescription\":\"云游戏\"\r\n                },\r\n\t\t\t\t\"suggestions\":[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"action\": {\r\n\t\t\t\t\t\t\"displayText\": \"敬请期待\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}    \r\n\t\t\t\t]\r\n            },\t\t\t\r\n\t\t\t{\r\n                \"media\":{\r\n                    \"mediaUrl\":\"http://120.198.247.156:9090/Access/PF?ID=QjRCMTgzQUFDNTJGNzRDOUZEN0VEOTY0QzVEODAyNDA5QTUwQjAwRUI3NEZEQUREMjhCREIwRjJDQjdCMUZDN0RFRTAzOUE4N0VERkVCNTVBRjY1ODc2QUUxRTU0RjA0\",\r\n                    \"mediaContentType\":\"image/png\",\r\n                    \"thumbnailUrl\":\"http://120.198.247.156:9090/Access/PF?ID=QzBGRDRBRTk2MTkwNzcwMjVCRUMwOEM3MDdFOUI2MDBENjQ0RTU0RkVGRTZENjI3M0IzQjREOTM1ODAwRkMyOTNGNjU3Mjc2MUVDQjU0QjU2RDhENzkyRDgxNkQyMzZC\",\r\n                    \"thumbnailContentType\":\"image/png\",\r\n                    \"height\":\"MEDIUM_HEIGHT\",\r\n                    \"contentDescription\":\"直播间\"\r\n                },\r\n\t\t\t\t\"suggestions\":[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"action\": {\r\n\t\t\t\t\t\t\"displayText\": \"敬请期待\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}    \r\n\t\t\t\t]\r\n            },\r\n            {\r\n                \"media\":{\r\n                    \"mediaUrl\":\"http://120.198.247.156:9090/Access/PF?ID=MzJENTJERDg4QTFBRTNBQjNCRTFGRjE5RUExMzUzNjE1NTVCMTZBMTg2Q0RBQzZCMEYzNzNENEJFN0VGOTE2MTA2MjQ2NzE5N0JBMzVEQkU1NDQ5MzZCRkM5RTgwRThG\",\r\n                    \"mediaContentType\":\"image/png\",\r\n                    \"thumbnailUrl\":\"http://120.198.247.156:9090/Access/PF?ID=ODk0QjhCQUJBM0ZENjk5NkQ0OEFFMzczRTI4NEYwNkE3NTg4RTQ4MjAwMkU1Qzc0RDlENzdBM0EwRjU2NUU3OUJBRUU5QzBDOTIwMzNEOUJERERCQjZDRDg2RDYyQzQ0\",\r\n                    \"thumbnailContentType\":\"image/png\",\r\n                    \"height\":\"MEDIUM_HEIGHT\",\r\n                    \"contentDescription\":\"一起看\"\r\n                },\r\n\t\t\t\t\"suggestions\":[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"action\": {\r\n\t\t\t\t\t\t\"displayText\": \"敬请期待\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}    \r\n\t\t\t\t]\r\n            }\r\n        ]\r\n    }\r\n}\r\n--next\r\nContent-Type: application/vnd.gsma.botsuggestion.v1.0+json\r\nTransfer-Encoding: chunked\r\n\r\n{\r\n    \"suggestions\":[\r\n                {\r\n            \"reply\":{\r\n                \"displayText\":\"好看\",\r\n                \"postback\":{\r\n                    \"data\":\"好看\"\r\n                }\r\n            }\r\n        },\r\n\t\t{\r\n            \"reply\":{\r\n                \"displayText\":\"好玩\",\r\n                \"postback\":{\r\n                    \"data\":\"好玩\"\r\n                }\r\n            }\r\n        },\r\n\t\t{\r\n            \"reply\":{\r\n                \"displayText\":\"好聊\",\r\n                \"postback\":{\r\n                    \"data\":\"好聊\"\r\n                }\r\n            }\r\n        }      \r\n    ]\r\n}\r\n--next--]]>");
        childMap.put("contentEncoding", "11");
        childMap.put("shortMessageSupported", "1222");
        childMap.put("storeSupported", "str22ing");
 
        map.put("address", "sip:+8615914400969@ims.mnc000.mcc460.3gppnetwork.org");
        map.put("destinationAddress", "sip:+8615914400969@ims.mnc000.mcc460.3gppnetwork.org");
        map.put("senderAddress", "sip:90100@botplatform.rcs.chinamobile.com");
        map.put("senderName", "MyName");
        map.put("outboundIMMessage", childMap);
        map.put("smsBodyText", "5gsms");
 
        return map;
    }
 
    static void trustAllHttpsCertificates() throws Exception {
        TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
            @Override
            public void checkClientTrusted(X509Certificate[] chain, String authType) {
                return;
            }
 
            @Override
            public void checkServerTrusted(X509Certificate[] chain, String authType) {
                return;
            }
 
            @Override
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }
        }
        };
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, null);
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    }
 
}
表1 代码样例中可变参数说明

参数名称

参数说明

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","SMS"],"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\""}]}}
分享:

    相关文档

    相关产品