一. 创建助手
- 先去这个地方注册个账号实名一下xinghuo.xfyun.cn/botcenter/c…
- 然后创建个助手该填的填一下
- 拿到APPID,接口地址,API Secret,API Key四样东西
二. 项目中引入
- npm安装 crypto-js 终端跑命令 cnpm install crypto-js
- 写一个方法用户鉴权获取请求链接 API_KEY,API_SECRET,URL 换成自己的
export function getWebsocketUrl(): Promise<string> {
return new Promise((resolve, reject) => {
var apiKey = API_KEY; // 换自己的
var apiSecret = API_SECRET; // 换自己的
let url = URL; // 换自己的
var host = location.host;
// @ts-ignore
var date = new Date().toGMTString();
var algorithm = "hmac-sha256";
var headers = "host date request-line";
var signatureOrigin = `host: ${host}\ndate: ${date}\nGET v1.1/chat HTTP/1.1`;
var signatureSha = CryptoJS.HmacSHA256(signatureOrigin, apiSecret);
var signature = CryptoJS.enc.Base64.stringify(signatureSha);
var authorizationOrigin = `api_key="${apiKey}", algorithm="${algorithm}", headers="${headers}", signature="${signature}"`;
var authorization = btoa(authorizationOrigin);
url = `${url}?authorization=${authorization}&date=${date}&host=${host}`;
resolve(url);
});
}
- 先调上面的方法拿到请求地址,然后用该地址连接Websocket发送
this.state.url.value = await getWebsocketUrl(); // 拿到请求请求地址
// 发送方法
sendMsg() {
let params = { // 请求要带的参数
header: {
app_id: APPID,
},
parameter: {
chat: {
domain: "general",
temperature: 0.5,
max_tokens: 1024,
},
},
payload: {
message: {
text: [{ role: "user", content: "这里替换成内容" }], // content为请求的内容,也就是问题
},
},
};
this.socket = new WebSocket(url as string);
// 连接成功的回调
this.socket.onopen = function (event) {
console.log("WebSocket 已连接", event);
that.socket?.send(JSON.stringify(params)); // 这个地方发送请求
};
// 收到消息的回调
this.socket.onmessage = function (event) {
console.log("收到服务器内容:"); // 这个地方可以拿到服务器的响应
};
// 连接错误的回调
this.socket.onerror = function (event) {
console.log("WebSocket 错误", event);
};
// 连接关闭的回调
this.socket.onclose = function (event) {
console.log("WebSocket 连接已关闭", event);
};
}
- 成了!!!
这里解释了为什么要这样干,包含了官方给的例子www.xfyun.cn/doc/spark/W…
总结一下,先去讯飞星火官网编辑一个助手拿到需要的参数信息,然后根据要求拿到websocket连接地址,然后发起请求就成了!!!