Built motion from commit da24aabd.|2.6.20
[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 _0x3474=['host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','info','finish\x20download\x20file','close','unlink','pipe','end','data','error\x20convert','finish\x20to\x20convert','start','tmp','generate','.wav','writeFileSync','base64','then','777','split','readFileSync','googleCloudTTS','?key=','ssml','input','audioConfig','MP3','text:synthesize','resolve','.mp3','from','audioContent','writeFile','chmodSync','googleCloudTTS\x20path','googleTTS','POST','application/x-www-form-urlencoded','jQ1olc','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','googleASR','asr','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','result','resolvedQuery','action','actionIncomplete','fulfillment','score','status','metadata','endConversation','googleDialogflowV2','replace','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','queryText','intentDetectionConfidence','Tilde\x20ASR\x20transcription','awsPolly','polly','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','format','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','md5','path','querystring','request-promise','sox','google-tts-api','url','parse','util','./sestek','../../../config/logger','agi','protocol','https:'];(function(_0xd0fd73,_0x248ec8){var _0x5b0240=function(_0x3f7c65){while(--_0x3f7c65){_0xd0fd73['push'](_0xd0fd73['shift']());}};_0x5b0240(++_0x248ec8);}(_0x3474,0x6e));var _0x4347=function(_0x2be5d3,_0x278ef2){_0x2be5d3=_0x2be5d3-0x0;var _0xbaaea8=_0x3474[_0x2be5d3];return _0xbaaea8;};'use strict';var apiai=require(_0x4347('0x0'));var BPromise=require(_0x4347('0x1'));var dialogflow=require(_0x4347('0x2'));var fs=require('fs');var http=require(_0x4347('0x3'));var https=require('https');var md5=require(_0x4347('0x4'));var path=require(_0x4347('0x5'));var querystring=require(_0x4347('0x6'));var rp=require(_0x4347('0x7'));var rs=require('randomstring');var sox=require(_0x4347('0x8'));var tts=require(_0x4347('0x9'));var urlParse=require(_0x4347('0xa'))[_0x4347('0xb')];var util=require(_0x4347('0xc'));var aws=require('./aws');var google=require('./google');var sestek=require(_0x4347('0xd'));var tilde=require('./tilde');var logger=require(_0x4347('0xe'))(_0x4347('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x1c6339,_0x18a2a8){return new BPromise(function(_0x1168e8,_0x52a097){var _0x20d1fd=urlParse(_0x1c6339);var _0x51db1a=_0x20d1fd[_0x4347('0x10')]===_0x4347('0x11')?https:http;var _0x363fa6={'host':_0x20d1fd[_0x4347('0x12')],'path':_0x20d1fd['path'],'headers':{'user-agent':_0x4347('0x13')}};_0x51db1a[_0x4347('0x14')](_0x363fa6,function(_0x3efc7b){if(_0x3efc7b[_0x4347('0x15')]!==0xc8){logger[_0x4347('0x16')](_0x4347('0x17')+_0x1c6339+_0x4347('0x18')+_0x3efc7b[_0x4347('0x15')]+'\x20('+_0x3efc7b['statusMessage']+')');_0x52a097(new Error('request\x20to\x20'+_0x1c6339+_0x4347('0x18')+_0x3efc7b[_0x4347('0x15')]+'\x20('+_0x3efc7b[_0x4347('0x19')]+')'));return;}var _0x47666d=fs['createWriteStream'](_0x18a2a8);_0x47666d['on']('finish',function(){logger[_0x4347('0x1a')](_0x4347('0x1b'));_0x47666d[_0x4347('0x1c')](_0x1168e8);});_0x47666d['on']('error',function(_0xd46529){fs[_0x4347('0x1d')](_0x18a2a8);logger['error']('download\x20error',_0xd46529);_0x52a097(_0xd46529);});_0x3efc7b[_0x4347('0x1e')](_0x47666d);})['on'](_0x4347('0x16'),function(_0x3aefbd){logger[_0x4347('0x16')](_0x3aefbd);_0x52a097(_0x3aefbd);})[_0x4347('0x1f')]();});}function uploadFile(_0x5ae740){return new BPromise(function(_0x167019,_0x4b9f6f){var _0x245c61=urlParse(_0x5ae740);var _0x35a1fb=_0x245c61['protocol']===_0x4347('0x11')?https:http;var _0x4dc78e={'host':_0x245c61['host'],'path':_0x245c61[_0x4347('0x5')],'headers':{'user-agent':_0x4347('0x13')}};_0x35a1fb[_0x4347('0x14')](_0x4dc78e,function(_0x439730){if(_0x439730['statusCode']!==0xc8){_0x4b9f6f(new Error('request\x20to\x20'+_0x5ae740+_0x4347('0x18')+_0x439730[_0x4347('0x15')]+'\x20('+_0x439730[_0x4347('0x19')]+')'));return;}var _0x5cfd39='';_0x439730['on'](_0x4347('0x20'),function(_0x32b923){_0x5cfd39+=_0x32b923;});_0x439730['on'](_0x4347('0x1f'),function(){_0x167019(_0x5cfd39);});})['on']('error',function(_0x2daeba){_0x4b9f6f(_0x2daeba);})[_0x4347('0x1f')]();});}function convertFile(_0x4794f0,_0x4cc69f){return new BPromise(function(_0x34ebca,_0x3ea2a7){var _0xf48814=sox['transcode'](_0x4794f0,_0x4cc69f,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xf48814['on'](_0x4347('0x16'),function(_0x250501){logger[_0x4347('0x16')](_0x4347('0x21'),_0x250501);_0x3ea2a7(_0x250501);});_0xf48814['on']('end',function(){logger[_0x4347('0x1a')](_0x4347('0x22'));_0x34ebca();});_0xf48814[_0x4347('0x23')]();});}function base64Decode(_0x165d58,_0x4ae863){var _0x2f9a63=path['resolve'](__dirname,_0x4347('0x24'),rs[_0x4347('0x25')](0x4)+_0x4347('0x26'));fs[_0x4347('0x27')](_0x2f9a63,_0x165d58,_0x4347('0x28'));return convertFile(_0x2f9a63,_0x4ae863)[_0x4347('0x29')](function(){try{fs[_0x4347('0x1d')](_0x2f9a63);fs['chmodSync'](_0x4ae863,_0x4347('0x2a'));}catch(_0x5de600){logger[_0x4347('0x16')](_0x5de600);}return _0x4ae863[_0x4347('0x2b')]('.')[0x0];});}function base64Encode(_0x41db49){var _0x3e9a49=fs[_0x4347('0x2c')](_0x41db49);return new Buffer(_0x3e9a49)['toString'](_0x4347('0x28'));}exports[_0x4347('0x2d')]=function(_0x559c2f,_0x1877f8,_0x285f1b,_0x4b8191,_0x12da17,_0x55682b){var _0xcd372f,_0x3a547d;var _0xa42389='https://texttospeech.googleapis.com/v1/';var _0x420c7c=_0x4347('0x2e')+_0x559c2f;var _0xe942a8={};if(_0x1877f8===_0x4347('0x2f')){_0xe942a8['input']={'ssml':_0x285f1b};}else{_0xe942a8[_0x4347('0x30')]={'text':_0x285f1b};};_0xe942a8['voice']={'languageCode':_0x4b8191,'ssmlGender':_0x12da17};_0xe942a8[_0x4347('0x31')]={'audioEncoding':_0x4347('0x32'),'sampleRateHertz':0x1f40};var _0x3cf49a={'url':_0xa42389+_0x4347('0x33')+_0x420c7c,'method':'POST','json':!![],'body':_0xe942a8};return rp(_0x3cf49a)[_0x4347('0x29')](function(_0x274ede){return new BPromise(function(_0xe558e,_0x3a0689){_0xcd372f=path[_0x4347('0x34')](__dirname,_0x4347('0x24'),rs[_0x4347('0x25')](0x4)+_0x4347('0x35'));var _0x2a2e2f=Buffer[_0x4347('0x36')](_0x274ede[_0x4347('0x37')],_0x4347('0x28'));return fs[_0x4347('0x38')](_0xcd372f,_0x2a2e2f,function(_0x4da84f){_0x3a0689(_0x4da84f);},function(_0x6ff57){fs[_0x4347('0x39')](_0xcd372f,_0x4347('0x2a'));_0xe558e(_0x6ff57);});});})['then'](function(_0x210ab2){_0x3a547d=path[_0x4347('0x34')](__dirname,_0x4347('0x24'),rs[_0x4347('0x25')](0x4)+_0x4347('0x26'));return convertFile(_0xcd372f,_0x3a547d);})[_0x4347('0x29')](function(){try{fs[_0x4347('0x1d')](_0xcd372f);fs[_0x4347('0x39')](_0x3a547d,_0x4347('0x2a'));}catch(_0x65d850){logger[_0x4347('0x16')](_0x65d850);}logger['info'](_0x4347('0x3a'),_0x3a547d[_0x4347('0x2b')]('.')[0x0]);return _0x3a547d[_0x4347('0x2b')]('.')[0x0];});};exports[_0x4347('0x3b')]=function(_0x3f33c6,_0x2cbdf0){var _0x3a3b08='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x208d1b,_0x4a8a9f;var _0x1167a6;var _0x1c4fa1={'encoding':'utf8','method':_0x4347('0x3c'),'timeout':0x2710,'url':_0x3a3b08,'headers':{'Content-Type':_0x4347('0x3d')},'body':'f.req='+encodeURIComponent(JSON['stringify']([[[_0x4347('0x3e'),JSON[_0x4347('0x3f')]([_0x3f33c6,_0x2cbdf0||'en',![],_0x4347('0x40')]),null,_0x4347('0x41')]]]))};return rp(_0x1c4fa1)['then'](function(_0x37e8d9){try{_0x1167a6=eval(_0x37e8d9[_0x4347('0x42')](0x5))[0x0][0x2];}catch(_0x59ed92){throw new Error(_0x4347('0x43')+_0x37e8d9[_0x4347('0x20')]);}if(!_0x1167a6){if(_0x3f33c6[_0x4347('0x44')]>0xc8){throw new Error(_0x4347('0x45'));}else{throw new Error(_0x4347('0x46')+_0x2cbdf0+_0x4347('0x47'));}}try{_0x1167a6=eval(_0x1167a6)[0x0];}catch(_0x473549){throw new Error(_0x4347('0x43')+res[_0x4347('0x20')]);}const _0x1d1f33=_0x1167a6;_0x208d1b=path['resolve'](__dirname,_0x4347('0x24'),rs['generate'](0x4)+_0x4347('0x35'));fs['writeFileSync'](_0x208d1b,_0x1167a6,{'encoding':_0x4347('0x28')});_0x4a8a9f=path[_0x4347('0x34')](__dirname,'tmp',rs['generate'](0x4)+_0x4347('0x26'));return convertFile(_0x208d1b,_0x4a8a9f);})[_0x4347('0x29')](function(){try{fs['unlink'](_0x208d1b);fs['chmodSync'](_0x4a8a9f,_0x4347('0x2a'));}catch(_0x39948e){logger[_0x4347('0x16')](_0x39948e);}logger['info']('goggleTTS\x20path',_0x4a8a9f[_0x4347('0x2b')]('.')[0x0]);return _0x4a8a9f[_0x4347('0x2b')]('.')[0x0];});};exports[_0x4347('0x48')]=function(_0x5b5b08,_0x22c39b,_0x45832b){return google[_0x4347('0x49')](_0x5b5b08,_0x22c39b,_0x45832b)['then'](function(_0x160e4f){logger[_0x4347('0x1a')](_0x160e4f['uri']);return rp(_0x160e4f);})[_0x4347('0x29')](function(_0x4bb5d2){var _0x1794ee='';var _0x165f22=0x0;try{fs[_0x4347('0x1d')](_0x5b5b08);}catch(_0x27f8ee){logger[_0x4347('0x16')](_0x27f8ee);}if(_0x4bb5d2&&_0x4bb5d2[_0x4347('0x4a')]){_0x1794ee=_0x4bb5d2[_0x4347('0x4a')][_0x4347('0x4b')](function(_0x34c971){return _0x34c971&&_0x34c971[_0x4347('0x4c')][0x0]&&_0x34c971[_0x4347('0x4c')][0x0]['transcript']?_0x34c971[_0x4347('0x4c')][0x0][_0x4347('0x4d')]:'';})[_0x4347('0x4e')]('\x0a');_0x165f22=_0x4bb5d2[_0x4347('0x4a')][_0x4347('0x4b')](function(_0xe05408){return _0xe05408&&_0xe05408[_0x4347('0x4c')][0x0]&&_0xe05408[_0x4347('0x4c')][0x0][_0x4347('0x4f')]?_0xe05408[_0x4347('0x4c')][0x0][_0x4347('0x4f')]:0x0;})['join']('\x0a');}logger[_0x4347('0x1a')](_0x4347('0x50'),_0x1794ee);logger[_0x4347('0x1a')](_0x4347('0x51'),_0x165f22);return{'transcript':_0x1794ee,'confidence':_0x165f22};})[_0x4347('0x52')](function(_0x3253ec){logger[_0x4347('0x16')](_0x4347('0x53'),_0x3253ec[_0x4347('0x15')],_0x3253ec[_0x4347('0x54')],_0x3253ec[_0x4347('0x55')]);});};exports['googleDialogflow']=function(_0x288ec0,_0x4a37b5,_0x576a2a,_0x117cf8){var _0x39c831=apiai(_0x4a37b5,{'language':_0x117cf8||'en'});return _0x39c831['textRequest'](_0x576a2a,{'sessionId':md5(_0x288ec0)})[_0x4347('0x29')](function(_0x174f99){logger[_0x4347('0x1a')](JSON['stringify'](_0x174f99));return{'source':_0x174f99['result']['source'],'resolvedQuery':_0x174f99[_0x4347('0x56')][_0x4347('0x57')],'action':_0x174f99[_0x4347('0x56')][_0x4347('0x58')],'actionIncomplete':_0x174f99[_0x4347('0x56')][_0x4347('0x59')],'speech':_0x174f99['result'][_0x4347('0x5a')]['speech'],'score':_0x174f99['result'][_0x4347('0x5b')],'statusCode':_0x174f99[_0x4347('0x5c')]['code'],'endConversation':_0x174f99[_0x4347('0x56')][_0x4347('0x5d')][_0x4347('0x5e')]||![],'isFallbackIntent':_0x174f99[_0x4347('0x56')][_0x4347('0x5d')]['isFallbackIntent']};});};exports[_0x4347('0x5f')]=function(_0x353293,_0x58cd67,_0x5a6028,_0xc586d,_0x2736ee,_0x89add1){var _0x1cacf4=_0xc586d[_0x4347('0x60')](/\\n/g,'\x0a');var _0x3673fa={'credentials':{'private_key':_0x1cacf4,'client_email':_0x5a6028}};var _0x5950af=new dialogflow['SessionsClient'](_0x3673fa);var _0x23edee=_0x5950af[_0x4347('0x61')](_0x58cd67,md5(_0x353293));var _0x27cefa={'session':_0x23edee,'queryInput':{'text':{'text':_0x2736ee,'languageCode':_0x89add1}}};return _0x5950af[_0x4347('0x62')](_0x27cefa)['then'](function(_0x58b44f){if(_0x58b44f&&_0x58b44f[_0x4347('0x44')]){logger[_0x4347('0x1a')](_0x4347('0x63'),JSON[_0x4347('0x3f')](_0x58b44f));var _0x10cfe9=_0x58b44f[0x0];if(_0x10cfe9){var _0xe0c58e={'action':_0x10cfe9[_0x4347('0x64')][_0x4347('0x58')],'allRequiredParamsPresent':_0x10cfe9['queryResult']['allRequiredParamsPresent'],'endConversation':_0x10cfe9[_0x4347('0x64')][_0x4347('0x65')]&&_0x10cfe9[_0x4347('0x64')]['diagnosticInfo'][_0x4347('0x66')]?_0x10cfe9[_0x4347('0x64')][_0x4347('0x65')][_0x4347('0x66')][_0x4347('0x67')]['boolValue']:![],'fulfillmentText':_0x10cfe9[_0x4347('0x64')][_0x4347('0x68')],'intentName':_0x10cfe9[_0x4347('0x64')][_0x4347('0x69')][_0x4347('0x54')],'intentDisplayName':_0x10cfe9[_0x4347('0x64')][_0x4347('0x69')]['displayName'],'isFallbackIntent':_0x10cfe9[_0x4347('0x64')][_0x4347('0x69')]['isFallback'],'languageCode':_0x10cfe9[_0x4347('0x64')]['languageCode'],'queryText':_0x10cfe9['queryResult'][_0x4347('0x6a')],'responseId':_0x10cfe9['responseId'],'score':_0x10cfe9[_0x4347('0x64')][_0x4347('0x6b')],'speech':_0x10cfe9[_0x4347('0x64')][_0x4347('0x68')],'providerResponse':JSON['stringify'](_0x58b44f)};return _0xe0c58e;}}});};exports['tildeASR']=function(_0x6eac24,_0x404ca1,_0x5bf0af,_0x4d915e){return tilde[_0x4347('0x49')](_0x6eac24,_0x404ca1,_0x5bf0af,_0x4d915e)[_0x4347('0x29')](function(_0x4f811f){try{fs[_0x4347('0x1d')](_0x6eac24);}catch(_0x47a0bc){logger[_0x4347('0x16')](_0x47a0bc);}logger[_0x4347('0x1a')](_0x4347('0x6c'),_0x4f811f[_0x4347('0x4d')]);logger['info']('Tilde\x20ASR\x20confidence',_0x4f811f['confidence']);return _0x4f811f;});};exports[_0x4347('0x6d')]=function(_0x22d743,_0x25eda2,_0xc16964,_0x3d432f,_0x4e24cb,_0x4ad0e6){var _0xa5d518=path['resolve'](__dirname,'tmp',rs[_0x4347('0x25')](0x4)+_0x4347('0x35'));var _0x574bc3;return aws[_0x4347('0x6e')](_0x22d743,_0x25eda2,_0xc16964,_0x3d432f,_0x4e24cb,_0x4ad0e6,_0xa5d518)[_0x4347('0x29')](function(){_0x574bc3=path['resolve'](__dirname,'tmp',rs[_0x4347('0x25')](0x4)+_0x4347('0x26'));return convertFile(_0xa5d518,_0x574bc3);})[_0x4347('0x29')](function(){try{fs[_0x4347('0x1d')](_0xa5d518);fs[_0x4347('0x39')](_0x574bc3,'777');}catch(_0x227618){logger[_0x4347('0x16')](_0x227618);}return _0x574bc3['split']('.')[0x0];});};exports[_0x4347('0x6f')]=function(_0x314d9b,_0x2dbac8,_0x411b96,_0x5f11a7,_0x4a2afb,_0x5a5d39){return aws[_0x4347('0x70')](_0x314d9b,_0x2dbac8,_0x411b96,_0x5f11a7,_0x4a2afb,_0x5a5d39)[_0x4347('0x29')](function(_0x2aeb9e){logger[_0x4347('0x1a')](JSON[_0x4347('0x3f')](_0x2aeb9e));return _0x2aeb9e;});};exports[_0x4347('0x71')]=function(_0x4ed72d,_0x13717b,_0x5ad7d0,_0x42ce08){var _0x2d4fe0=util['format'](_0x4347('0x72'),ISPEECH_API,_0x4ed72d,encodeURIComponent(_0x13717b),_0x5ad7d0,_0x42ce08);var _0x44a3cb=path['resolve'](__dirname,_0x4347('0x24'),rs[_0x4347('0x25')](0x4)+_0x4347('0x35'));var _0x78439b;return downloadFile(_0x2d4fe0,_0x44a3cb)[_0x4347('0x29')](function(){_0x78439b=path['resolve'](__dirname,'tmp',rs[_0x4347('0x25')](0x4)+_0x4347('0x26'));return convertFile(_0x44a3cb,_0x78439b);})[_0x4347('0x29')](function(){try{fs[_0x4347('0x1d')](_0x44a3cb);fs[_0x4347('0x39')](_0x78439b,_0x4347('0x2a'));}catch(_0x172bfb){logger['error'](_0x172bfb);}return _0x78439b['split']('.')[0x0];});};exports[_0x4347('0x73')]=function(_0x565afc,_0x1e9bbd,_0x36a833,_0x4fc60e){var _0x3b91a4=util['format']('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x1e9bbd,_0x36a833,base64Encode(_0x565afc),_0x4fc60e?util[_0x4347('0x74')]('model=%s',encodeURIComponent(_0x4fc60e)):_0x4347('0x75'));return uploadFile(_0x3b91a4)[_0x4347('0x29')](function(_0xef7dd0){return querystring[_0x4347('0xb')](_0xef7dd0);});};exports[_0x4347('0x76')]=function(_0xce98e3,_0x1d44b5){return sestek[_0x4347('0x77')](_0xce98e3,_0x1d44b5)[_0x4347('0x29')](function(_0x303334){logger[_0x4347('0x1a')](JSON[_0x4347('0x3f')](_0x303334));var _0x177f69={'speech':_0x303334[_0x4347('0x78')],'action':_0x303334[_0x4347('0x79')]?_0x303334['channelData'][_0x4347('0x7a')]:undefined,'actiondata':_0x303334[_0x4347('0x79')]?_0x303334[_0x4347('0x79')][_0x4347('0x7b')]:undefined};if(_0x303334['channelData']&&_0x303334[_0x4347('0x79')][_0x4347('0x7c')]){return base64Decode(_0x303334[_0x4347('0x79')][_0x4347('0x7c')][_0x4347('0x7d')],path[_0x4347('0x34')](__dirname,_0x4347('0x24'),rs[_0x4347('0x25')](0x4)+'.wav'))['then'](function(_0x16ffce){_0x177f69[_0x4347('0x7e')]=_0x16ffce;return _0x177f69;});}return _0x177f69;});};exports[_0x4347('0x7f')]=function(){return __dirname;};