当前位置: 首页 > news >正文

招远住房和规划建设管理局网站上海市建设资格注册中心网站

招远住房和规划建设管理局网站,上海市建设资格注册中心网站,网站建设人工智能开发,属于建筑施工企业会计存货的是前言#xff1a;我的最终目的是为了在QQ上集成一个AI机器人#xff0c;因此在这里先实现一个简单的集成 先上效果图 总体还是很简单的#xff0c;我在调用websock获取回复内容的基础上另外集成了一个事件总线#xff0c;让我们在调用获取消息的时候能够更加方便快捷 工具代…前言我的最终目的是为了在QQ上集成一个AI机器人因此在这里先实现一个简单的集成 先上效果图 总体还是很简单的我在调用websock获取回复内容的基础上另外集成了一个事件总线让我们在调用获取消息的时候能够更加方便快捷 工具代码如下 import CryptoJS from crypto-jsexport function getWebsocketUrl(API_KEY: string, API_SECRET: string) {return new Promise((resolve, reject) {var apiKey API_KEYvar apiSecret API_SECRETvar url wss://spark-api.xf-yun.com/v1.1/chatvar host location.hostvar date new Date().toGMTString()var algorithm hmac-sha256var headers host date request-linevar signatureOrigin host: ${host}\ndate: ${date}\nGET /v1.1/chat HTTP/1.1var 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)}) }export default class TTSRecorder {appId: string;apiKey: string;apiSecret: string;status: string;onWillStatusChange: any;ttsWS: any;content: string;revertText: string;_events: any[];constructor(appId: string, API_KEY: string, API_SECRET: string) {this.appId appIdthis.apiKey API_KEYthis.apiSecret API_SECRETthis._events [];this.status init}// 修改状态setStatus(status: string) {this.onWillStatusChange this.onWillStatusChange(this.status, status)this.status status}// 连接websocketconnectWebSocket() {this.setStatus(ttsing)return getWebsocketUrl(this.apiKey, this.apiSecret).then(url {let ttsWSif (WebSocket in window) {ttsWS new WebSocket(url as string)} else if (MozWebSocket in window) {ttsWS new MozWebSocket(url)} else {alert(浏览器不支持WebSocket)return}this.ttsWS ttsWSttsWS.onopen e {this.webSocketSend()}ttsWS.onmessage e {this.result(e.data)}ttsWS.onerror e {clearTimeout(this.playTimeout)this.setStatus(error)alert(WebSocket报错请f12查看详情)console.error(详情查看${encodeURI(url.replace(wss:, https:))})}ttsWS.onclose e {console.log(e)}})}// websocket发送数据webSocketSend() {var params {header: {app_id: this.appId,uid: fd3f47e4-d},parameter: {chat: {domain: general,temperature: 0.5,max_tokens: 1024}},payload: {message: {text: [{role: user,content: this.content}]}}}console.log(JSON.stringify(params))this.ttsWS.send(JSON.stringify(params))}start(text: string) {this.revertText ; // 请空回答历史this.content textthis.connectWebSocket()}// websocket接收数据的处理result(resultData: string) {let jsonData JSON.parse(resultData)// 提问失败if (jsonData.header.code ! 0) {const data {code: jsonData.header.code,content: jsonData.header.message}this.emit(error, data)return}if (jsonData.header.code 0 jsonData.header.status 2) {this.ttsWS.close()this.setStatus(init)this.emit(message, {content: this.revertText,code: 0})this.emit(endRecord, {content: this.revertText,code: 0})}// 记录回答const textArr jsonData.payload.choices.text jsonData.payload.choices.text.map(item item.content) || []this.revertText this.revertText textArr.join()}on(event: string, fn: Function) {if (Array.isArray(event)) {for (let i 0, l event.length; i l; i) {this.on(event[i], fn)}} else {// 存在直接push, 不存在创建为空数组再push(this._events[event] || (this._events[event] [])).push(fn)}}once(event: string, fn: Function) {let _self this;function handler() {_self.off(event, handler);fn.apply(null, arguments);//emit里面调用时会给on方法传参}handler.fn fn;//off里面根据这个判断销毁事件this.on(event, handler);}off(event: string, fn: Function) {//不传参数表示清空所有if (!arguments.length) {this._events [];}//数组循环清空if (Array.isArray(event)) {for (let i 0, l event.length; i l; i) {this.off(event[i], fn)}}const cbs this._events[event];if (!cbs) {return;}//不传第二参表示清空某事件所有监听函数if (arguments.length 1) {this._events[event] null}let cb, i cbs.lengthwhile (i--) {cb cbs[i]if (cb fn || cb.fn fn) { //cb.fnfn用来移除once注册的事件cbs.splice(i, 1)break}}}emit(event: string, ...args: any[]) {console.log(args, typeof args)// 不存在event直接返回if (!this._events[event]) {return}let cbs [...this._events[event]];if (cbs) {for (let i 0, l cbs.length; i l; i) {try {cbs[i].apply(null, [...arguments].slice(1))} catch (e) {new Error(event handler for ${e})}}}} }不管你是想一次性接收到所有的内容还是想像官方一样一点一点的接收都能很方便的使用视图调用代码如下 const xfConfig reactive({appid: ,apisecret: ,apikey: , });function testXfSend() {if (!sendTest.content) {ElNotification.error({title: 请输入发送内容,});return;}const XfBot new XfUtil(xfConfig.appid, xfConfig.apikey, xfConfig.apisecret);sendTest.revert ;sendTest.loading true;XfBot.start(sendTest.content);XfBot.on(endRecord, (data) {console.log(回复内容, data.content);sendTest.loading false;sendTest.revert data.content;});// XfBot.on(message, (data) {});XfBot.on(error, (data) {sendTest.loading false;ElNotification.error({title: data.content,});}); }
http://www.w-s-a.com/news/405242/

相关文章:

  • 网站没有收录原因trel域名
  • 建设门户网站的目的和需求台州专业网站建设方案
  • 苏州网站建设系统方案成都行业网站设计
  • wordpress多说读者墙seo分析师招聘
  • 视频网站开发计划书wordpress文件详情
  • 重庆付费网站推广电商网站 开发周期
  • thinkcmf 做企业网站视频播放类网站建设费用
  • vps网站助手大学选修课网站建设
  • 南浦电商网站建设北京海淀社保网站
  • 传奇网站模板怎么做的吗大连警方最新通告
  • 成都私人做公司网站的北京网站建设需要多少钱
  • 魔客吧是什麼程序做的网站代理厦门网站设计公司
  • 90设计手机站东营网站推广
  • 哪家购物网站建设好专门做水生植物销售网站
  • php医院网站开发兼职app开发网上app开发
  • 接任务做兼职的的网站衡阳手机网站设计
  • 徐州经济开发区网站佛山百度关键词seo外包
  • 肃宁网站建设有限责任公司法人承担什么责任
  • 珠海斗门建设局网站如何免费做网站
  • 自助外贸网站建设可直接打开网站的网页
  • 江苏城嘉建设工程有限公司网站潍坊网站定制公司
  • 四川省住房和城乡建设厅新网站宜昌建设厅网站
  • 建设网站一般流程建设开发网站
  • 设计外贸英文网站国家企业信息信用公信系统
  • 主题资源网站创建时 如何突出设计的特点阿里云是做网站的吗
  • 乌市建设工程质量监督站网站外资公司注册
  • 档案馆网站机房建设做游戏网站打鱼
  • 网站建设平台 创新模式搭建好ftp服务器 如何通过网站访问
  • 苏州集团网站制作设计网页制作软件ai
  • 网站建设新手教程视频教程手帐风格wordpress主题