Built motion from commit (unavailable).|2.5.21
[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 _0xa906=['result','source','resolvedQuery','action','fulfillment','score','code','metadata','endConversation','googleDialogflowV2','SessionsClient','detectIntent','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','languageCode','queryText','intentDetectionConfidence','asr','Tilde\x20ASR\x20transcription','awsPolly','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','format','model=%s','freeform=3','sestekNDA','channelData','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','http','https','md5','path','request-promise','sox','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','protocol','host','WHAT_EVER','get','statusCode','error','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','info','finish\x20download\x20file','close','unlink','end','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','777','split','readFileSync','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','MP3','text:synthesize','POST','.mp3','audioContent','then','chmodSync','googleCloudTTS\x20path','googleTTS','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','goggleTTS\x20path','googleASR','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','[%s]\x20%s:%s','name','message','textRequest'];(function(_0xb679f0,_0x4f2dfc){var _0x5374e1=function(_0x551a9a){while(--_0x551a9a){_0xb679f0['push'](_0xb679f0['shift']());}};_0x5374e1(++_0x4f2dfc);}(_0xa906,0x129));var _0x6a90=function(_0x5c7ff4,_0x31d006){_0x5c7ff4=_0x5c7ff4-0x0;var _0x5ca21a=_0xa906[_0x5c7ff4];return _0x5ca21a;};'use strict';var apiai=require(_0x6a90('0x0'));var BPromise=require(_0x6a90('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x6a90('0x2'));var https=require(_0x6a90('0x3'));var md5=require(_0x6a90('0x4'));var path=require(_0x6a90('0x5'));var querystring=require('querystring');var rp=require(_0x6a90('0x6'));var rs=require('randomstring');var sox=require(_0x6a90('0x7'));var tts=require('google-tts-api');var urlParse=require('url')[_0x6a90('0x8')];var util=require(_0x6a90('0x9'));var aws=require(_0x6a90('0xa'));var google=require(_0x6a90('0xb'));var sestek=require(_0x6a90('0xc'));var tilde=require(_0x6a90('0xd'));var logger=require(_0x6a90('0xe'))(_0x6a90('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x313733,_0x41e20b){return new BPromise(function(_0x333aa5,_0x4723ea){var _0x576760=urlParse(_0x313733);var _0x568cc1=_0x576760[_0x6a90('0x10')]==='https:'?https:http;var _0x4a48c8={'host':_0x576760[_0x6a90('0x11')],'path':_0x576760[_0x6a90('0x5')],'headers':{'user-agent':_0x6a90('0x12')}};_0x568cc1[_0x6a90('0x13')](_0x4a48c8,function(_0x554fb1){if(_0x554fb1[_0x6a90('0x14')]!==0xc8){logger[_0x6a90('0x15')]('request\x20to\x20'+_0x313733+_0x6a90('0x16')+_0x554fb1[_0x6a90('0x14')]+'\x20('+_0x554fb1[_0x6a90('0x17')]+')');_0x4723ea(new Error(_0x6a90('0x18')+_0x313733+_0x6a90('0x16')+_0x554fb1[_0x6a90('0x14')]+'\x20('+_0x554fb1[_0x6a90('0x17')]+')'));return;}var _0x3e229e=fs[_0x6a90('0x19')](_0x41e20b);_0x3e229e['on']('finish',function(){logger[_0x6a90('0x1a')](_0x6a90('0x1b'));_0x3e229e[_0x6a90('0x1c')](_0x333aa5);});_0x3e229e['on'](_0x6a90('0x15'),function(_0x7479e5){fs[_0x6a90('0x1d')](_0x41e20b);logger[_0x6a90('0x15')]('download\x20error',_0x7479e5);_0x4723ea(_0x7479e5);});_0x554fb1['pipe'](_0x3e229e);})['on'](_0x6a90('0x15'),function(_0x5b3866){logger[_0x6a90('0x15')](_0x5b3866);_0x4723ea(_0x5b3866);})[_0x6a90('0x1e')]();});}function uploadFile(_0x57cdae){return new BPromise(function(_0x174e9e,_0x17bc5b){var _0x377ab2=urlParse(_0x57cdae);var _0x23911f=_0x377ab2[_0x6a90('0x10')]==='https:'?https:http;var _0x92a79={'host':_0x377ab2['host'],'path':_0x377ab2[_0x6a90('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x23911f[_0x6a90('0x13')](_0x92a79,function(_0x41f919){if(_0x41f919[_0x6a90('0x14')]!==0xc8){_0x17bc5b(new Error(_0x6a90('0x18')+_0x57cdae+_0x6a90('0x16')+_0x41f919[_0x6a90('0x14')]+'\x20('+_0x41f919['statusMessage']+')'));return;}var _0x4dfe0e='';_0x41f919['on'](_0x6a90('0x1f'),function(_0xb392a7){_0x4dfe0e+=_0xb392a7;});_0x41f919['on'](_0x6a90('0x1e'),function(){_0x174e9e(_0x4dfe0e);});})['on'](_0x6a90('0x15'),function(_0x19218e){_0x17bc5b(_0x19218e);})[_0x6a90('0x1e')]();});}function convertFile(_0xf51dd2,_0x1cc59f){return new BPromise(function(_0x355d93,_0x415856){var _0x533321=sox[_0x6a90('0x20')](_0xf51dd2,_0x1cc59f,{'sampleRate':0x1f40,'format':_0x6a90('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x533321['on'](_0x6a90('0x15'),function(_0x3e9d23){logger[_0x6a90('0x15')](_0x6a90('0x22'),_0x3e9d23);_0x415856(_0x3e9d23);});_0x533321['on']('end',function(){logger[_0x6a90('0x1a')](_0x6a90('0x23'));_0x355d93();});_0x533321[_0x6a90('0x24')]();});}function base64Decode(_0x54ec56,_0x419f33){var _0x14951c=path[_0x6a90('0x25')](__dirname,_0x6a90('0x26'),rs[_0x6a90('0x27')](0x4)+_0x6a90('0x28'));fs[_0x6a90('0x29')](_0x14951c,_0x54ec56,'base64');return convertFile(_0x14951c,_0x419f33)['then'](function(){try{fs['unlink'](_0x14951c);fs['chmodSync'](_0x419f33,_0x6a90('0x2a'));}catch(_0x404371){logger['error'](_0x404371);}return _0x419f33[_0x6a90('0x2b')]('.')[0x0];});}function base64Encode(_0x138a8c){var _0x30efb4=fs[_0x6a90('0x2c')](_0x138a8c);return new Buffer(_0x30efb4)[_0x6a90('0x2d')](_0x6a90('0x2e'));}exports[_0x6a90('0x2f')]=function(_0x3d4b3e,_0x27ff5c,_0x3da14a,_0xdb586c,_0x88f1e7,_0x126ce3){var _0x4f9d0c,_0x44147f;var _0x440049=_0x6a90('0x30');var _0x5a1ce9=_0x6a90('0x31')+_0x3d4b3e;var _0x1a93ce={};if(_0x27ff5c==='ssml'){_0x1a93ce[_0x6a90('0x32')]={'ssml':_0x3da14a};}else{_0x1a93ce[_0x6a90('0x32')]={'text':_0x3da14a};};_0x1a93ce[_0x6a90('0x33')]={'languageCode':_0xdb586c,'ssmlGender':_0x88f1e7};_0x1a93ce[_0x6a90('0x34')]={'audioEncoding':_0x6a90('0x35'),'sampleRateHertz':0x1f40};var _0x17976f={'url':_0x440049+_0x6a90('0x36')+_0x5a1ce9,'method':_0x6a90('0x37'),'json':!![],'body':_0x1a93ce};return rp(_0x17976f)['then'](function(_0x2968d7){return new BPromise(function(_0x2e7988,_0x563b78){_0x4f9d0c=path[_0x6a90('0x25')](__dirname,_0x6a90('0x26'),rs[_0x6a90('0x27')](0x4)+_0x6a90('0x38'));var _0x58156e=Buffer['from'](_0x2968d7[_0x6a90('0x39')],_0x6a90('0x2e'));return fs['writeFile'](_0x4f9d0c,_0x58156e,function(_0x5e8fcd){_0x563b78(_0x5e8fcd);},function(_0x135fa7){fs['chmodSync'](_0x4f9d0c,_0x6a90('0x2a'));_0x2e7988(_0x135fa7);});});})[_0x6a90('0x3a')](function(_0x25e4b7){_0x44147f=path['resolve'](__dirname,_0x6a90('0x26'),rs[_0x6a90('0x27')](0x4)+_0x6a90('0x28'));return convertFile(_0x4f9d0c,_0x44147f);})[_0x6a90('0x3a')](function(){try{fs[_0x6a90('0x1d')](_0x4f9d0c);fs[_0x6a90('0x3b')](_0x44147f,_0x6a90('0x2a'));}catch(_0x4f14c3){logger['error'](_0x4f14c3);}logger[_0x6a90('0x1a')](_0x6a90('0x3c'),_0x44147f[_0x6a90('0x2b')]('.')[0x0]);return _0x44147f[_0x6a90('0x2b')]('.')[0x0];});};exports[_0x6a90('0x3d')]=function(_0x2f675e,_0x913690){var _0xbd3525='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x177c02,_0x46c344;var _0xbd7542;var _0x32771e={'encoding':_0x6a90('0x3e'),'method':_0x6a90('0x37'),'timeout':0x2710,'url':_0xbd3525,'headers':{'Content-Type':_0x6a90('0x3f')},'body':'f.req='+encodeURIComponent(JSON[_0x6a90('0x40')]([[[_0x6a90('0x41'),JSON[_0x6a90('0x40')]([_0x2f675e,_0x913690||'en',![],_0x6a90('0x42')]),null,_0x6a90('0x43')]]]))};return rp(_0x32771e)[_0x6a90('0x3a')](function(_0x127135){try{_0xbd7542=eval(_0x127135[_0x6a90('0x44')](0x5))[0x0][0x2];}catch(_0x58844c){throw new Error(_0x6a90('0x45')+_0x127135[_0x6a90('0x1f')]);}if(!_0xbd7542){if(_0x2f675e[_0x6a90('0x46')]>0xc8){throw new Error(_0x6a90('0x47'));}else{throw new Error(_0x6a90('0x48')+_0x913690+'\x22\x20might\x20not\x20exist');}}try{_0xbd7542=eval(_0xbd7542)[0x0];}catch(_0x12f8ca){throw new Error(_0x6a90('0x45')+res[_0x6a90('0x1f')]);}const _0x27b1f7=_0xbd7542;_0x177c02=path[_0x6a90('0x25')](__dirname,_0x6a90('0x26'),rs['generate'](0x4)+_0x6a90('0x38'));fs[_0x6a90('0x29')](_0x177c02,_0xbd7542,{'encoding':_0x6a90('0x2e')});_0x46c344=path['resolve'](__dirname,_0x6a90('0x26'),rs[_0x6a90('0x27')](0x4)+_0x6a90('0x28'));return convertFile(_0x177c02,_0x46c344);})[_0x6a90('0x3a')](function(){try{fs[_0x6a90('0x1d')](_0x177c02);fs[_0x6a90('0x3b')](_0x46c344,_0x6a90('0x2a'));}catch(_0xad9aee){logger[_0x6a90('0x15')](_0xad9aee);}logger[_0x6a90('0x1a')](_0x6a90('0x49'),_0x46c344[_0x6a90('0x2b')]('.')[0x0]);return _0x46c344[_0x6a90('0x2b')]('.')[0x0];});};exports[_0x6a90('0x4a')]=function(_0x5a7c12,_0xf2df15,_0x473d22){return google['asr'](_0x5a7c12,_0xf2df15,_0x473d22)[_0x6a90('0x3a')](function(_0x4df9f3){logger[_0x6a90('0x1a')](_0x4df9f3[_0x6a90('0x4b')]);return rp(_0x4df9f3);})[_0x6a90('0x3a')](function(_0x3f9dbb){var _0x5167d9='';var _0x391125=0x0;try{fs[_0x6a90('0x1d')](_0x5a7c12);}catch(_0x1a1856){logger['error'](_0x1a1856);}if(_0x3f9dbb&&_0x3f9dbb[_0x6a90('0x4c')]){_0x5167d9=_0x3f9dbb[_0x6a90('0x4c')][_0x6a90('0x4d')](function(_0x1fdde8){return _0x1fdde8&&_0x1fdde8[_0x6a90('0x4e')][0x0]&&_0x1fdde8[_0x6a90('0x4e')][0x0][_0x6a90('0x4f')]?_0x1fdde8[_0x6a90('0x4e')][0x0][_0x6a90('0x4f')]:'';})['join']('\x0a');_0x391125=_0x3f9dbb[_0x6a90('0x4c')][_0x6a90('0x4d')](function(_0x4b8269){return _0x4b8269&&_0x4b8269[_0x6a90('0x4e')][0x0]&&_0x4b8269[_0x6a90('0x4e')][0x0][_0x6a90('0x50')]?_0x4b8269['alternatives'][0x0][_0x6a90('0x50')]:0x0;})[_0x6a90('0x51')]('\x0a');}logger[_0x6a90('0x1a')](_0x6a90('0x52'),_0x5167d9);logger[_0x6a90('0x1a')]('googleASR\x20confidence',_0x391125);return{'transcript':_0x5167d9,'confidence':_0x391125};})['catch'](function(_0xc89d89){logger['error'](_0x6a90('0x53'),_0xc89d89[_0x6a90('0x14')],_0xc89d89[_0x6a90('0x54')],_0xc89d89[_0x6a90('0x55')]);});};exports['googleDialogflow']=function(_0x9aae12,_0xd30591,_0x9eb826,_0x5582d8){var _0x1aefa4=apiai(_0xd30591,{'language':_0x5582d8||'en'});return _0x1aefa4[_0x6a90('0x56')](_0x9eb826,{'sessionId':md5(_0x9aae12)})['then'](function(_0x151e13){logger[_0x6a90('0x1a')](JSON[_0x6a90('0x40')](_0x151e13));return{'source':_0x151e13[_0x6a90('0x57')][_0x6a90('0x58')],'resolvedQuery':_0x151e13['result'][_0x6a90('0x59')],'action':_0x151e13['result'][_0x6a90('0x5a')],'actionIncomplete':_0x151e13['result']['actionIncomplete'],'speech':_0x151e13[_0x6a90('0x57')][_0x6a90('0x5b')]['speech'],'score':_0x151e13[_0x6a90('0x57')][_0x6a90('0x5c')],'statusCode':_0x151e13['status'][_0x6a90('0x5d')],'endConversation':_0x151e13['result'][_0x6a90('0x5e')][_0x6a90('0x5f')]||![],'isFallbackIntent':_0x151e13[_0x6a90('0x57')][_0x6a90('0x5e')]['isFallbackIntent']};});};exports[_0x6a90('0x60')]=function(_0x501205,_0x44a74c,_0x1597a0,_0x4a2b67,_0xdba15c,_0x5c0273){var _0x2d9aae=_0x4a2b67['replace'](/\\n/g,'\x0a');var _0x1f1c08={'credentials':{'private_key':_0x2d9aae,'client_email':_0x1597a0}};var _0x12851b=new dialogflow[(_0x6a90('0x61'))](_0x1f1c08);var _0x3a1b2f=_0x12851b['sessionPath'](_0x44a74c,md5(_0x501205));var _0x4ec271={'session':_0x3a1b2f,'queryInput':{'text':{'text':_0xdba15c,'languageCode':_0x5c0273}}};return _0x12851b[_0x6a90('0x62')](_0x4ec271)[_0x6a90('0x3a')](function(_0x340883){if(_0x340883&&_0x340883['length']){logger[_0x6a90('0x1a')](_0x6a90('0x63'),JSON[_0x6a90('0x40')](_0x340883));var _0x1096c8=_0x340883[0x0];if(_0x1096c8){var _0x11e2a0={'action':_0x1096c8[_0x6a90('0x64')][_0x6a90('0x5a')],'allRequiredParamsPresent':_0x1096c8['queryResult']['allRequiredParamsPresent'],'endConversation':_0x1096c8[_0x6a90('0x64')][_0x6a90('0x65')]&&_0x1096c8[_0x6a90('0x64')][_0x6a90('0x65')][_0x6a90('0x66')]?_0x1096c8[_0x6a90('0x64')][_0x6a90('0x65')][_0x6a90('0x66')][_0x6a90('0x67')][_0x6a90('0x68')]:![],'fulfillmentText':_0x1096c8['queryResult'][_0x6a90('0x69')],'intentName':_0x1096c8[_0x6a90('0x64')][_0x6a90('0x6a')]['name'],'intentDisplayName':_0x1096c8[_0x6a90('0x64')]['intent'][_0x6a90('0x6b')],'isFallbackIntent':_0x1096c8['queryResult'][_0x6a90('0x6a')]['isFallback'],'languageCode':_0x1096c8[_0x6a90('0x64')][_0x6a90('0x6c')],'queryText':_0x1096c8[_0x6a90('0x64')][_0x6a90('0x6d')],'responseId':_0x1096c8['responseId'],'score':_0x1096c8['queryResult'][_0x6a90('0x6e')],'speech':_0x1096c8[_0x6a90('0x64')][_0x6a90('0x69')],'providerResponse':JSON[_0x6a90('0x40')](_0x340883)};return _0x11e2a0;}}});};exports['tildeASR']=function(_0x3e0255,_0x58fcb0,_0x5ba0f7,_0x532eb4){return tilde[_0x6a90('0x6f')](_0x3e0255,_0x58fcb0,_0x5ba0f7,_0x532eb4)[_0x6a90('0x3a')](function(_0x83b840){try{fs[_0x6a90('0x1d')](_0x3e0255);}catch(_0x513ca2){logger[_0x6a90('0x15')](_0x513ca2);}logger[_0x6a90('0x1a')](_0x6a90('0x70'),_0x83b840[_0x6a90('0x4f')]);logger[_0x6a90('0x1a')]('Tilde\x20ASR\x20confidence',_0x83b840[_0x6a90('0x50')]);return _0x83b840;});};exports[_0x6a90('0x71')]=function(_0x3c6ec2,_0x8ce84c,_0x1c7963,_0x3d00fe,_0x503779,_0x14d1e1){var _0x338bb3=path[_0x6a90('0x25')](__dirname,'tmp',rs[_0x6a90('0x27')](0x4)+_0x6a90('0x38'));var _0x13305b;return aws['polly'](_0x3c6ec2,_0x8ce84c,_0x1c7963,_0x3d00fe,_0x503779,_0x14d1e1,_0x338bb3)[_0x6a90('0x3a')](function(){_0x13305b=path['resolve'](__dirname,_0x6a90('0x26'),rs['generate'](0x4)+_0x6a90('0x28'));return convertFile(_0x338bb3,_0x13305b);})[_0x6a90('0x3a')](function(){try{fs[_0x6a90('0x1d')](_0x338bb3);fs[_0x6a90('0x3b')](_0x13305b,_0x6a90('0x2a'));}catch(_0xd952d8){logger['error'](_0xd952d8);}return _0x13305b[_0x6a90('0x2b')]('.')[0x0];});};exports[_0x6a90('0x72')]=function(_0x161142,_0x47e63a,_0x4357de,_0x4a7d1c,_0x341d8d,_0x42e41c){return aws[_0x6a90('0x73')](_0x161142,_0x47e63a,_0x4357de,_0x4a7d1c,_0x341d8d,_0x42e41c)[_0x6a90('0x3a')](function(_0x4708b5){logger[_0x6a90('0x1a')](JSON[_0x6a90('0x40')](_0x4708b5));return _0x4708b5;});};exports[_0x6a90('0x74')]=function(_0x3a4db2,_0x50195c,_0x1a6b94,_0x3bae3a){var _0x5182e2=util['format'](_0x6a90('0x75'),ISPEECH_API,_0x3a4db2,encodeURIComponent(_0x50195c),_0x1a6b94,_0x3bae3a);var _0x5708ae=path[_0x6a90('0x25')](__dirname,_0x6a90('0x26'),rs[_0x6a90('0x27')](0x4)+_0x6a90('0x38'));var _0x57a9e8;return downloadFile(_0x5182e2,_0x5708ae)[_0x6a90('0x3a')](function(){_0x57a9e8=path[_0x6a90('0x25')](__dirname,_0x6a90('0x26'),rs[_0x6a90('0x27')](0x4)+_0x6a90('0x28'));return convertFile(_0x5708ae,_0x57a9e8);})['then'](function(){try{fs[_0x6a90('0x1d')](_0x5708ae);fs[_0x6a90('0x3b')](_0x57a9e8,'777');}catch(_0x1a9bfc){logger[_0x6a90('0x15')](_0x1a9bfc);}return _0x57a9e8[_0x6a90('0x2b')]('.')[0x0];});};exports[_0x6a90('0x76')]=function(_0x5407ba,_0x494753,_0x1c8bb6,_0xa0dcc9){var _0x2564ab=util[_0x6a90('0x77')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x494753,_0x1c8bb6,base64Encode(_0x5407ba),_0xa0dcc9?util[_0x6a90('0x77')](_0x6a90('0x78'),encodeURIComponent(_0xa0dcc9)):_0x6a90('0x79'));return uploadFile(_0x2564ab)[_0x6a90('0x3a')](function(_0xc2060f){return querystring['parse'](_0xc2060f);});};exports[_0x6a90('0x7a')]=function(_0x2e1a94,_0x2aff4c){return sestek['nda'](_0x2e1a94,_0x2aff4c)['then'](function(_0x5982f4){logger[_0x6a90('0x1a')](JSON[_0x6a90('0x40')](_0x5982f4));var _0x2f39fa={'speech':_0x5982f4['text'],'action':_0x5982f4['channelData']?_0x5982f4[_0x6a90('0x7b')]['CustomAction']:undefined,'actiondata':_0x5982f4[_0x6a90('0x7b')]?_0x5982f4[_0x6a90('0x7b')][_0x6a90('0x7c')]:undefined};if(_0x5982f4[_0x6a90('0x7b')]&&_0x5982f4['channelData'][_0x6a90('0x7d')]){return base64Decode(_0x5982f4[_0x6a90('0x7b')]['AudioFromTts']['Data'],path['resolve'](__dirname,'tmp',rs[_0x6a90('0x27')](0x4)+_0x6a90('0x28')))[_0x6a90('0x3a')](function(_0x3ed679){_0x2f39fa[_0x6a90('0x7e')]=_0x3ed679;return _0x2f39fa;});}return _0x2f39fa;});};exports[_0x6a90('0x7f')]=function(){return __dirname;};