7b7e5d62394e07b9343695e690c8eb57c7aea968
[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 _0x9213=['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.','Close\x20Tilde\x20ASR\x20socket','isObject','open','bluebird','lodash','moment','../../../../../../config/logger','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','sha1','update','digest','hex','send','stringify','createReadStream','data','close','error','Tilde\x20ASR\x20send\x20error','parse','status','result','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood'];(function(_0x181fb8,_0x415dc8){var _0x3e7ba8=function(_0x3457c6){while(--_0x3457c6){_0x181fb8['push'](_0x181fb8['shift']());}};_0x3e7ba8(++_0x415dc8);}(_0x9213,0x9a));var _0x3921=function(_0x411e71,_0xf9652){_0x411e71=_0x411e71-0x0;var _0x226ae3=_0x9213[_0x411e71];return _0x226ae3;};'use strict';var BPromise=require(_0x3921('0x0'));var _=require(_0x3921('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x3921('0x2'));var crypto=require('crypto');var logger=require(_0x3921('0x3'))('agi');module[_0x3921('0x4')]=function(_0x5d1afc,_0x4e5a99,_0x4873b0,_0x1994a8){return new BPromise(function(_0x2bf3a9,_0xfbf8f){logger[_0x3921('0x5')](_0x3921('0x6'),_0x1994a8||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x3af882=new WebSocket(_0x1994a8||_0x3921('0x7'),{'perMessageDeflate':![]});var _0x4bde9c='';var _0x17f9ed='0';var _0x4f49a6='1';var _0x43fad9='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x348ee8(_0x37075f){var _0x52a2ca=crypto['createHash'](_0x3921('0x8'));_0x52a2ca[_0x3921('0x9')](_0x37075f);return _0x52a2ca[_0x3921('0xa')](_0x3921('0xb'));}function _0x3af427(){try{logger[_0x3921('0x5')]('Open\x20Tilde\x20ASR\x20socket');var _0xa80802=moment()['unix']();var _0x573445=_0x348ee8(_0xa80802+_0x4e5a99+_0x4873b0);_0x3af882[_0x3921('0xc')](JSON[_0x3921('0xd')]({'appID':_0x4e5a99,'timestamp':_0xa80802,'appKey':_0x573445}));var _0x4ee524=fs[_0x3921('0xe')](_0x5d1afc);_0x4ee524['on'](_0x3921('0xf'),function(_0x9701c1){_0x3af882[_0x3921('0xc')](_0x9701c1);});_0x4ee524['on'](_0x3921('0x10'),function(){_0x3af882[_0x3921('0xc')]('EOS');});}catch(_0xf5d98c){logger[_0x3921('0x11')](_0x3921('0x12'),JSON[_0x3921('0xd')](_0xf5d98c));_0x3af882['terminate']();}}function _0xd7fd68(_0x5a49a6){try{if(_0x5a49a6){var _0x2eac44=JSON[_0x3921('0x13')](_0x5a49a6);switch(_0x2eac44[_0x3921('0x14')]){case 0x0:if(_0x2eac44[_0x3921('0x15')]){if(_0x2eac44[_0x3921('0x15')]['final']){logger[_0x3921('0x5')](_0x3921('0x16'),JSON['stringify'](_0x2eac44['result'][_0x3921('0x17')]));_0x4bde9c=_0x2eac44[_0x3921('0x15')][_0x3921('0x17')][0x0][_0x3921('0x18')];_0x17f9ed=_0x2eac44['result'][_0x3921('0x17')][0x0][_0x3921('0x19')];_0x4f49a6='0';_0x43fad9=_0x3921('0x1a');_0x3af882[_0x3921('0x1b')]();}}break;case 0x1:logger[_0x3921('0x5')](_0x3921('0x1c'));_0x4f49a6='1';_0x43fad9=_0x3921('0x1c');break;case 0x2:logger[_0x3921('0x5')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x4f49a6='2';_0x43fad9=_0x3921('0x1d');break;case 0x9:logger[_0x3921('0x5')](_0x3921('0x1e'));_0x4f49a6='9';_0x43fad9=_0x3921('0x1e');break;case 0xa:logger[_0x3921('0x5')](_0x3921('0x1f'));_0x4f49a6='10';_0x43fad9=_0x3921('0x1f');break;case 0xb:logger[_0x3921('0x5')](_0x3921('0x20'));_0x4f49a6='11';_0x43fad9=_0x3921('0x20');}}}catch(_0xdabb63){logger[_0x3921('0x11')]('Tilde\x20ASR\x20parse\x20error',JSON[_0x3921('0xd')](_0xdabb63));_0x3af882[_0x3921('0x1b')]();}}function _0x1c84f3(){logger[_0x3921('0x5')](_0x3921('0x21'));_0x2bf3a9({'transcript':_0x4bde9c,'confidence':_0x17f9ed,'status':_0x4f49a6,'status_message':_0x43fad9});}function _0x2adf51(_0x2683da){logger[_0x3921('0x11')]('Error\x20Tilde\x20ASR\x20socket');if(!_['isNil'](_0x2683da)){logger[_0x3921('0x11')](_[_0x3921('0x22')](_0x2683da)?JSON[_0x3921('0xd')](_0x2683da):_0x2683da);}}_0x3af882['on'](_0x3921('0x23'),_0x3af427);_0x3af882['on']('message',_0xd7fd68);_0x3af882['on']('close',_0x1c84f3);_0x3af882['on'](_0x3921('0x11'),_0x2adf51);});};