文档

SSE流式接口

通过http-sse进行流式调用。

一、获取流式连接信息

调用ApplyForStreamAccessToken - 获取流式调用的连接信息接口获取。

说明

获取的连接信息有效期2小时,必须在到期前重新获取

二、请求对话机器人SSE流式接口

2.1 访问路径

访问路径:

https://alime-ws.aliyuncs.com/sse/paas4Json/{accessToken}/{channelId}/{sign}/{timestamp}

2.2 请求路径参数解释

参数

含义

accessToken

认证Token

channelId

流式通道

sign

签名

timestamp

时间戳

2.3 请求body格式(json)

字段

类型

含义

messageId

String

每条消息的唯一id,保证唯一

action

String

TongyiBeebotChat接口的Action

version

String

2022-04-08

data

List

TongyiBeebotChat接口的请求参数

data格式:

"data": [

{

"type": "JSON_TEXT",

"value": ""

}

]

value中传入TongyiBeebotChat接口请求参数JSON序列化的字符串

举例:

{
    "messageId": "shdlfjldjfldf",
    "action":"TongyiBeebotChat",
    "version":"2022-04-08",
    "data": [
        {
            "type": "JSON_TEXT",
            "value": "{"InstanceId":"xxx","Utterance":"你好"}"
        }
    ]
}

2.4 响应结果格式

字段

类型

含义

success

boolean

是否成功

code

String

错误码(success为false时)

message

String

错误提示(success为false时)

messageId

String

2.3中请求的messageId

requestId

String

每段响应推送的requestId

data

List

消息格式

data格式:

"data": [

{

"type": "JSON_TEXT",

"value": ""

}

]

value中的值为具体接口的响应值,参照接口文档:TongyiBeebotChat

三、其他

加签协议,java参考代码

private static final char[] toDigits = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};   

public static String getSigin(String streamSecret, String timestamp) throws NoSuchAlgorithmException {
        StringBuilder sb = new StringBuilder();
        sb.append("streamSecret=").append(streamSecret)
                .append("&timestamp=").append(timestamp);

        byte[] md5Str= md5(sb.toString());
        return encodeHex(md5Str,toDigits);
    }

    private static byte[] md5(String text) throws NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] md5Bytes = md.digest(StringUtils.getBytesUtf8(text));
        return md5Bytes;
    }


    private static String encodeHex(byte[] data, char[] toDigits) {
        int l = data.length;
        char[] out = new char[l << 1];
        int i = 0;

        for(int var5 = 0; i < l; ++i) {
            out[var5++] = toDigits[(240 & data[i]) >>> 4];
            out[var5++] = toDigits[15 & data[i]];
        }
        return new String(out);
    }

  • 本页导读 (0)
文档反馈