95c104dd021e5ccc638cc3d88120dcc6cc2fd6c2
[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 _0x5fb2=['message','lodash','moment','crypto','../../../../../../config/logger','agi','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','update','digest','hex','send','stringify','createReadStream','close','EOS','Tilde\x20ASR\x20send\x20error','parse','status','final','Tilde\x20ASR\x20hypoteses','result','hypotheses','transcript','Success.','terminate','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','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.','error','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isObject','open'];(function(_0x5407a5,_0x536929){var _0x5c0070=function(_0x3b89ec){while(--_0x3b89ec){_0x5407a5['push'](_0x5407a5['shift']());}};_0x5c0070(++_0x536929);}(_0x5fb2,0x1e1));var _0x25fb=function(_0xf97eb0,_0x1578b7){_0xf97eb0=_0xf97eb0-0x0;var _0xea70f4=_0x5fb2[_0xf97eb0];return _0xea70f4;};'use strict';var BPromise=require('bluebird');var _=require(_0x25fb('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x25fb('0x1'));var crypto=require(_0x25fb('0x2'));var logger=require(_0x25fb('0x3'))(_0x25fb('0x4'));module['exports']=function(_0x5d8a72,_0x401e7c,_0x419dab,_0x2dbd7f){return new BPromise(function(_0x49aac9,_0x2d4239){logger[_0x25fb('0x5')](_0x25fb('0x6'),_0x2dbd7f||_0x25fb('0x7'));var _0x3ed6c4=new WebSocket(_0x2dbd7f||_0x25fb('0x7'),{'perMessageDeflate':![]});var _0x26d956='';var _0x4d7034='0';var _0x3c5906='1';var _0x45834c='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x1d5910(_0x363cc0){var _0x586e9e=crypto[_0x25fb('0x8')](_0x25fb('0x9'));_0x586e9e[_0x25fb('0xa')](_0x363cc0);return _0x586e9e[_0x25fb('0xb')](_0x25fb('0xc'));}function _0x2af6d1(){try{logger[_0x25fb('0x5')]('Open\x20Tilde\x20ASR\x20socket');var _0x287c52=moment()['unix']();var _0x1ac849=_0x1d5910(_0x287c52+_0x401e7c+_0x419dab);_0x3ed6c4[_0x25fb('0xd')](JSON[_0x25fb('0xe')]({'appID':_0x401e7c,'timestamp':_0x287c52,'appKey':_0x1ac849}));var _0x5266be=fs[_0x25fb('0xf')](_0x5d8a72);_0x5266be['on']('data',function(_0x4be947){_0x3ed6c4[_0x25fb('0xd')](_0x4be947);});_0x5266be['on'](_0x25fb('0x10'),function(){_0x3ed6c4[_0x25fb('0xd')](_0x25fb('0x11'));});}catch(_0x541509){logger['error'](_0x25fb('0x12'),JSON[_0x25fb('0xe')](_0x541509));_0x3ed6c4['terminate']();}}function _0x11a589(_0x32229f){try{if(_0x32229f){var _0x1d9bad=JSON[_0x25fb('0x13')](_0x32229f);switch(_0x1d9bad[_0x25fb('0x14')]){case 0x0:if(_0x1d9bad['result']){if(_0x1d9bad['result'][_0x25fb('0x15')]){logger['info'](_0x25fb('0x16'),JSON[_0x25fb('0xe')](_0x1d9bad[_0x25fb('0x17')][_0x25fb('0x18')]));_0x26d956=_0x1d9bad[_0x25fb('0x17')]['hypotheses'][0x0][_0x25fb('0x19')];_0x4d7034=_0x1d9bad[_0x25fb('0x17')][_0x25fb('0x18')][0x0]['likelihood'];_0x3c5906='0';_0x45834c=_0x25fb('0x1a');_0x3ed6c4[_0x25fb('0x1b')]();}}break;case 0x1:logger[_0x25fb('0x5')](_0x25fb('0x1c'));_0x3c5906='1';_0x45834c='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0x25fb('0x5')](_0x25fb('0x1d'));_0x3c5906='2';_0x45834c='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x25fb('0x5')](_0x25fb('0x1e'));_0x3c5906='9';_0x45834c=_0x25fb('0x1e');break;case 0xa:logger[_0x25fb('0x5')](_0x25fb('0x1f'));_0x3c5906='10';_0x45834c='Authentication\x20failed.';break;case 0xb:logger[_0x25fb('0x5')](_0x25fb('0x20'));_0x3c5906='11';_0x45834c='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x2e272c){logger[_0x25fb('0x21')](_0x25fb('0x22'),JSON['stringify'](_0x2e272c));_0x3ed6c4[_0x25fb('0x1b')]();}}function _0x15d6d1(){logger[_0x25fb('0x5')](_0x25fb('0x23'));_0x49aac9({'transcript':_0x26d956,'confidence':_0x4d7034,'status':_0x3c5906,'status_message':_0x45834c});}function _0x1beec9(_0x542362){logger[_0x25fb('0x21')](_0x25fb('0x24'));if(!_['isNil'](_0x542362)){logger[_0x25fb('0x21')](_[_0x25fb('0x25')](_0x542362)?JSON[_0x25fb('0xe')](_0x542362):_0x542362);}}_0x3ed6c4['on'](_0x25fb('0x26'),_0x2af6d1);_0x3ed6c4['on'](_0x25fb('0x27'),_0x11a589);_0x3ed6c4['on'](_0x25fb('0x10'),_0x15d6d1);_0x3ed6c4['on'](_0x25fb('0x21'),_0x1beec9);});};