12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105 |
- "use strict";
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- var ChivoxSdkVersion = 0x02010100;
- var ChivoxAiErr = {
- EngineStatus: 72201,
- NotYetNew: 72202,
- NotYetStart: 72203,
- NewRepeatedly: 72204,
- StartRepeatedly: 72205,
- StopRepeatedly: 72206,
- WaitConnectFinish: 72207,
- WaitStartFinish: 72208,
- WaitStopFinish: 72209,
- WaitResulted: 72210,
- WaitCancelFinish: 72211,
- StartRecorderFail: 72212,
- StopRecorderFail: 72213,
- CancelRecorderFail: 72214,
- WxRecorderError: 72215,
- OperationCanceled: 72216
- };
- var ChivoxWsErr = {
- WechatVersion: 72001,
- InvalidApp: 72002,
- InvalidAppAppId: 72003,
- InvalidAppSig: 72004,
- InvalidAppAlg: 72005,
- InvalidAppUserId: 72006,
- InvalidRequest: 72007,
- InvalidAudio: 72008,
- InvalidAudioType: 72009,
- InvalidAudioChannel: 72010,
- InvalidSampleBytes: 72011,
- InvalidSampleRate: 72012,
- EngineStatus: 72013,
- ConnectRepeatedly: 72014,
- ConnectFail: 72015,
- StartRepeatedly: 72016,
- StopRepeatedly: 72017,
- NotYetConnect: 72018,
- NotYetStarted: 72019,
- WaitConnected: 72020,
- WaitResulted: 72021,
- ResultJsonParse: 72022,
- ResultNotObject: 72023,
- NetException: 72024,
- ServerTimeout: 72025
- };
- var ChivoxUtils = {
- generateGuid: function generateGuid() {
- return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
- var r = Math.random() * 16 | 0;
- var v = c === "x" ? r : r & 0x3 | 0x8;
- return v.toString(16);
- });
- },
- getVersion: function getVersion(_version) {
- var tkn = (_version & 0xff000000) >> 24;
- var ver = "";
- ver += tkn.toString();
- tkn = (_version & 0x00ff0000) >> 16;
- ver += "." + tkn.toString();
- tkn = (_version & 0x0000ff00) >> 8;
- ver += "." + tkn.toString();
- tkn = _version & 0x000000ff;
- if (tkn !== 0) {
- ver += "." + tkn.toString();
- }
- return ver;
- },
- compareWxVersion: function compareWxVersion(v1, v2) {
- v1 = v1.split('.');
- v2 = v2.split('.');
- var len = Math.max(v1.length, v2.length);
- while (v1.length < len) {
- v1.push('0');
- }
- while (v2.length < len) {
- v2.push('0');
- }
- for (var i = 0; i < len; i++) {
- var num1 = parseInt(v1[i]);
- var num2 = parseInt(v2[i]);
- if (num1 > num2) {
- return 1;
- } else if (num1 < num2) {
- return -1;
- }
- }
- return 0;
- },
- isValidApp: function isValidApp(app, err, tag) {
- if (typeof tag !== "string") tag = "";
- if (typeof app === "undefined") {
- err.errId = ChivoxWsErr.InvalidApp;
- err.error = tag + " no 'app'. ";
- return false;
- }
- if ((typeof app === "undefined" ? "undefined" : _typeof(app)) !== "object") {
- err.errId = ChivoxWsErr.InvalidApp;
- err.error = tag + " invalid 'app'. ";
- return false;
- }
- if (typeof app.applicationId !== "string") {
- err.errId = ChivoxWsErr.InvalidAppAppId;
- err.error = tag + " invalid 'app.applicationId'. ";
- return false;
- }
- if (typeof app.sig !== "string") {
- err.errId = ChivoxWsErr.InvalidAppSig;
- err.error = tag + " invalid 'app.sig'. ";
- return;
- }
- if (typeof app.alg !== "string") {
- err.errId = ChivoxWsErr.InvalidAppAlg;
- err.error = tag + " invalid 'app.alg'. ";
- return false;
- }
- if (typeof app.userId !== "string") {
- err.errId = ChivoxWsErr.InvalidAppUserId;
- err.error = tag + " invalid 'app.userId'. ";
- return false;
- }
- return true;
- },
- isValidRequest: function isValidRequest(request, err, tag) {
- if (typeof tag !== "string") tag = "";
- if ((typeof request === "undefined" ? "undefined" : _typeof(request)) !== "object") {
- err.errId = ChivoxWsErr.InvalidRequest;
- err.error = tag + " invalid 'request'. ";
- return false;
- }
- return true;
- },
- isValidAudio: function isValidAudio(audio, err) {
- if ((typeof audio === "undefined" ? "undefined" : _typeof(audio)) !== "object") {
- err.errId = ChivoxWsErr.InvalidAudio;
- err.error = "[ChivoxWsEngine] invalid 'audio', or no 'audio'. ";
- return false;
- }
- if (typeof audio.audioType !== "string") {
- err.errId = ChivoxWsErr.InvalidAudioType;
- err.error = "[ChivoxWsEngine] invalid audio.audioType. ";
- return false;
- }
- if (audio.channel !== 1) {
- err.errId = ChivoxWsErr.InvalidAudioChannel;
- err.error = "[ChivoxWsEngine] invalid audio.channel. ";
- return false;
- }
- if (typeof audio.sampleBytes !== "number") {
- err.errId = ChivoxWsErr.InvalidSampleBytes;
- err.error = "[ChivoxWsEngine] invalid audio.sampleBytes. ";
- return false;
- }
- if (typeof audio.sampleRate !== "number") {
- err.errId = ChivoxWsErr.InvalidSampleRate;
- err.error = "[ChivoxWsEngine] invalid audio.sampleRate. ";
- return false;
- }
- return true;
- }
- };
- var ChivoxFire = {
- Fail: function Fail(options, res, res2) {
- if (typeof options.fail === "function") {
- options.fail(res);
- } else {
- console.warn("'fail' undefined");
- }
- if (typeof options.complete === "function") {
- options.complete(res2);
- }
- },
- Success: function Success(options, res, res2) {
- if (typeof options.success === "function") {
- options.success(res);
- } else {
- console.warn("'success' undefined");
- }
- if (typeof options.complete === "function") {
- options.complete(res2);
- }
- },
- OnResult: function OnResult(obj, res) {
- if (typeof obj._onResult === "function") {
- obj._onResult(res);
- } else {
- console.warn("'onResult' undefined");
- }
- },
- OnErrorResult: function OnErrorResult(obj, res) {
- if (typeof obj._onErrorResult === "function") {
- obj._onErrorResult(res);
- } else {
- console.warn("'onErrorResult' undefined");
- }
- },
-
- OnRecorderStart: function OnRecorderStart(obj, res) {
- if (typeof obj._onRecorderStart === "function") {
- obj._onRecorderStart(res);
- } else {
- console.warn("'onRecorderStart' undefined");
- }
- },
- OnRecorderPause: function OnRecorderPause(obj, res) {
- if (typeof obj._onRecorderPause === "function") {
- obj._onRecorderPause(res);
- } else {
- console.warn("'onRecorderPause' undefined");
- }
- },
- OnRecorderResume: function OnRecorderResume(obj, res) {
- if (typeof obj._onRecorderResume === "function") {
- obj._onRecorderResume(res);
- } else {
- console.warn("'onRecorderResume' undefined");
- }
- },
- OnRecorderStop: function OnRecorderStop(obj, res) {
- if (typeof obj._onRecorderStop === "function") {
- obj._onRecorderStop(res);
- } else {
- console.warn("'onRecorderStop' undefined");
- }
- },
- OnRecorderError: function OnRecorderError(obj, res) {
- if (typeof obj._onRecorderError === "function") {
- obj._onRecorderError(res);
- }
- },
- OnRecorderFrame: function OnRecorderFrame(obj, res) {
- if (typeof obj._onRecorderFrame === "function") {
- obj._onRecorderFrame(res);
- }
- }
- };
- var ChivoxWsLogBus = {
- WsConnectStart: 19,
- WsConnectSuccess: 15,
- WsConnectClose: 17,
- WsConnectFail: 16,
- GetResultSuccess: 1000,
- GetResultTimeOut: 1001
- };
- var ChivoxWsEngineStatus = {
- None: "None",
- Connecting: "Connecting",
- Ready: "Ready",
- Evaluating: "Evaluating",
- Resulting: "Resulting",
- Resulted: "Resulted"
- };
- var ChivoxWsEngineReStatus = {
- completed: "completed",
- reConnecting: "reConnecting",
- reConnected: "reConnected"
- };
- var ChivoxWsEngine = function () {
- function ChivoxWsEngine() {
- _classCallCheck(this, ChivoxWsEngine);
- var that = this;
- that._version = ChivoxSdkVersion;
- that._SERVER_DEFAULT = "wss://cloud.chivox.com/ws?e=0&t=0&version=2";
- that._SERVER_GRAY = "wss://gray.cloud.chivox.com/ws?e=0&t=0&version=2";
- that._server = that._SERVER_DEFAULT;
- that._wsClient = undefined;
- that._waitTimer = undefined;
- that._lastConnectOptions = undefined;
- that._lastStartOptions = undefined;
- that._status = ChivoxWsEngineStatus.None;
- that._reConnecting = undefined;
- that._onErrorResult = undefined;
- that._onResult = undefined;
- }
- _createClass(ChivoxWsEngine, [{
- key: "onResult",
- value: function onResult(func) {
- this._onResult = func;
- }
- }, {
- key: "onErrorResult",
- value: function onErrorResult(func) {
- this._onErrorResult = func;
- }
- }, {
- key: "getVersion",
- value: function getVersion() {
- return ChivoxUtils.getVersion(this._version);
- }
-
- }, {
- key: "init",
- value: function init(cfg) {
- var that = this;
- console.log("[ChivoxWsEngine] init()");
- that.reset();
- if ((typeof cfg === "undefined" ? "undefined" : _typeof(cfg)) === "object") {
- if (cfg.gray) {
- that._server = that._SERVER_GRAY;
- }
- if (typeof cfg.server === "string") {
- that._server = cfg.server + "/ws?e=0&t=0&version=2";
- }
- }
- }
-
- }, {
- key: "start",
- value: function start(options) {
- var that = this;
- console.log("[ChivoxWsEngine] start()");
- if (that._status != ChivoxWsEngineStatus.None && that._status != ChivoxWsEngineStatus.Ready && that._status != ChivoxWsEngineStatus.Resulted) {
- if (that._status == ChivoxWsEngineStatus.Connecting) {
- var _err = { errId: ChivoxWsErr.WaitConnected,
- error: "[ChivoxWsEngine] engine is connecting to server, please wait connected. "
- };
- ChivoxFire.Fail(options, _err);
- return;
- }
- if (that._status == ChivoxWsEngineStatus.Evaluating) {
- var _err2 = { errId: ChivoxWsErr.StartRepeatedly,
- error: "[ChivoxWsEngine] you shouldn't call 'start' repeatedly. "
- };
- ChivoxFire.Fail(options, _err2);
- return;
- }
- if (that._status == ChivoxWsEngineStatus.Resulting) {
- var _err3 = { errId: ChivoxWsErr.WaitResulted,
- error: "[ChivoxWsEngine] you should wait the 'result'. "
- };
- ChivoxFire.Fail(options, _err3);
- return;
- }
-
- var err = { errId: ChivoxWsErr.EngineStatus,
- error: "[ChivoxWsEngine] engine status error when you call 'start', status: " + that._status + ". "
- };
- ChivoxFire.Fail(options, err);
- return;
- }
- options.tcpNoDelay = typeof options.tcpNoDelay === "boolean" ? options.tcpNoDelay : true;
- options.originalResult = typeof options.originalResult === "boolean" ? options.originalResult : false;
- that._lastStartOptions = options;
- if (that._status == ChivoxWsEngineStatus.None) {
- that._reConnecting = ChivoxWsEngineReStatus.completed;
- that._doConnect({
- app: options.app,
- tcpNoDelay: options.tcpNoDelay,
- success: function success() {
- that._doStart(options);
- },
- fail: function fail(res) {
- ChivoxFire.Fail(options, res);
- }
- });
- return;
- }
- that._doStart(options);
- }
- }, {
- key: "isStarted",
- value: function isStarted() {
- var that = this;
- return that._status == ChivoxWsEngineStatus.Evaluating;
- }
- }, {
- key: "_doConnect",
- value: function _doConnect(options) {
- var that = this;
- var sysInfo = wx.getSystemInfoSync();
- that._status = ChivoxWsEngineStatus.Connecting;
- if (ChivoxUtils.compareWxVersion(sysInfo.SDKVersion, "1.7.0") < 0) {
- that._status = ChivoxWsEngineStatus.None;
- var _err4 = { errId: ChivoxWsErr.WechatVersion,
- error: "[ChivoxWsEngine] the minimum version requirement of wechat-app-sdk is 1.7.0 . "
- };
- ChivoxFire.Fail(options, _err4);
- return;
- }
- var err = {};
- if (!ChivoxUtils.isValidApp(options.app, err, "[ChivoxWsEngine]")) {
- that._status = ChivoxWsEngineStatus.None;
- ChivoxFire.Fail(options, err);
- return;
- }
- that._wsClient = wx.connectSocket({
- url: that._server,
- tcpNoDelay: options.tcpNoDelay,
- success: function success(res) {
- that._logBus({ est: ChivoxWsLogBus.WsConnectStart, reason: res.errMsg });
- },
- fail: function fail(res) {
- that._status = ChivoxWsEngineStatus.None;
- var err = { errId: ChivoxWsErr.ConnectFail,
- error: "[ChivoxWsEngine] connect server(" + that._server + ") fail. " + res.errMsg + ". "
- };
- that.reset();
- ChivoxFire.Fail(options, err);
- }
- });
- if (typeof that._wsClient !== "undefined") {
- that._lastConnectOptions = options;
- that._wsClient.onOpen(that._onWsOpen(that._wsClient));
- that._wsClient.onMessage(that._onWsMessage(that._wsClient));
- that._wsClient.onError(that._onWsError(that._wsClient));
- that._wsClient.onClose(that._onWsClose(that._wsClient));
- }
- }
- }, {
- key: "_doStart",
- value: function _doStart(options) {
- var that = this;
- var oldStatus = that._status;
- that._status = ChivoxWsEngineStatus.Evaluating;
- var err = {};
- if (!ChivoxUtils.isValidRequest(options.request, err, "[ChivoxWsEngine]")) {
- that._status = oldStatus;
- ChivoxFire.Fail(options, err);
- return;
- }
- err = {};
- if (!ChivoxUtils.isValidAudio(options.audio, err)) {
- that._status = oldStatus;
- ChivoxFire.Fail(options, err);
- return;
- }
- var tokenId = options.tokenId;
- if (typeof tokenId !== "string") {
- tokenId = ChivoxUtils.generateGuid().replace(/-/g, "");
- }
- that._tokenId = tokenId;
- var startObj = { tokenId: tokenId, request: options.request, audio: options.audio };
- var startText = JSON.stringify(startObj);
- console.log("[ChivoxWsEngine] send start text");
- console.debug(startObj);
- that._wsClient.send({ data: startText,
- fail: function fail(res) {
- console.warn("[ChivoxWsEngine] send start text fail!!! errMsg: " + res.errMsg);
- }
- });
- ChivoxFire.Success(options, { tokenId: tokenId });
- }
-
- }, {
- key: "feed",
- value: function feed(options) {
- var that = this;
- console.log("[ChivoxWsEngine] feed()");
- if (that._status != ChivoxWsEngineStatus.Evaluating) {
- if (that._status == ChivoxWsEngineStatus.None) {
- var _err5 = { errId: ChivoxWsErr.NotYetConnect,
- error: "[ChivoxWsEngine] you should call 'start' first. "
- };
- ChivoxFire.Fail(options, _err5);
- return;
- }
- if (that._status == ChivoxWsEngineStatus.Connecting) {
- var _err6 = { errId: ChivoxWsErr.WaitConnected,
- error: "[ChivoxWsEngine] you should wait 'start' complete. "
- };
- ChivoxFire.Fail(options, _err6);
- return;
- }
- if (that._status == ChivoxWsEngineStatus.Ready) {
- var _err7 = { errId: ChivoxWsErr.NotYetStarted,
- error: "[ChivoxWsEngine] you should call 'start' first. "
- };
- ChivoxFire.Fail(options, _err7);
- return;
- }
-
- if (that._status == ChivoxWsEngineStatus.Resulting || that._status == ChivoxWsEngineStatus.Resulted) {
- console.warn("[ChivoxWsEngine] you shouldn't feed data after you called 'stop'. ");
- ChivoxFire.Success(options);
- return;
- }
-
- var err = { errId: ChivoxWsErr.EngineStatus,
- error: "[ChivoxWsEngine] engine status error when you call 'feed', status: " + that._status + ". "
- };
- ChivoxFire.Fail(options, err);
- return;
- }
- console.log("[ChivoxWsEngine] send audio-data");
- if (null == options.data || options.data.byteLength <= 0) {
- ChivoxFire.Success(options);
- return;
- }
- that._wsClient.send({ data: options.data,
- fail: function fail(res) {
- console.warn("[ChivoxWsEngine] send audio-data fail!!! errMsg: " + res.errMsg);
- }
- });
- ChivoxFire.Success(options);
- }
-
- }, {
- key: "stop",
- value: function stop(options) {
- var that = this;
- console.log("[ChivoxWsEngine] stop()");
- if (that._status != ChivoxWsEngineStatus.Evaluating) {
- if (that._status == ChivoxWsEngineStatus.None) {
- var _err8 = { errId: ChivoxWsErr.NotYetConnect,
- error: "[ChivoxWsEngine] you should call 'start' first. "
- };
- ChivoxFire.Fail(options, _err8);
- return;
- }
- if (that._status == ChivoxWsEngineStatus.Connecting) {
- var _err9 = { errId: ChivoxWsErr.WaitConnected,
- error: "[ChivoxWsEngine] you should wait 'start' complete. "
- };
- ChivoxFire.Fail(options, _err9);
- return;
- }
- if (that._status == ChivoxWsEngineStatus.Ready || that._status == ChivoxWsEngineStatus.Resulted) {
- var _err10 = { errId: ChivoxWsErr.NotYetStarted,
- error: "[ChivoxWsEngine] you should call 'start' first. "
- };
- ChivoxFire.Fail(options, _err10);
- return;
- }
-
- if (that._status == ChivoxWsEngineStatus.Resulting) {
- var _err11 = { errId: ChivoxWsErr.StopRepeatedly,
- error: "[ChivoxWsEngine] you shouldn't call 'stop' repeatedly. "
- };
- ChivoxFire.Fail(options, _err11);
- return;
- }
-
- var err = { errId: ChivoxWsErr.EngineStatus,
- error: "[ChivoxWsEngine] engine status error when you call 'stop', status: " + that._status + ". "
- };
- ChivoxFire.Fail(options, err);
- return;
- }
- console.log("[ChivoxWsEngine] send stop");
- that._status = ChivoxWsEngineStatus.Resulting;
- that._wsClient.send({ data: '{"cmd":"stop"}',
- fail: function fail(res) {
- console.warn("[ChivoxWsEngine] send stop fail!!! errMsg: " + res.errMsg);
- }
- });
- var timeout = 60000;
- if (typeof options.timeout === "number" && options.timeout >= 0) {
- timeout = options.timeout;
- }
- if (typeof that._waitTimer !== "undefined") {
- clearTimeout(that._waitTimer);
- that._waitTimer = undefined;
- }
- that._waitTimer = setTimeout(that._onWaitResultTimeout(), timeout);
- ChivoxFire.Success(options);
- }
-
- }, {
- key: "reset",
- value: function reset() {
- var that = this;
- console.log("[ChivoxWsEngine] reset()");
- if (typeof that._wsClient !== "undefined") {
- var wsClient = that._wsClient;
- that._wsClient = undefined;
-
- wsClient.close();
- }
- if (typeof that._waitTimer !== "undefined") {
- var waitTimer = that._waitTimer;
- that._waitTimer = undefined;
- clearTimeout(waitTimer);
- }
- that._status = ChivoxWsEngineStatus.None;
- that._lastConnectOptions = undefined;
- that._tokenId = undefined;
- }
- }, {
- key: "_onWsOpen",
- value: function _onWsOpen(wsClient) {
- var that = this;
- return function (res) {
- console.log("[ChivoxWsEngine] _onWsOpen(), at status: " + that._status);
- if (that._wsClient !== wsClient) {
-
- console.log("[ChivoxWsEngine] _onWsOpen: engine has been reset. not current wsClient's event.");
- return;
- }
- if (that._reConnecting === ChivoxWsEngineReStatus.reConnecting) {
- that._reConnecting = ChivoxWsEngineReStatus.reConnected;
- }
- that._logBus({ est: ChivoxWsLogBus.WsConnectSuccess, reason: res.errMsg });
- var lastConnectOptions = that._lastConnectOptions;
- that._lastConnectOptions = undefined;
- var app = undefined;
- if (typeof lastConnectOptions !== "undefined") {
- app = lastConnectOptions.app;
- }
- var connectObj = {
- sdk: { version: that._version, source: 0x09, protocol: 0x1 },
- app: app };
- var connectText = JSON.stringify(connectObj);
- console.log("[ChivoxWsEngine] send connect text");
- console.log(connectObj);
- that._wsClient.send({ data: connectText,
- fail: function fail(res) {
- console.warn("[ChivoxWsEngine] send connect text fail!!! errMsg: " + res.errMsg);
- }
- });
- that._status = ChivoxWsEngineStatus.Ready;
- if (typeof lastConnectOptions !== "undefined") {
- ChivoxFire.Success(lastConnectOptions);
- } else {
- console.error("[ChivoxWsEngine] _onWsOpen: lastConnectOptions undefined");
- }
- };
- }
- }, {
- key: "_onWsMessage",
- value: function _onWsMessage(wsClient) {
- var that = this;
- return function (res) {
- console.log("[ChivoxWsEngine] _onWsMessage(), at status: " + that._status);
- if (that._wsClient !== wsClient) {
-
- console.log("[ChivoxWsEngine] _onWsMessage: engine has been reset. not current wsClient's event.");
- return;
- }
- var result = undefined;
- if ((typeof res === "undefined" ? "undefined" : _typeof(res)) === "object") {
- result = res.data;
- }
- var isBufferData = result instanceof ArrayBuffer;
- if ((typeof result !== "string" || result == "") && !isBufferData) {
- console.warn("[ChivoxWsEngine] _onWsMessage: server response empty result");
- return;
- }
- if (that._status == ChivoxWsEngineStatus.Ready) {
- console.warn("[ChivoxWsEngine] _onWsMessage: recv websocket response at Ready status, just ignore it. ");
- return;
- }
- if (that._status == ChivoxWsEngineStatus.Resulted) {
- console.warn("[ChivoxWsEngine] _onWsMessage: recv websocket response at Resulted status, just ignore it. ");
- return;
- }
- if (that._status != ChivoxWsEngineStatus.Evaluating && that._status != ChivoxWsEngineStatus.Resulting) {
- console.error("[ChivoxWsEngine] _onWsMessage: status error, status = " + that._status);
- return;
- }
- var needReset = false;
- if (isBufferData) {
- console.debug("[ChivoxWsEngine] result - ArrayBuffer ");
- console.debug(result);
- that._status = ChivoxWsEngineStatus.Resulted;
- if (typeof that._waitTimer !== "undefined") {
- clearTimeout(that._waitTimer);
- that._waitTimer = undefined;
- }
- needReset = true;
- if (needReset) that.reset();
- that._logBus({ est: ChivoxWsLogBus.GetResultSuccess, reason: "1" });
- ChivoxFire.OnResult(that, result);
- return;
- }
- var originalResult = result;
- try {
- result = JSON.parse(result);
- } catch (e) {
- needReset = true;
- result = {
- errId: ChivoxWsErr.ResultJsonParse,
- error: "[ChivoxWsEngine] the server response invalid json. ",
- tokenId: that._tokenId
- };
- }
- if ((typeof result === "undefined" ? "undefined" : _typeof(result)) !== "object") {
- needReset = true;
- result = {
- errId: ChivoxWsErr.ResultNotObject,
- error: "[ChivoxWsEngine] the server response is not json. ",
- tokenId: that._tokenId
- };
- }
- console.debug("[ChivoxWsEngine] result = " + JSON.stringify(result));
-
- if (result.tokenId !== undefined && result.tokenId !== null) {
- if (result.tokenId !== that._tokenId) {
-
- console.warn("[ChivoxWsEngine] _onWsMessage: tokenId (" + result.tokenId + ") not matched to " + that._tokenId);
- return;
- }
- }
- if (_typeof(result.error) === "object") {
- var errMsg = result.error.msg;
- result.errId = result.error.id;
- result.error = errMsg;
- if (result.tokenId === undefined || result.tokenId === null) {
- result.tokenId = that._tokenId;
- }
- needReset = true;
- }
- if (typeof result.errId === "number" && result.errId !== 0 || result.eof == 1) {
- that._status = ChivoxWsEngineStatus.Resulted;
- if (typeof that._waitTimer !== "undefined") {
- clearTimeout(that._waitTimer);
- that._waitTimer = undefined;
- }
-
- needReset = true;
- }
- if (needReset) that.reset();
- that._logBus({ est: ChivoxWsLogBus.GetResultSuccess, reason: result.eof });
- if (typeof result.errId === "number" && result.errId !== 0) {
- ChivoxFire.OnErrorResult(that, result);
- } else {
- var backResult = that._lastStartOptions.originalResult === true && result.eof == 1 ? originalResult : result;
- ChivoxFire.OnResult(that, backResult);
- }
- };
- }
- }, {
- key: "_onWsError",
- value: function _onWsError(wsClient) {
- var that = this;
- return function (res) {
- console.log("[ChivoxWsEngine] _onWsError(), at status: " + that._status + ", res: " + JSON.stringify(res));
- if (that._wsClient !== wsClient) {
- console.log("[ChivoxWsEngine] _onWsError: engine has been reset. not current wsClient's event.");
- return;
- }
- var status = that._status;
- if (status == ChivoxWsEngineStatus.None) {
-
- console.error("[ChivoxWsEngine] _onWsError: code logic error, status: " + that._status);
- that.reset();
- return;
- }
- if (status == ChivoxWsEngineStatus.Connecting) {
- var lastConnectOptions = that._lastConnectOptions;
- if (that._reConnecting === ChivoxWsEngineReStatus.completed) {
- that._reConnecting = ChivoxWsEngineReStatus.reConnecting;
- setTimeout(function () {
- console.log("[ChivoxWsEngine] in _onWsError: webSocket reconnecting !!!");
- that._doConnect({
- app: lastConnectOptions.app,
- tcpNoDelay: lastConnectOptions.tcpNoDelay,
- success: function success() {
- that._doStart(that._lastStartOptions);
- },
- fail: function fail(res) {
- ChivoxFire.Fail(that._lastStartOptions, res);
- }
- });
- }, 100);
- } else {
- that._logBus({ est: ChivoxWsLogBus.WsConnectFail, reason: res.errMsg });
- var err = { errId: ChivoxWsErr.ConnectFail,
- error: "[ChivoxWsEngine] connect websocket server fail, " + res.errMsg + ". "
- };
- that.reset();
- if (typeof lastConnectOptions !== "undefined") {
- ChivoxFire.Fail(lastConnectOptions, err);
- } else {
- console.error("[ChivoxWsEngine] _onWsError: lastConnectOptions undefined");
- }
- }
- return;
- }
- if (status == ChivoxWsEngineStatus.Ready || status == ChivoxWsEngineStatus.Resulted) {
- that.reset();
- return;
- }
- if (status == ChivoxWsEngineStatus.Evaluating || status == ChivoxWsEngineStatus.Resulting) {
- var _err12 = { errId: ChivoxWsErr.NetException,
- error: "[ChivoxWsEngine] websocket error. errMsg: " + res.errMsg + ". ",
- tokenId: that._tokenId
- };
- that.reset();
- ChivoxFire.OnErrorResult(that, _err12);
- return;
- }
- };
- }
- }, {
- key: "_onWsClose",
- value: function _onWsClose(wsClient) {
- var that = this;
- return function (res) {
- if (that._reConnecting === ChivoxWsEngineReStatus.reConnecting) return;
- that._logBus({ est: ChivoxWsLogBus.WsConnectClose, reason: res.errMsg });
- console.log("[ChivoxWsEngine] _onWsClose(), at status: " + that._status);
- if (that._wsClient !== wsClient) {
- console.log("[ChivoxWsEngine] _onWsClose: engine has been reset. not current wsClient's event.");
- return;
- }
- var status = that._status;
- if (status == ChivoxWsEngineStatus.None) {
-
- console.error("[ChivoxWsEngine] _onWsClose: code logic error, status: " + that._status);
- that.reset();
- return;
- }
- if (status == ChivoxWsEngineStatus.Connecting) {
- var lastConnectOptions = that._lastConnectOptions;
- var err = { errId: ChivoxWsErr.ConnectFail,
- error: "[ChivoxWsEngine] connect websocket server fail, " + res.errMsg + ". "
- };
- that.reset();
- if (typeof lastConnectOptions !== "undefined") {
- ChivoxFire.Fail(lastConnectOptions, err);
- } else {
- console.error("[ChivoxWsEngine] _onWsClose: lastConnectOptions undefined");
- }
- return;
- }
- if (status == ChivoxWsEngineStatus.Ready || status == ChivoxWsEngineStatus.Resulted) {
- that.reset();
- return;
- }
- if (status == ChivoxWsEngineStatus.Evaluating || status == ChivoxWsEngineStatus.Resulting) {
- var _err13 = { errId: ChivoxWsErr.NetException,
- error: "[ChivoxWsEngine] websocket closed. errMsg: " + res.errMsg + ". ",
- tokenId: that._tokenId
- };
- that.reset();
- ChivoxFire.OnErrorResult(that, _err13);
- return;
- }
- };
- }
- }, {
- key: "_onWaitResultTimeout",
- value: function _onWaitResultTimeout() {
- var that = this;
- return function (res) {
- console.log("[ChivoxWsEngine] _onWaitResultTimeout, at status: " + that._status);
- that._logBus({ est: ChivoxWsLogBus.GetResultTimeOut, reason: "server timeout" });
- var status = that._status;
- if (status == ChivoxWsEngineStatus.Resulting) {
- var err = { errId: ChivoxWsErr.ServerTimeout,
- error: "[ChivoxWsEngine] server timeout",
- tokenId: that._tokenId
- };
- that.reset();
- ChivoxFire.OnErrorResult(that, err);
- return;
- }
-
- that.reset();
- console.error("[ChivoxWsEngine] _onWaitResultTimeout: status error, status: " + that._status);
- };
- }
- }, {
- key: "_logBus",
- value: function _logBus(options) {
- var that = this;
- var os_res = wx.getSystemInfoSync();
- options.os_version = os_res.system;
- options.timeStamp = new Date().getTime();
- options.uid = typeof that._lastStartOptions.request.uid == "string" ? that._lastStartOptions.request.uid : "unknow";
- options.applicationId = that._lastStartOptions.app.applicationId;
- options.reason = typeof options.reason == "string" ? options.reason : "unknow";
- var log_bus = { uid: options.uid, applicationId: options.applicationId, protocol: "1", os_version: options.os_version, body: [{ est: options.est, timestamp: options.timeStamp, reason: options.reason }] };
- wx.request({
- url: "https://log.cloud.chivox.com/bus?ver=2",
- method: "POST",
- data: "log=" + JSON.stringify(log_bus),
- fail: function fail(res) {
- console.error("[ChivoxWsEngine] _logBus():send logbus fail," + res.errMsg);
- }
- });
- }
- }]);
- return ChivoxWsEngine;
- }();
- var ChivoxAiEngineStatus = {
- None: "None",
- Ready: "Ready",
- Starting: "Starting",
- Recording: "Recording",
- Paused: "Paused",
- Stoping: "Stoping",
- Resulting: "Resulting",
- Canceling: "Canceling"
- };
- var ChivoxAiEngine = function () {
- function ChivoxAiEngine() {
- _classCallCheck(this, ChivoxAiEngine);
- var that = this;
- that._version = ChivoxSdkVersion;
- that._status = ChivoxAiEngineStatus.None;
- that._wsEngine = undefined;
- that._recorder = undefined;
- that._onRecorderStart = undefined;
- that._onRecorderPause = undefined;
- that._onRecorderResume = undefined;
- that._onRecorderStop = undefined;
- that._onRecorderError = undefined;
- that._onRecorderFrame = undefined;
- that._onResult = undefined;
- that._onErrorResult = undefined;
- that._lastStartOptions = undefined;
- that._lastStopOptions = undefined;
- that._lastCancelOptions = undefined;
- that._stopOriStatus = undefined;
- that._cancelOriStatus = undefined;
- that._serverTimeout = 60000;
- }
- _createClass(ChivoxAiEngine, [{
- key: "getVersion",
- value: function getVersion() {
- var that = this;return ChivoxUtils.getVersion(that._version);
- }
-
- }, {
- key: "createWsEngine",
- value: function createWsEngine(cfg) {
- var wsEngine = new ChivoxWsEngine();
- wsEngine.init(cfg);
- return wsEngine;
- }
-
- }, {
- key: "onRecorderStart",
- value: function onRecorderStart(func) {
- this._onRecorderStart = func;
- }
-
- }, {
- key: "onRecorderPause",
- value: function onRecorderPause(func) {
- this._onRecorderPause = func;
- }
-
- }, {
- key: "onRecorderResume",
- value: function onRecorderResume(func) {
- this._onRecorderResume = func;
- }
-
- }, {
- key: "onRecorderFrame",
- value: function onRecorderFrame(func) {
- this._onRecorderFrame = func;
- }
-
- }, {
- key: "onRecorderStop",
- value: function onRecorderStop(func) {
- this._onRecorderStop = func;
- }
-
- }, {
- key: "onRecorderError",
- value: function onRecorderError(func) {
- this._onRecorderError = func;
- }
-
- }, {
- key: "onResult",
- value: function onResult(func) {
- this._onResult = func;
- }
-
- }, {
- key: "onErrorResult",
- value: function onErrorResult(func) {
- this._onErrorResult = func;
- }
-
- }, {
- key: "aiengine_new",
- value: function aiengine_new(options) {
- var that = this;
- console.log("[ChivoxAiEngine] aiengine_new()");
- if (that._status != ChivoxAiEngineStatus.None) {
- var err = { errId: ChivoxAiErr.NewRepeatedly,
- error: "[ChivoxAiEngine] call 'aiengine_new' repeatedly. "
- };
- ChivoxFire.Fail(options, err);
- return;
- }
-
- if (typeof that._wsEngine === "undefined") {
- that._wsEngine = that.createWsEngine({
- gray: options.gray, server: options.server
- });
- that._wsEngine.onResult(that._wsEngineOnResult());
- that._wsEngine.onErrorResult(that._wsEngineOnErrorResult());
- }
- that._status = ChivoxAiEngineStatus.Ready;
- ChivoxFire.Success(options);
- }
-
- }, {
- key: "aiengine_start",
- value: function aiengine_start(options) {
- var that = this;
- console.log("[ChivoxAiEngine] aiengine_start()");
- if (that._status != ChivoxAiEngineStatus.Ready) {
- if (that._status == ChivoxAiEngineStatus.None) {
- var _err15 = { errId: ChivoxAiErr.NotYetNew,
- error: "[ChivoxAiEngine] you must call 'aiengine_new' first. "
- };
- ChivoxFire.Fail(options, _err15);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Starting || that._status == ChivoxAiEngineStatus.Recording || that._status == ChivoxAiEngineStatus.Paused) {
- var _err16 = { errId: ChivoxAiErr.StartRepeatedly,
- error: "[ChivoxAiEngine] you should not call 'aiengine_start' repeatedly. "
- };
- ChivoxFire.Fail(options, _err16);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Stoping) {
- var _err17 = { errId: ChivoxAiErr.WaitStopFinish,
- error: "[ChivoxAiEngine] you must wait 'aiengine_stop' completed. "
- };
- ChivoxFire.Fail(options, _err17);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Resulting) {
- var _err18 = { errId: ChivoxAiErr.WaitResulted,
- error: "[ChivoxAiEngine] you must wait engine result. "
- };
- ChivoxFire.Fail(options, _err18);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Canceling) {
- var _err19 = { errId: ChivoxAiErr.WaitCancelFinish,
- error: "[ChivoxAiEngine] you must wait 'aiengine_cancel' completed. "
- };
- ChivoxFire.Fail(options, _err19);
- return;
- }
-
- var _err14 = { errId: ChivoxAiErr.EngineStatus,
- error: "[ChivoxAiEngine] engine status error, status: " + that._status + ". "
- };
- ChivoxFire.Fail(options, _err14);
- return;
- }
- that._status = ChivoxAiEngineStatus.Starting;
- var err = {};
- if (!ChivoxUtils.isValidRequest(options.request, err, "[ChivoxAiEngine]")) {
- that._status = ChivoxAiEngineStatus.Ready;
- ChivoxFire.Fail(options, err);
- return;
- }
- err = {};
- if (!ChivoxUtils.isValidApp(options.app, err, "[ChivoxAiEngine]")) {
- that._status = ChivoxAiEngineStatus.Ready;
- ChivoxFire.Fail(options, err);
- return;
- }
- that._recorderBind();
-
- var audioOpt = {
- duration: 600000,
- format: "mp3",
- numberOfChannels: 1,
- sampleRate: 16000,
- frameSize: 5
- };
- if (_typeof(options.audio) === "object") {
- if (typeof options.audio.sampleRate === "number") {
- audioOpt.sampleRate = options.audio.sampleRate;
- }
- if (typeof options.audio.duration === "number" && options.audio.duration >= 500 && options.audio.duration < 600000) {
- audioOpt.duration = options.audio.duration;
- }
- }
- if (audioOpt.sampleRate >= 44100) {
- audioOpt.encodeBitRate = 128000;
- }
-
- that._lastStartOptions = options;
- that._recorder.start(audioOpt);
- }
-
- }, {
- key: "aiengine_stop",
- value: function aiengine_stop(options) {
- var that = this;
- console.log("[ChivoxAiEngine] aiengine_stop()");
- if (that._status != ChivoxAiEngineStatus.Recording && that._status != ChivoxAiEngineStatus.Paused) {
- if (that._status == ChivoxAiEngineStatus.None) {
- var _err20 = { errId: ChivoxAiErr.NotYetNew,
- error: "[ChivoxAiEngine] you must call 'aiengine_new' first. "
- };
- ChivoxFire.Fail(options, _err20);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Ready) {
- var _err21 = { errId: ChivoxAiErr.NotYetStart,
- error: "[ChivoxAiEngine] you must call 'aiengine_start' first. "
- };
- ChivoxFire.Fail(options, _err21);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Starting) {
- var _err22 = { errId: ChivoxAiErr.WaitStartFinish,
- error: "[ChivoxAiEngine] you must wait 'aiengine_start' completed. "
- };
- ChivoxFire.Fail(options, _err22);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Stoping || that._status == ChivoxAiEngineStatus.Resulting) {
- var _err23 = { errId: ChivoxAiErr.StopRepeatedly,
- error: "[ChivoxAiEngine] you should not call 'aiengine_stop' repeatedly. "
- };
- ChivoxFire.Fail(options, _err23);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Canceling) {
- var _err24 = { errId: ChivoxAiErr.WaitCancelFinish,
- error: "[ChivoxAiEngine] you must wait 'aiengine_cancel' completed. "
- };
- ChivoxFire.Fail(options, _err24);
- return;
- }
-
- var err = { errId: ChivoxAiErr.EngineStatus,
- error: "[ChivoxAiEngine] engine status error, status: " + that._status + ". "
- };
- ChivoxFire.Fail(options, err);
- return;
- }
- var oldStatus = that._status;
- that._status = ChivoxAiEngineStatus.Stoping;
- that._lastStopOptions = options;
- that._stopOriStatus = oldStatus;
- that._recorder.stop();
- }
-
- }, {
- key: "aiengine_pause",
- value: function aiengine_pause() {
- var that = this;
- console.log("[ChivoxAiEngine] aiengine_pause(), at status: " + that._status);
- if (that._status != ChivoxAiEngineStatus.Recording) {
- if (that._status == ChivoxAiEngineStatus.Paused) {
- return;
- }
-
- return;
- }
- that._recorder.pause();
- }
-
- }, {
- key: "aiengine_resume",
- value: function aiengine_resume() {
- var that = this;
- console.log("[ChivoxAiEngine] aiengine_resume(), at status: " + that._status);
- if (that._status != ChivoxAiEngineStatus.Paused) {
- if (that._status == ChivoxAiEngineStatus.Recording) {
- return;
- }
-
- return;
- }
- that._recorder.resume();
- }
-
- }, {
- key: "aiengine_opt",
- value: function aiengine_opt(key, value) {
- var that = this;
- var allow_opt = ["serverTimeout"];
- if (allow_opt.includes(key) > -1) {
- that["_" + key] = value;
- }
- }
-
- }, {
- key: "aiengine_cancel",
- value: function aiengine_cancel(options) {
- var that = this;
- console.log("[ChivoxAiEngine] aiengine_cancel(), at status: " + that._status);
- if (that._status != ChivoxAiEngineStatus.Ready && that._status != ChivoxAiEngineStatus.Recording && that._status != ChivoxAiEngineStatus.Paused && that._status != ChivoxAiEngineStatus.Stoping && that._status != ChivoxAiEngineStatus.Resulting) {
- if (that._status == ChivoxAiEngineStatus.None) {
- var _err25 = { errId: ChivoxAiErr.NotYetNew,
- error: "[ChivoxAiEngine] you must call 'aiengine_new' first. "
- };
- ChivoxFire.Fail(options, _err25);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Starting) {
- var _err26 = { errId: ChivoxAiErr.WaitStartFinish,
- error: "[ChivoxAiEngine] you must wait 'aiengine_start' completed. "
- };
- ChivoxFire.Fail(options, _err26);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Canceling) {
- var _err27 = { errId: ChivoxAiErr.WaitCancelFinish,
- error: "[ChivoxAiEngine] you must wait 'aiengine_cancel' completed. "
- };
- ChivoxFire.Fail(options, _err27);
- return;
- }
-
- var err = { errId: ChivoxAiErr.EngineStatus,
- error: "[ChivoxAiEngine] engine status error, status: " + that._status + ". "
- };
- ChivoxFire.Fail(options, err);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Ready) {
- ChivoxFire.Success(options);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Recording || that._status == ChivoxAiEngineStatus.Paused) {
- if (that._recorder) {
- var oldStatus = that._status;
- that._status = ChivoxAiEngineStatus.Canceling;
- that._lastCancelOptions = options;
- that._cancelOriStatus = oldStatus;
- that._recorder.stop();
- } else {
- that._wsEngine.reset();
- that._status = ChivoxAiEngineStatus.Ready;
- ChivoxFire.Success(options);
- }
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Stoping) {
- that._lastCancelOptions = options;
- that._cancelOriStatus = that._stopOriStatus;
- that._status = ChivoxAiEngineStatus.Canceling;
- var _err28 = { errId: ChivoxAiErr.OperationCanceled,
- error: "[ChivoxAiEngine] the call of 'aiengine_stop' has be canceled. "
- };
- var lastStopOptions = that._lastStopOptions;
- that._lastStopOptions = undefined;
- that._stopOriStatus = undefined;
- if (typeof lastStopOptions !== "undefined") {
- ChivoxFire.Fail(lastStopOptions, _err28);
- } else {
- console.error("[ChivoxAiEngine] aiengine_cancel: _lastStopOptions undefined");
- }
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Resulting) {
- that._wsEngine.reset();
- that._status = ChivoxAiEngineStatus.Ready;
- ChivoxFire.Success(options);
- return;
- }
- return;
- }
- }, {
- key: "_wsEngineOnResult",
- value: function _wsEngineOnResult() {
- var that = this;
- return function (res) {
- console.log("[ChivoxAiEngine] _wsEngineOnResult(), at status: " + that._status);
- var selfRes = typeof res === "string" ? JSON.parse(res) : res;
- if (that._status != ChivoxAiEngineStatus.Recording && that._status != ChivoxAiEngineStatus.Paused && that._status != ChivoxAiEngineStatus.Stoping && that._status != ChivoxAiEngineStatus.Resulting) {
- console.warn("[ChivoxAiEngine] _wsEngineOnResult: status error, status: " + that._status);
- return;
- }
- if (selfRes instanceof ArrayBuffer) {
- that._status = ChivoxAiEngineStatus.Ready;
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Recording || that._status == ChivoxAiEngineStatus.Paused || that._status == ChivoxAiEngineStatus.Stoping) {
- if (selfRes.eof == 1) {
- console.warn("[ChivoxAiEngine] _wsEngineOnResult: server response result eof=1, but we never send stop!!!");
- }
- ChivoxFire.OnResult(that, res);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Resulting) {
- if (selfRes.eof == 1) {
- that._status = ChivoxAiEngineStatus.Ready;
- }
- ChivoxFire.OnResult(that, res);
- return;
- }
- };
- }
- }, {
- key: "_wsEngineOnErrorResult",
- value: function _wsEngineOnErrorResult() {
- var that = this;
- return function (res) {
- console.log("[ChivoxAiEngine] _wsEngineOnErrorResult(), at status: " + that._status);
- if (that._status != ChivoxAiEngineStatus.Recording && that._status != ChivoxAiEngineStatus.Paused && that._status != ChivoxAiEngineStatus.Stoping && that._status != ChivoxAiEngineStatus.Resulting) {
- console.warn("[ChivoxAiEngine] _wsEngineOnErrorResult: status error, status: " + that._status);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Recording || that._status == ChivoxAiEngineStatus.Paused || that._status == ChivoxAiEngineStatus.Stoping) {
- ChivoxFire.OnErrorResult(that, res);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Resulting) {
- that._status = ChivoxAiEngineStatus.Ready;
- ChivoxFire.OnErrorResult(that, res);
- return;
- }
- };
- }
- }, {
- key: "_recorderBind",
- value: function _recorderBind() {
- var that = this;
- if (this._recorder) {
- this._recorderUnbind();
- }
- this._recorder = wx.getRecorderManager();
- this._recorder.onStart(that._recorderOnStart());
- this._recorder.onPause(that._recorderOnPause());
- this._recorder.onStop(that._recorderOnStop());
- this._recorder.onError(that._recorderOnError());
- this._recorder.onFrameRecorded(that._recorderOnFrame());
- }
- }, {
- key: "_recorderUnbind",
- value: function _recorderUnbind() {
- if (this._recorder) {
- this._recorder.onStart(null);
- this._recorder.onPause(null);
- this._recorder.onStop(null);
- this._recorder.onError(null);
- this._recorder.onFrameRecorded(null);
- this._recorder = null;
- }
- }
- }, {
- key: "_recorderOnStart",
- value: function _recorderOnStart() {
- var that = this;
- return function (res) {
- console.log("[ChivoxAiEngine] _recorderOnStart(), at status: " + that._status);
- if (that._status != ChivoxAiEngineStatus.Paused && that._status != ChivoxAiEngineStatus.Starting) {
- that._status = ChivoxAiEngineStatus.Recording;
- console.error("[ChivoxAiEngine] _recorderOnStart: status error, status: " + that._status);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Paused) {
-
- that._status = ChivoxAiEngineStatus.Recording;
- ChivoxFire.OnRecorderResume(that, res);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Starting) {
-
- that._status = ChivoxAiEngineStatus.Recording;
- that._msgQueue = [];
- that._allAudioFrames = [];
- var lastStartOptions = that._lastStartOptions;
- that._lastStartOptions = undefined;
- if (typeof lastStartOptions === "undefined") {
- console.error("[ChivoxAiEngine] _recorderOnStart: _lastStartOptions undefined");
- return;
- }
- var tokenId = ChivoxUtils.generateGuid().replace(/-/g, "");
-
- var sysInfo = wx.getSystemInfoSync();
- var audio = {
- audioType: "mp3",
- channel: 1,
- sampleBytes: 2,
- sampleRate: 16000
- };
- if (sysInfo.platform === "devtools") {
- audio.audioType = "opus";
- }
- if (_typeof(lastStartOptions.audio) === "object" && typeof lastStartOptions.audio.sampleRate === "number") {
- audio.sampleRate = lastStartOptions.audio.sampleRate;
- }
-
- that._wsEngine.start({
- tokenId: tokenId,
- request: lastStartOptions.request,
- audio: audio,
- app: lastStartOptions.app,
- tcpNoDelay: lastStartOptions.tcpNoDelay,
- originalResult: lastStartOptions.originalResult,
- fail: function fail(res) {
- console.log("[ChivoxAiEngine] wsEngine start fail! " + JSON.stringify(res));
- that._wsEngine.reset();
- ChivoxFire.OnErrorResult(that, res);
- }, success: function success(res) {
- console.log("[ChivoxAiEngine] wsEngine start success!");
- that.__msgIterate();
- }
- });
- ChivoxFire.Success(lastStartOptions, { tokenId: tokenId });
- ChivoxFire.OnRecorderStart(that);
- }
- };
- }
- }, {
- key: "_recorderOnPause",
- value: function _recorderOnPause() {
- var that = this;
- return function (res) {
- console.log("[ChivoxAiEngine] _recorderOnPause(), at status: " + that._status);
- if (that._status != ChivoxAiEngineStatus.Recording) {
- that._status = ChivoxAiEngineStatus.Paused;
- console.error("[ChivoxAiEngine] _recorderOnPause: status error, status: " + that._status);
- return;
- }
- that._status = ChivoxAiEngineStatus.Paused;
- ChivoxFire.OnRecorderPause(that, res);
- };
- }
- }, {
- key: "_recorderOnStop",
- value: function _recorderOnStop() {
- var that = this;
- return function (res) {
- console.log("[ChivoxAiEngine] _recorderOnStop(), at status: " + that._status);
- that._recorderUnbind();
- if (that._status != ChivoxAiEngineStatus.Recording && that._status != ChivoxAiEngineStatus.Paused && that._status != ChivoxAiEngineStatus.Stoping && that._status != ChivoxAiEngineStatus.Canceling) {
- console.error("[ChivoxAiEngine] _recorderOnStop: status error, status: " + that._status);
- that._wsEngine.reset();
- that._status = ChivoxAiEngineStatus.Ready;
- ChivoxFire.OnRecorderStop(that, {
- waitingResult: false,
- tempFilePath: res.tempFilePath
- });
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Recording || that._status == ChivoxAiEngineStatus.Paused) {
-
- that._status = ChivoxAiEngineStatus.Resulting;
- if (typeof that._msgQueue !== "undefined") {
- that._msgQueue.push({ cmd: "stop" });
- setTimeout(function () {
- that.__msgIterate();
- }, 1);
- }
- ChivoxFire.OnRecorderStop(that, {
- waitingResult: true,
- tempFilePath: res.tempFilePath
- });
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Stoping) {
-
- that._status = ChivoxAiEngineStatus.Resulting;
- if (typeof that._msgQueue !== "undefined") {
- that._msgQueue.push({ cmd: "stop" });
- setTimeout(function () {
- that.__msgIterate();
- }, 1);
- }
- var lastStopOptions = that._lastStopOptions;
- that._lastStopOptions = undefined;
- that._stopOriStatus = undefined;
- if (typeof lastStopOptions !== "undefined") {
- ChivoxFire.Success(lastStopOptions);
- } else {
- console.error("[ChivoxAiEngine] _recorderOnStop: _lastStopOptions undefined");
- }
- ChivoxFire.OnRecorderStop(that, {
- waitingResult: true,
- tempFilePath: res.tempFilePath
- });
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Canceling) {
-
- that._wsEngine.reset();
- that._status = ChivoxAiEngineStatus.Ready;
- var lastCancelOptions = that._lastCancelOptions;
- that._lastCancelOptions = undefined;
- that._cancelOriStatus = undefined;
- if (typeof lastCancelOptions !== "undefined") {
- ChivoxFire.Success(lastCancelOptions);
- } else {
- console.error("[ChivoxAiEngine] _recorderOnStop: _lastCancelOptions undefined");
- }
- ChivoxFire.OnRecorderStop(that, {
- waitingResult: false,
- tempFilePath: res.tempFilePath
- });
- return;
- }
- };
- }
- }, {
- key: "_recorderOnError",
- value: function _recorderOnError() {
- var that = this;
- return function (res) {
- console.log("[ChivoxAiEngine] _recorderOnError(), errMsg: " + res.errMsg);
- that._recorderUnbind();
- if (that._status != ChivoxAiEngineStatus.Starting && that._status != ChivoxAiEngineStatus.Recording && that._status != ChivoxAiEngineStatus.Paused && that._status != ChivoxAiEngineStatus.Stoping && that._status != ChivoxAiEngineStatus.Canceling) {
- var err = { errId: ChivoxAiErr.WxRecorderError,
- error: "[ChivoxAiEngine] recorder error at status(" + that._status + "), errMsg(" + res.errMsg + "). "
- };
- ChivoxFire.OnRecorderError(that, err);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Starting) {
-
- that._status = ChivoxAiEngineStatus.Ready;
- var _err29 = { errId: ChivoxAiErr.StartRecorderFail,
- error: "[ChivoxAiEngine] start recorder fail, errMsg(" + res.errMsg + "). "
- };
- var lastStartOptions = that._lastStartOptions;
- that._lastStartOptions = undefined;
- if (typeof lastStartOptions !== "undefined") {
- ChivoxFire.Fail(lastStartOptions, _err29);
- } else {
- console.error("[ChivoxAiEngine] _recorderOnError: _lastStartOptions undefined");
- }
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Recording || that._status == ChivoxAiEngineStatus.Paused) {
-
- var _err30 = { errId: ChivoxAiErr.WxRecorderError,
- error: "[ChivoxAiEngine] recorder error at status(" + that._status + "), errMsg(" + res.errMsg + "). "
- };
- ChivoxFire.OnRecorderError(that, _err30);
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Stoping) {
-
- that._status = that._stopOriStatus;
- var _err31 = { errId: ChivoxAiErr.StopRecorderFail,
- error: "[ChivoxAiEngine] recorder stop fail, errMsg(" + res.errMsg + "). "
- };
- var lastStopOptions = that._lastStopOptions;
- that._lastStopOptions = undefined;
- that._stopOriStatus = undefined;
- if (typeof lastStopOptions !== "undefined") {
- ChivoxFire.Fail(lastStopOptions, _err31);
- } else {
- console.error("[ChivoxAiEngine] _recorderOnError: _lastStopOptions undefined");
- }
- return;
- }
- if (that._status == ChivoxAiEngineStatus.Canceling) {
-
- that._status = that._cancelOriStatus;
- var _err32 = { errId: ChivoxAiErr.CancelRecorderFail,
- error: "[ChivoxAiEngine] recorder cancel fail, errMsg(" + res.errMsg + "). "
- };
- var lastCancelOptions = that._lastCancelOptions;
- that._lastCancelOptions = undefined;
- that._cancelOriStatus = undefined;
- if (typeof lastCancelOptions !== "undefined") {
- ChivoxFire.Fail(lastCancelOptions, _err32);
- } else {
- console.error("[ChivoxAiEngine] _recorderOnError: _lastCancelOptions undefined");
- }
- return;
- }
- };
- }
- }, {
- key: "_recorderOnFrame",
- value: function _recorderOnFrame() {
- var that = this;
- return function (res) {
- console.log("[ChivoxAiEngine] _recorderOnFrame(), at status: " + that._status);
- ChivoxFire.OnRecorderFrame(that, res);
- if ((typeof res === "undefined" ? "undefined" : _typeof(res)) !== "object") {
- console.warn("[ChivoxAiEngine] _recorderOnFrame: res not object");
- return;
- }
- if (null == res.frameBuffer) {
- console.warn("[ChivoxAiEngine] _recorderOnFrame: res.frameBuffer is null");
- return;
- }
- if (res.frameBuffer.byteLength <= 0) {
- console.warn("[ChivoxAiEngine] _recorderOnFrame: res.frameBuffer is empty");
- return;
- }
- console.debug("[ChivoxAiEngine] isLastFrame: " + res.isLastFrame + ", frameSize: ====== " + res.frameBuffer.byteLength);
- if (typeof that._allAudioFrames !== "undefined") {
- that._allAudioFrames.push(res.frameBuffer);
- }
- if (that._status != ChivoxAiEngineStatus.Recording && that._status != ChivoxAiEngineStatus.Paused && that._status != ChivoxAiEngineStatus.Stoping && that._status != ChivoxAiEngineStatus.Canceling) {
- console.error("[ChivoxAiEngine] _recorderOnFrame: status error, status = " + that._status);
- return;
- }
- if (typeof that._msgQueue !== "undefined") {
- that._msgQueue.push({
- cmd: 'feed', data: res.frameBuffer
- });
- that.__msgIterate();
- }
- };
- }
-
- }, {
- key: "__msgIterate",
- value: function __msgIterate() {
- var that = this;
- console.debug("[ChivoxAiEngine] __msgIterate()");
- if (that._status == ChivoxAiEngineStatus.Canceling) {
- console.debug("[ChivoxAiEngine] __msgIterate: end for Canceling");
- return;
- }
-
- if (typeof that._msgQueue === "undefined") {
- console.debug("[ChivoxAiEngine] __msgIterate: end for _msgQueue undefined");
- return;
- }
- if (that._msgQueue.length === 0) {
- console.debug("[ChivoxAiEngine] __msgIterate: end for _msgQueue empty");
- return;
- }
-
- if (!that._wsEngine.isStarted()) {
- return;
- }
-
-
- var msg = that._msgQueue[0];
- that._msgQueue.splice(0, 1);
- if (msg.cmd == "feed") {
- that._wsEngine.feed({
- data: msg.data,
- fail: function fail(res) {
- console.warn("[ChivoxAiEngine] feed fail! " + JSON.stringify(res));
- that._wsEngine.reset();
- ChivoxFire.OnErrorResult(that, res);
- }, success: function success() {}, complete: function complete() {
- setTimeout(function () {
- that.__msgIterate();
- }, 10);
- }
- });
- return;
- } else if (msg.cmd == "stop") {
- that._wsEngine.stop({
-
- timeout: that._serverTimeout,
- fail: function fail(res) {
- console.warn("[ChivoxAiEngine] stop fail! " + JSON.stringify(res));
- that._wsEngine.reset();
- ChivoxFire.OnErrorResult(that, res);
- }, success: function success() {}, complete: function complete() {
- setTimeout(function () {
- that.__msgIterate();
- }, 10);
- }
- });
- return;
- } else {
- console.error("[ChivoxAiEngine] __msgIterate: invalid msg.cmd = " + msg.cmd);
- }
- }
- }]);
- return ChivoxAiEngine;
- }();
- var aiengine = new ChivoxAiEngine();
- module.exports = aiengine;
|