49310ae07d52a62ae6040b821fd5cb290b69d758
[motion2.git] / server / services / agi / scripts / index.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 _0x5579=['score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','languageCode','intentDetectionConfidence','Tilde\x20ASR\x20transcription','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s','freeform=3','sestekNDA','text','channelData','CustomAction','CustomActionData','audiofile','dirName','bluebird','https','md5','querystring','request-promise','randomstring','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','protocol','https:','host','path','WHAT_EVER','get','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','createWriteStream','finish\x20download\x20file','unlink','download\x20error','pipe','end','error\x20convert','info','start','resolve','tmp','generate','base64','then','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','voice','MP3','text:synthesize','POST','.mp3','audioContent','writeFile','.wav','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','data','length','text\x20length\x20limit\x20reached','lang\x20\x22','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech'];(function(_0xe70ed5,_0x404aab){var _0x515cd9=function(_0x33a3d7){while(--_0x33a3d7){_0xe70ed5['push'](_0xe70ed5['shift']());}};_0x515cd9(++_0x404aab);}(_0x5579,0x137));var _0x9557=function(_0x35a739,_0x127630){_0x35a739=_0x35a739-0x0;var _0x207685=_0x5579[_0x35a739];return _0x207685;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x9557('0x0'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require(_0x9557('0x1'));var md5=require(_0x9557('0x2'));var path=require('path');var querystring=require(_0x9557('0x3'));var rp=require(_0x9557('0x4'));var rs=require(_0x9557('0x5'));var sox=require('sox');var tts=require(_0x9557('0x6'));var urlParse=require(_0x9557('0x7'))[_0x9557('0x8')];var util=require(_0x9557('0x9'));var aws=require(_0x9557('0xa'));var google=require(_0x9557('0xb'));var sestek=require(_0x9557('0xc'));var tilde=require(_0x9557('0xd'));var logger=require(_0x9557('0xe'))(_0x9557('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x191bc9,_0x4094e6){return new BPromise(function(_0x2fa785,_0x5878b4){var _0x988bd9=urlParse(_0x191bc9);var _0x57012f=_0x988bd9[_0x9557('0x10')]===_0x9557('0x11')?https:http;var _0x3c1457={'host':_0x988bd9[_0x9557('0x12')],'path':_0x988bd9[_0x9557('0x13')],'headers':{'user-agent':_0x9557('0x14')}};_0x57012f[_0x9557('0x15')](_0x3c1457,function(_0x5667bb){if(_0x5667bb['statusCode']!==0xc8){logger[_0x9557('0x16')](_0x9557('0x17')+_0x191bc9+_0x9557('0x18')+_0x5667bb[_0x9557('0x19')]+'\x20('+_0x5667bb[_0x9557('0x1a')]+')');_0x5878b4(new Error(_0x9557('0x17')+_0x191bc9+'\x20failed,\x20status\x20code\x20=\x20'+_0x5667bb[_0x9557('0x19')]+'\x20('+_0x5667bb['statusMessage']+')'));return;}var _0x3ea421=fs[_0x9557('0x1b')](_0x4094e6);_0x3ea421['on']('finish',function(){logger['info'](_0x9557('0x1c'));_0x3ea421['close'](_0x2fa785);});_0x3ea421['on'](_0x9557('0x16'),function(_0x128ade){fs[_0x9557('0x1d')](_0x4094e6);logger[_0x9557('0x16')](_0x9557('0x1e'),_0x128ade);_0x5878b4(_0x128ade);});_0x5667bb[_0x9557('0x1f')](_0x3ea421);})['on'](_0x9557('0x16'),function(_0x22447e){logger[_0x9557('0x16')](_0x22447e);_0x5878b4(_0x22447e);})['end']();});}function uploadFile(_0x2dbd78){return new BPromise(function(_0x4d008c,_0x36846b){var _0x368094=urlParse(_0x2dbd78);var _0x412704=_0x368094[_0x9557('0x10')]===_0x9557('0x11')?https:http;var _0x1228b8={'host':_0x368094['host'],'path':_0x368094[_0x9557('0x13')],'headers':{'user-agent':_0x9557('0x14')}};_0x412704[_0x9557('0x15')](_0x1228b8,function(_0x4ad431){if(_0x4ad431['statusCode']!==0xc8){_0x36846b(new Error(_0x9557('0x17')+_0x2dbd78+'\x20failed,\x20status\x20code\x20=\x20'+_0x4ad431[_0x9557('0x19')]+'\x20('+_0x4ad431[_0x9557('0x1a')]+')'));return;}var _0x585a9f='';_0x4ad431['on']('data',function(_0x18e9f2){_0x585a9f+=_0x18e9f2;});_0x4ad431['on']('end',function(){_0x4d008c(_0x585a9f);});})['on']('error',function(_0x442ab8){_0x36846b(_0x442ab8);})[_0x9557('0x20')]();});}function convertFile(_0x1c4128,_0x5edb4d){return new BPromise(function(_0x575908,_0x547a69){var _0x4d7ff5=sox['transcode'](_0x1c4128,_0x5edb4d,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4d7ff5['on'](_0x9557('0x16'),function(_0x8cc263){logger[_0x9557('0x16')](_0x9557('0x21'),_0x8cc263);_0x547a69(_0x8cc263);});_0x4d7ff5['on'](_0x9557('0x20'),function(){logger[_0x9557('0x22')]('finish\x20to\x20convert');_0x575908();});_0x4d7ff5[_0x9557('0x23')]();});}function base64Decode(_0x4ba521,_0x10cc01){var _0x34c16c=path[_0x9557('0x24')](__dirname,_0x9557('0x25'),rs[_0x9557('0x26')](0x4)+'.wav');fs['writeFileSync'](_0x34c16c,_0x4ba521,_0x9557('0x27'));return convertFile(_0x34c16c,_0x10cc01)[_0x9557('0x28')](function(){try{fs['unlink'](_0x34c16c);fs[_0x9557('0x29')](_0x10cc01,_0x9557('0x2a'));}catch(_0x12838f){logger[_0x9557('0x16')](_0x12838f);}return _0x10cc01[_0x9557('0x2b')]('.')[0x0];});}function base64Encode(_0x20035b){var _0x186751=fs[_0x9557('0x2c')](_0x20035b);return new Buffer(_0x186751)[_0x9557('0x2d')](_0x9557('0x27'));}exports[_0x9557('0x2e')]=function(_0x30f3d6,_0x365bab,_0x2b5fae,_0x59bda1,_0x4dc2f1,_0x2717bd){var _0x4d88e3,_0x40a5a2;var _0x99913d=_0x9557('0x2f');var _0x371ae3=_0x9557('0x30')+_0x30f3d6;var _0xbcc2ee={};if(_0x365bab===_0x9557('0x31')){_0xbcc2ee['input']={'ssml':_0x2b5fae};}else{_0xbcc2ee['input']={'text':_0x2b5fae};};_0xbcc2ee[_0x9557('0x32')]={'languageCode':_0x59bda1,'ssmlGender':_0x4dc2f1};_0xbcc2ee['audioConfig']={'audioEncoding':_0x9557('0x33'),'sampleRateHertz':0x1f40};var _0x278e3e={'url':_0x99913d+_0x9557('0x34')+_0x371ae3,'method':_0x9557('0x35'),'json':!![],'body':_0xbcc2ee};return rp(_0x278e3e)[_0x9557('0x28')](function(_0x5898d8){return new BPromise(function(_0x1fc502,_0x1ae7ec){_0x4d88e3=path[_0x9557('0x24')](__dirname,'tmp',rs[_0x9557('0x26')](0x4)+_0x9557('0x36'));var _0x2a36b2=Buffer['from'](_0x5898d8[_0x9557('0x37')],'base64');return fs[_0x9557('0x38')](_0x4d88e3,_0x2a36b2,function(_0x22e0b3){_0x1ae7ec(_0x22e0b3);},function(_0x291e03){fs[_0x9557('0x29')](_0x4d88e3,'777');_0x1fc502(_0x291e03);});});})['then'](function(_0x21be38){_0x40a5a2=path[_0x9557('0x24')](__dirname,_0x9557('0x25'),rs['generate'](0x4)+_0x9557('0x39'));return convertFile(_0x4d88e3,_0x40a5a2);})[_0x9557('0x28')](function(){try{fs['unlink'](_0x4d88e3);fs[_0x9557('0x29')](_0x40a5a2,_0x9557('0x2a'));}catch(_0x3d087b){logger[_0x9557('0x16')](_0x3d087b);}logger['info'](_0x9557('0x3a'),_0x40a5a2[_0x9557('0x2b')]('.')[0x0]);return _0x40a5a2[_0x9557('0x2b')]('.')[0x0];});};exports[_0x9557('0x3b')]=function(_0x33bec8,_0x5e4fe2){var _0x516ba6=_0x9557('0x3c');var _0x1f724d,_0x34bd35;var _0x462364;var _0x54d066={'encoding':_0x9557('0x3d'),'method':'POST','timeout':0x2710,'url':_0x516ba6,'headers':{'Content-Type':_0x9557('0x3e')},'body':_0x9557('0x3f')+encodeURIComponent(JSON[_0x9557('0x40')]([[['jQ1olc',JSON['stringify']([_0x33bec8,_0x5e4fe2||'en',![],_0x9557('0x41')]),null,_0x9557('0x42')]]]))};return rp(_0x54d066)['then'](function(_0x14f919){try{_0x462364=eval(_0x14f919[_0x9557('0x43')](0x5))[0x0][0x2];}catch(_0x5407ac){throw new Error(_0x9557('0x44')+_0x14f919[_0x9557('0x45')]);}if(!_0x462364){if(_0x33bec8[_0x9557('0x46')]>0xc8){throw new Error(_0x9557('0x47'));}else{throw new Error(_0x9557('0x48')+_0x5e4fe2+'\x22\x20might\x20not\x20exist');}}try{_0x462364=eval(_0x462364)[0x0];}catch(_0x349d36){throw new Error(_0x9557('0x44')+res['data']);}const _0x1299c3=_0x462364;_0x1f724d=path[_0x9557('0x24')](__dirname,_0x9557('0x25'),rs[_0x9557('0x26')](0x4)+_0x9557('0x36'));fs['writeFileSync'](_0x1f724d,_0x462364,{'encoding':_0x9557('0x27')});_0x34bd35=path[_0x9557('0x24')](__dirname,_0x9557('0x25'),rs[_0x9557('0x26')](0x4)+_0x9557('0x39'));return convertFile(_0x1f724d,_0x34bd35);})[_0x9557('0x28')](function(){try{fs['unlink'](_0x1f724d);fs['chmodSync'](_0x34bd35,_0x9557('0x2a'));}catch(_0x7909a9){logger['error'](_0x7909a9);}logger[_0x9557('0x22')]('goggleTTS\x20path',_0x34bd35['split']('.')[0x0]);return _0x34bd35[_0x9557('0x2b')]('.')[0x0];});};exports[_0x9557('0x49')]=function(_0xbfe414,_0x23d150,_0x4357fa){return google[_0x9557('0x4a')](_0xbfe414,_0x23d150,_0x4357fa)[_0x9557('0x28')](function(_0x37f2c6){logger['info'](_0x37f2c6[_0x9557('0x4b')]);return rp(_0x37f2c6);})[_0x9557('0x28')](function(_0x408564){var _0x437fdf='';var _0x1abc85=0x0;try{fs['unlink'](_0xbfe414);}catch(_0xd2b98b){logger[_0x9557('0x16')](_0xd2b98b);}if(_0x408564&&_0x408564['results']){_0x437fdf=_0x408564[_0x9557('0x4c')][_0x9557('0x4d')](function(_0x10b4e1){return _0x10b4e1&&_0x10b4e1[_0x9557('0x4e')][0x0]&&_0x10b4e1[_0x9557('0x4e')][0x0][_0x9557('0x4f')]?_0x10b4e1[_0x9557('0x4e')][0x0][_0x9557('0x4f')]:'';})[_0x9557('0x50')]('\x0a');_0x1abc85=_0x408564[_0x9557('0x4c')][_0x9557('0x4d')](function(_0x5b53d1){return _0x5b53d1&&_0x5b53d1[_0x9557('0x4e')][0x0]&&_0x5b53d1[_0x9557('0x4e')][0x0]['confidence']?_0x5b53d1[_0x9557('0x4e')][0x0][_0x9557('0x51')]:0x0;})[_0x9557('0x50')]('\x0a');}logger[_0x9557('0x22')](_0x9557('0x52'),_0x437fdf);logger[_0x9557('0x22')](_0x9557('0x53'),_0x1abc85);return{'transcript':_0x437fdf,'confidence':_0x1abc85};})[_0x9557('0x54')](function(_0x1ab925){logger[_0x9557('0x16')](_0x9557('0x55'),_0x1ab925[_0x9557('0x19')],_0x1ab925[_0x9557('0x56')],_0x1ab925[_0x9557('0x57')]);});};exports[_0x9557('0x58')]=function(_0x2a393b,_0x418a4e,_0x5be42b,_0x18ebcc){var _0x26c620=apiai(_0x418a4e,{'language':_0x18ebcc||'en'});return _0x26c620[_0x9557('0x59')](_0x5be42b,{'sessionId':md5(_0x2a393b)})['then'](function(_0x2bc631){logger['info'](JSON['stringify'](_0x2bc631));return{'source':_0x2bc631[_0x9557('0x5a')][_0x9557('0x5b')],'resolvedQuery':_0x2bc631[_0x9557('0x5a')][_0x9557('0x5c')],'action':_0x2bc631[_0x9557('0x5a')][_0x9557('0x5d')],'actionIncomplete':_0x2bc631['result'][_0x9557('0x5e')],'speech':_0x2bc631[_0x9557('0x5a')][_0x9557('0x5f')][_0x9557('0x60')],'score':_0x2bc631[_0x9557('0x5a')][_0x9557('0x61')],'statusCode':_0x2bc631[_0x9557('0x62')][_0x9557('0x63')],'endConversation':_0x2bc631[_0x9557('0x5a')][_0x9557('0x64')][_0x9557('0x65')]||![],'isFallbackIntent':_0x2bc631['result'][_0x9557('0x64')][_0x9557('0x66')]};});};exports[_0x9557('0x67')]=function(_0x4804e8,_0x302feb,_0x1ec081,_0x4fa9e4,_0x3a0529,_0x471cd7){var _0x12bd7d=_0x4fa9e4[_0x9557('0x68')](/\\n/g,'\x0a');var _0x261d05={'credentials':{'private_key':_0x12bd7d,'client_email':_0x1ec081}};var _0x256865=new dialogflow[(_0x9557('0x69'))](_0x261d05);var _0x5be6c6=_0x256865[_0x9557('0x6a')](_0x302feb,md5(_0x4804e8));var _0x35e490={'session':_0x5be6c6,'queryInput':{'text':{'text':_0x3a0529,'languageCode':_0x471cd7}}};return _0x256865[_0x9557('0x6b')](_0x35e490)[_0x9557('0x28')](function(_0x59de12){if(_0x59de12&&_0x59de12[_0x9557('0x46')]){logger[_0x9557('0x22')]('Dialogflow\x20V2\x20response:',JSON[_0x9557('0x40')](_0x59de12));var _0x50506c=_0x59de12[0x0];if(_0x50506c){var _0x42c2af={'action':_0x50506c[_0x9557('0x6c')][_0x9557('0x5d')],'allRequiredParamsPresent':_0x50506c['queryResult']['allRequiredParamsPresent'],'endConversation':_0x50506c[_0x9557('0x6c')][_0x9557('0x6d')]&&_0x50506c[_0x9557('0x6c')]['diagnosticInfo'][_0x9557('0x6e')]?_0x50506c['queryResult'][_0x9557('0x6d')][_0x9557('0x6e')][_0x9557('0x6f')][_0x9557('0x70')]:![],'fulfillmentText':_0x50506c[_0x9557('0x6c')][_0x9557('0x71')],'intentName':_0x50506c[_0x9557('0x6c')][_0x9557('0x72')][_0x9557('0x56')],'intentDisplayName':_0x50506c[_0x9557('0x6c')][_0x9557('0x72')][_0x9557('0x73')],'isFallbackIntent':_0x50506c[_0x9557('0x6c')][_0x9557('0x72')]['isFallback'],'languageCode':_0x50506c['queryResult'][_0x9557('0x74')],'queryText':_0x50506c['queryResult']['queryText'],'responseId':_0x50506c['responseId'],'score':_0x50506c[_0x9557('0x6c')][_0x9557('0x75')],'speech':_0x50506c[_0x9557('0x6c')][_0x9557('0x71')],'providerResponse':JSON['stringify'](_0x59de12)};return _0x42c2af;}}});};exports['tildeASR']=function(_0x97a745,_0x25829a,_0xfa3d29,_0xd20dd5){return tilde[_0x9557('0x4a')](_0x97a745,_0x25829a,_0xfa3d29,_0xd20dd5)[_0x9557('0x28')](function(_0xc1bbb){try{fs[_0x9557('0x1d')](_0x97a745);}catch(_0x2e0c8a){logger[_0x9557('0x16')](_0x2e0c8a);}logger[_0x9557('0x22')](_0x9557('0x76'),_0xc1bbb[_0x9557('0x4f')]);logger[_0x9557('0x22')]('Tilde\x20ASR\x20confidence',_0xc1bbb[_0x9557('0x51')]);return _0xc1bbb;});};exports[_0x9557('0x77')]=function(_0x23f19d,_0x2817c4,_0x464918,_0x464fa1,_0x13ab6a,_0x4f6b9d){var _0x93b226=path['resolve'](__dirname,_0x9557('0x25'),rs[_0x9557('0x26')](0x4)+'.mp3');var _0x4b95eb;return aws[_0x9557('0x78')](_0x23f19d,_0x2817c4,_0x464918,_0x464fa1,_0x13ab6a,_0x4f6b9d,_0x93b226)[_0x9557('0x28')](function(){_0x4b95eb=path['resolve'](__dirname,_0x9557('0x25'),rs['generate'](0x4)+'.wav');return convertFile(_0x93b226,_0x4b95eb);})[_0x9557('0x28')](function(){try{fs[_0x9557('0x1d')](_0x93b226);fs[_0x9557('0x29')](_0x4b95eb,_0x9557('0x2a'));}catch(_0x57657f){logger[_0x9557('0x16')](_0x57657f);}return _0x4b95eb[_0x9557('0x2b')]('.')[0x0];});};exports[_0x9557('0x79')]=function(_0xca1fe7,_0x4c5742,_0x336794,_0x225e64,_0x225456,_0x1586a1){return aws[_0x9557('0x7a')](_0xca1fe7,_0x4c5742,_0x336794,_0x225e64,_0x225456,_0x1586a1)['then'](function(_0x554319){logger[_0x9557('0x22')](JSON[_0x9557('0x40')](_0x554319));return _0x554319;});};exports[_0x9557('0x7b')]=function(_0x372a31,_0x22d80e,_0x19216f,_0x24062e){var _0x1b5771=util[_0x9557('0x7c')](_0x9557('0x7d'),ISPEECH_API,_0x372a31,encodeURIComponent(_0x22d80e),_0x19216f,_0x24062e);var _0x4b759d=path[_0x9557('0x24')](__dirname,_0x9557('0x25'),rs[_0x9557('0x26')](0x4)+_0x9557('0x36'));var _0x5747f3;return downloadFile(_0x1b5771,_0x4b759d)[_0x9557('0x28')](function(){_0x5747f3=path[_0x9557('0x24')](__dirname,_0x9557('0x25'),rs[_0x9557('0x26')](0x4)+_0x9557('0x39'));return convertFile(_0x4b759d,_0x5747f3);})[_0x9557('0x28')](function(){try{fs['unlink'](_0x4b759d);fs['chmodSync'](_0x5747f3,_0x9557('0x2a'));}catch(_0x42e2cd){logger[_0x9557('0x16')](_0x42e2cd);}return _0x5747f3[_0x9557('0x2b')]('.')[0x0];});};exports[_0x9557('0x7e')]=function(_0x268f92,_0x52c14a,_0x53b080,_0x37f4f4){var _0x1d185f=util[_0x9557('0x7c')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x52c14a,_0x53b080,base64Encode(_0x268f92),_0x37f4f4?util['format'](_0x9557('0x7f'),encodeURIComponent(_0x37f4f4)):_0x9557('0x80'));return uploadFile(_0x1d185f)['then'](function(_0x2de201){return querystring[_0x9557('0x8')](_0x2de201);});};exports[_0x9557('0x81')]=function(_0xc6cde,_0x278dc6){return sestek['nda'](_0xc6cde,_0x278dc6)[_0x9557('0x28')](function(_0x33e050){logger[_0x9557('0x22')](JSON['stringify'](_0x33e050));var _0x36d70d={'speech':_0x33e050[_0x9557('0x82')],'action':_0x33e050['channelData']?_0x33e050[_0x9557('0x83')][_0x9557('0x84')]:undefined,'actiondata':_0x33e050[_0x9557('0x83')]?_0x33e050[_0x9557('0x83')][_0x9557('0x85')]:undefined};if(_0x33e050[_0x9557('0x83')]&&_0x33e050[_0x9557('0x83')]['AudioFromTts']){return base64Decode(_0x33e050[_0x9557('0x83')]['AudioFromTts']['Data'],path[_0x9557('0x24')](__dirname,_0x9557('0x25'),rs[_0x9557('0x26')](0x4)+_0x9557('0x39')))[_0x9557('0x28')](function(_0x19914a){_0x36d70d[_0x9557('0x86')]=_0x19914a;return _0x36d70d;});}return _0x36d70d;});};exports[_0x9557('0x87')]=function(){return __dirname;};