cd30f348ddea22cfa54ab907cbc45086a3422203
[motion2.git] / server / services / agi / scripts / tilde / asr / lib / api.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x327e=['No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','hex','Open\x20Tilde\x20ASR\x20socket','data','send','EOS','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','stringify','hypotheses','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','error','Error\x20Tilde\x20ASR\x20socket','isNil','open','message','moment','crypto','../../../../../../config/logger','agi','exports','info','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0x327e,0x1b5));var _0xe327=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x327e[_0x20a584];return _0x4b41a8;};'use strict';var BPromise=require('bluebird');var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xe327('0x0'));var crypto=require(_0xe327('0x1'));var logger=require(_0xe327('0x2'))(_0xe327('0x3'));module[_0xe327('0x4')]=function(_0x40e95c,_0x13d3af,_0x1b2c78,_0x25adb7){return new BPromise(function(_0x1269f9,_0x3ea6a9){logger[_0xe327('0x5')]('Tilde\x20URI',_0x25adb7||_0xe327('0x6'));var _0x4a0478=new WebSocket(_0x25adb7||_0xe327('0x6'),{'perMessageDeflate':![]});var _0x3a9b41='';var _0x2edb08='0';var _0x3bd1ad='1';var _0x4f3239=_0xe327('0x7');function _0x1ffb9f(_0x27e497){var _0x17f07b=crypto[_0xe327('0x8')](_0xe327('0x9'));_0x17f07b[_0xe327('0xa')](_0x27e497);return _0x17f07b['digest'](_0xe327('0xb'));}function _0x1e56cd(){try{logger[_0xe327('0x5')](_0xe327('0xc'));var _0x21e92a=moment()['unix']();var _0x207897=_0x1ffb9f(_0x21e92a+_0x13d3af+_0x1b2c78);_0x4a0478['send'](JSON['stringify']({'appID':_0x13d3af,'timestamp':_0x21e92a,'appKey':_0x207897}));var _0x4858a7=fs['createReadStream'](_0x40e95c);_0x4858a7['on'](_0xe327('0xd'),function(_0x1378b3){_0x4a0478[_0xe327('0xe')](_0x1378b3);});_0x4858a7['on']('close',function(){_0x4a0478['send'](_0xe327('0xf'));});}catch(_0x43c3c5){logger['error'](_0xe327('0x10'),JSON['stringify'](_0x43c3c5));_0x4a0478[_0xe327('0x11')]();}}function _0x42a274(_0x828d4b){try{if(_0x828d4b){var _0x129522=JSON[_0xe327('0x12')](_0x828d4b);switch(_0x129522[_0xe327('0x13')]){case 0x0:if(_0x129522[_0xe327('0x14')]){if(_0x129522['result'][_0xe327('0x15')]){logger[_0xe327('0x5')](_0xe327('0x16'),JSON[_0xe327('0x17')](_0x129522['result'][_0xe327('0x18')]));_0x3a9b41=_0x129522[_0xe327('0x14')][_0xe327('0x18')][0x0]['transcript'];_0x2edb08=_0x129522[_0xe327('0x14')][_0xe327('0x18')][0x0]['likelihood'];_0x3bd1ad='0';_0x4f3239=_0xe327('0x19');_0x4a0478['terminate']();}}break;case 0x1:logger['info'](_0xe327('0x7'));_0x3bd1ad='1';_0x4f3239=_0xe327('0x7');break;case 0x2:logger[_0xe327('0x5')](_0xe327('0x1a'));_0x3bd1ad='2';_0x4f3239=_0xe327('0x1a');break;case 0x9:logger['info']('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x3bd1ad='9';_0x4f3239=_0xe327('0x1b');break;case 0xa:logger['info'](_0xe327('0x1c'));_0x3bd1ad='10';_0x4f3239=_0xe327('0x1c');break;case 0xb:logger['info'](_0xe327('0x1d'));_0x3bd1ad='11';_0x4f3239=_0xe327('0x1d');}}}catch(_0x216c54){logger['error'](_0xe327('0x1e'),JSON[_0xe327('0x17')](_0x216c54));_0x4a0478['terminate']();}}function _0x4642bd(){logger['info'](_0xe327('0x1f'));_0x1269f9({'transcript':_0x3a9b41,'confidence':_0x2edb08,'status':_0x3bd1ad,'status_message':_0x4f3239});}function _0x19937b(_0x3ccaad){logger[_0xe327('0x20')](_0xe327('0x21'));if(!_[_0xe327('0x22')](_0x3ccaad)){logger[_0xe327('0x20')](_['isObject'](_0x3ccaad)?JSON[_0xe327('0x17')](_0x3ccaad):_0x3ccaad);}}_0x4a0478['on'](_0xe327('0x23'),_0x1e56cd);_0x4a0478['on'](_0xe327('0x24'),_0x42a274);_0x4a0478['on']('close',_0x4642bd);_0x4a0478['on'](_0xe327('0x20'),_0x19937b);});};