Built motion from commit 753c950e.|2.5.42
[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 _0x8668=['open','message','bluebird','crypto','../../../../../../config/logger','agi','info','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','update','digest','hex','unix','stringify','createReadStream','data','send','close','EOS','error','terminate','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','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','Error\x20Tilde\x20ASR\x20socket','isObject'];(function(_0x4bcfa6,_0x1c7e43){var _0x1c0165=function(_0x30c963){while(--_0x30c963){_0x4bcfa6['push'](_0x4bcfa6['shift']());}};_0x1c0165(++_0x1c7e43);}(_0x8668,0x74));var _0x8866=function(_0x2a4eeb,_0xd50b87){_0x2a4eeb=_0x2a4eeb-0x0;var _0x297132=_0x8668[_0x2a4eeb];return _0x297132;};'use strict';var BPromise=require(_0x8866('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require(_0x8866('0x1'));var logger=require(_0x8866('0x2'))(_0x8866('0x3'));module['exports']=function(_0x8f8144,_0xc2e4b7,_0x18de52,_0x1dbd18){return new BPromise(function(_0x4161d4,_0x56e9cb){logger[_0x8866('0x4')]('Tilde\x20URI',_0x1dbd18||_0x8866('0x5'));var _0x1c524e=new WebSocket(_0x1dbd18||_0x8866('0x5'),{'perMessageDeflate':![]});var _0x31fceb='';var _0x42a79c='0';var _0x1e6aa3='1';var _0x57373b='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x1b7921(_0x50f68b){var _0x2d7abe=crypto[_0x8866('0x6')](_0x8866('0x7'));_0x2d7abe[_0x8866('0x8')](_0x50f68b);return _0x2d7abe[_0x8866('0x9')](_0x8866('0xa'));}function _0x46d5bd(){try{logger[_0x8866('0x4')]('Open\x20Tilde\x20ASR\x20socket');var _0x3b6399=moment()[_0x8866('0xb')]();var _0x5b21d8=_0x1b7921(_0x3b6399+_0xc2e4b7+_0x18de52);_0x1c524e['send'](JSON[_0x8866('0xc')]({'appID':_0xc2e4b7,'timestamp':_0x3b6399,'appKey':_0x5b21d8}));var _0x162fe4=fs[_0x8866('0xd')](_0x8f8144);_0x162fe4['on'](_0x8866('0xe'),function(_0x15c772){_0x1c524e[_0x8866('0xf')](_0x15c772);});_0x162fe4['on'](_0x8866('0x10'),function(){_0x1c524e[_0x8866('0xf')](_0x8866('0x11'));});}catch(_0x5ceceb){logger[_0x8866('0x12')]('Tilde\x20ASR\x20send\x20error',JSON['stringify'](_0x5ceceb));_0x1c524e[_0x8866('0x13')]();}}function _0x14847a(_0x4353b2){try{if(_0x4353b2){var _0x49a81e=JSON['parse'](_0x4353b2);switch(_0x49a81e[_0x8866('0x14')]){case 0x0:if(_0x49a81e[_0x8866('0x15')]){if(_0x49a81e[_0x8866('0x15')][_0x8866('0x16')]){logger[_0x8866('0x4')](_0x8866('0x17'),JSON[_0x8866('0xc')](_0x49a81e['result']['hypotheses']));_0x31fceb=_0x49a81e[_0x8866('0x15')][_0x8866('0x18')][0x0][_0x8866('0x19')];_0x42a79c=_0x49a81e[_0x8866('0x15')][_0x8866('0x18')][0x0][_0x8866('0x1a')];_0x1e6aa3='0';_0x57373b=_0x8866('0x1b');_0x1c524e[_0x8866('0x13')]();}}break;case 0x1:logger[_0x8866('0x4')](_0x8866('0x1c'));_0x1e6aa3='1';_0x57373b=_0x8866('0x1c');break;case 0x2:logger[_0x8866('0x4')](_0x8866('0x1d'));_0x1e6aa3='2';_0x57373b=_0x8866('0x1d');break;case 0x9:logger[_0x8866('0x4')](_0x8866('0x1e'));_0x1e6aa3='9';_0x57373b='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger['info'](_0x8866('0x1f'));_0x1e6aa3='10';_0x57373b=_0x8866('0x1f');break;case 0xb:logger[_0x8866('0x4')](_0x8866('0x20'));_0x1e6aa3='11';_0x57373b=_0x8866('0x20');}}}catch(_0xe9091b){logger[_0x8866('0x12')]('Tilde\x20ASR\x20parse\x20error',JSON[_0x8866('0xc')](_0xe9091b));_0x1c524e[_0x8866('0x13')]();}}function _0x60f5e2(){logger['info'](_0x8866('0x21'));_0x4161d4({'transcript':_0x31fceb,'confidence':_0x42a79c,'status':_0x1e6aa3,'status_message':_0x57373b});}function _0x6d61be(_0x2ebc16){logger[_0x8866('0x12')](_0x8866('0x22'));if(!_['isNil'](_0x2ebc16)){logger['error'](_[_0x8866('0x23')](_0x2ebc16)?JSON['stringify'](_0x2ebc16):_0x2ebc16);}}_0x1c524e['on'](_0x8866('0x24'),_0x46d5bd);_0x1c524e['on'](_0x8866('0x25'),_0x14847a);_0x1c524e['on'](_0x8866('0x10'),_0x60f5e2);_0x1c524e['on'](_0x8866('0x12'),_0x6d61be);});};