740a1d6e8fa0350c1754f169eb962fe778c21ca1
[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 _0x876c=['bluebird','dialogflow','http','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','protocol','https:','host','WHAT_EVER','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','pipe','end','get','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','audioConfig','MP3','text:synthesize','POST','.mp3','from','audioContent','writeFile','then','googleCloudTTS\x20path','googleTTS','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','stringify','null','generic','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','uri','results','map','transcript','alternatives','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','message','googleDialogflow','textRequest','source','result','resolvedQuery','action','fulfillment','speech','score','status','code','metadata','isFallbackIntent','googleDialogflowV2','replace','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','intent','name','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','fulfillmentText','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x876c,0x1bf));var _0xc876=function(_0x1b357f,_0x1cc10d){_0x1b357f=_0x1b357f-0x0;var _0x5adbb4=_0x876c[_0x1b357f];return _0x5adbb4;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0xc876('0x0'));var dialogflow=require(_0xc876('0x1'));var fs=require('fs');var http=require(_0xc876('0x2'));var https=require('https');var md5=require(_0xc876('0x3'));var path=require(_0xc876('0x4'));var querystring=require(_0xc876('0x5'));var rp=require(_0xc876('0x6'));var rs=require(_0xc876('0x7'));var sox=require(_0xc876('0x8'));var tts=require(_0xc876('0x9'));var urlParse=require(_0xc876('0xa'))[_0xc876('0xb')];var util=require(_0xc876('0xc'));var aws=require(_0xc876('0xd'));var google=require(_0xc876('0xe'));var sestek=require(_0xc876('0xf'));var tilde=require(_0xc876('0x10'));var logger=require(_0xc876('0x11'))(_0xc876('0x12'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x2ff46e,_0x2cc95c){return new BPromise(function(_0x513b24,_0x4f31ba){var _0x1090d9=urlParse(_0x2ff46e);var _0x3d65de=_0x1090d9[_0xc876('0x13')]===_0xc876('0x14')?https:http;var _0x26cccd={'host':_0x1090d9[_0xc876('0x15')],'path':_0x1090d9[_0xc876('0x4')],'headers':{'user-agent':_0xc876('0x16')}};_0x3d65de['get'](_0x26cccd,function(_0x1df9f2){if(_0x1df9f2[_0xc876('0x17')]!==0xc8){logger[_0xc876('0x18')](_0xc876('0x19')+_0x2ff46e+_0xc876('0x1a')+_0x1df9f2[_0xc876('0x17')]+'\x20('+_0x1df9f2[_0xc876('0x1b')]+')');_0x4f31ba(new Error('request\x20to\x20'+_0x2ff46e+_0xc876('0x1a')+_0x1df9f2[_0xc876('0x17')]+'\x20('+_0x1df9f2['statusMessage']+')'));return;}var _0xeba937=fs[_0xc876('0x1c')](_0x2cc95c);_0xeba937['on'](_0xc876('0x1d'),function(){logger[_0xc876('0x1e')](_0xc876('0x1f'));_0xeba937[_0xc876('0x20')](_0x513b24);});_0xeba937['on']('error',function(_0x3b1b37){fs[_0xc876('0x21')](_0x2cc95c);logger[_0xc876('0x18')]('download\x20error',_0x3b1b37);_0x4f31ba(_0x3b1b37);});_0x1df9f2[_0xc876('0x22')](_0xeba937);})['on'](_0xc876('0x18'),function(_0x155098){logger['error'](_0x155098);_0x4f31ba(_0x155098);})[_0xc876('0x23')]();});}function uploadFile(_0x4b50aa){return new BPromise(function(_0x8f8094,_0x93ddd6){var _0x2be9c5=urlParse(_0x4b50aa);var _0x449efd=_0x2be9c5['protocol']===_0xc876('0x14')?https:http;var _0x146748={'host':_0x2be9c5['host'],'path':_0x2be9c5[_0xc876('0x4')],'headers':{'user-agent':_0xc876('0x16')}};_0x449efd[_0xc876('0x24')](_0x146748,function(_0xe85caa){if(_0xe85caa[_0xc876('0x17')]!==0xc8){_0x93ddd6(new Error(_0xc876('0x19')+_0x4b50aa+_0xc876('0x1a')+_0xe85caa[_0xc876('0x17')]+'\x20('+_0xe85caa[_0xc876('0x1b')]+')'));return;}var _0x38e69c='';_0xe85caa['on'](_0xc876('0x25'),function(_0x65c748){_0x38e69c+=_0x65c748;});_0xe85caa['on']('end',function(){_0x8f8094(_0x38e69c);});})['on'](_0xc876('0x18'),function(_0x2dffe3){_0x93ddd6(_0x2dffe3);})['end']();});}function convertFile(_0x3d51f9,_0x30df3d){return new BPromise(function(_0x52101b,_0x4a7b49){var _0x2f4961=sox[_0xc876('0x26')](_0x3d51f9,_0x30df3d,{'sampleRate':0x1f40,'format':_0xc876('0x27'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2f4961['on'](_0xc876('0x18'),function(_0x307bcf){logger['error'](_0xc876('0x28'),_0x307bcf);_0x4a7b49(_0x307bcf);});_0x2f4961['on'](_0xc876('0x23'),function(){logger['info'](_0xc876('0x29'));_0x52101b();});_0x2f4961[_0xc876('0x2a')]();});}function base64Decode(_0x2bee40,_0xceb561){var _0x1ac08d=path[_0xc876('0x2b')](__dirname,_0xc876('0x2c'),rs[_0xc876('0x2d')](0x4)+_0xc876('0x2e'));fs[_0xc876('0x2f')](_0x1ac08d,_0x2bee40,_0xc876('0x30'));return convertFile(_0x1ac08d,_0xceb561)['then'](function(){try{fs[_0xc876('0x21')](_0x1ac08d);fs[_0xc876('0x31')](_0xceb561,_0xc876('0x32'));}catch(_0xe07531){logger['error'](_0xe07531);}return _0xceb561[_0xc876('0x33')]('.')[0x0];});}function base64Encode(_0x2a5d6d){var _0x4828dc=fs[_0xc876('0x34')](_0x2a5d6d);return new Buffer(_0x4828dc)[_0xc876('0x35')](_0xc876('0x30'));}exports[_0xc876('0x36')]=function(_0x585636,_0x261950,_0x562ca4,_0x367c2d,_0x42e053,_0x56d255){var _0xece6ee,_0x947036;var _0x362ff7=_0xc876('0x37');var _0x54883a=_0xc876('0x38')+_0x585636;var _0x4ac987={};if(_0x261950===_0xc876('0x39')){_0x4ac987[_0xc876('0x3a')]={'ssml':_0x562ca4};}else{_0x4ac987['input']={'text':_0x562ca4};};_0x4ac987['voice']={'languageCode':_0x367c2d,'ssmlGender':_0x42e053};_0x4ac987[_0xc876('0x3b')]={'audioEncoding':_0xc876('0x3c'),'sampleRateHertz':0x1f40};var _0x555409={'url':_0x362ff7+_0xc876('0x3d')+_0x54883a,'method':_0xc876('0x3e'),'json':!![],'body':_0x4ac987};return rp(_0x555409)['then'](function(_0x456f20){return new BPromise(function(_0x3b50de,_0x5c68a9){_0xece6ee=path[_0xc876('0x2b')](__dirname,_0xc876('0x2c'),rs[_0xc876('0x2d')](0x4)+_0xc876('0x3f'));var _0x274d90=Buffer[_0xc876('0x40')](_0x456f20[_0xc876('0x41')],_0xc876('0x30'));return fs[_0xc876('0x42')](_0xece6ee,_0x274d90,function(_0x1598c9){_0x5c68a9(_0x1598c9);},function(_0x451bb9){fs['chmodSync'](_0xece6ee,_0xc876('0x32'));_0x3b50de(_0x451bb9);});});})[_0xc876('0x43')](function(_0x57eb5d){_0x947036=path[_0xc876('0x2b')](__dirname,'tmp',rs['generate'](0x4)+'.wav');return convertFile(_0xece6ee,_0x947036);})[_0xc876('0x43')](function(){try{fs['unlink'](_0xece6ee);fs[_0xc876('0x31')](_0x947036,_0xc876('0x32'));}catch(_0x12a066){logger[_0xc876('0x18')](_0x12a066);}logger[_0xc876('0x1e')](_0xc876('0x44'),_0x947036[_0xc876('0x33')]('.')[0x0]);return _0x947036[_0xc876('0x33')]('.')[0x0];});};exports[_0xc876('0x45')]=function(_0x3057f6,_0x1ef9be){var _0x4e5a4d='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x37bea7,_0x480a8c;var _0x258321;var _0x41b5fd={'encoding':_0xc876('0x46'),'method':'POST','timeout':0x2710,'url':_0x4e5a4d,'headers':{'Content-Type':_0xc876('0x47')},'body':_0xc876('0x48')+encodeURIComponent(JSON['stringify']([[[_0xc876('0x49'),JSON[_0xc876('0x4a')]([_0x3057f6,_0x1ef9be||'en',![],_0xc876('0x4b')]),null,_0xc876('0x4c')]]]))};return rp(_0x41b5fd)[_0xc876('0x43')](function(_0x431618){try{_0x258321=eval(_0x431618['slice'](0x5))[0x0][0x2];}catch(_0x370c43){throw new Error(_0xc876('0x4d')+_0x431618[_0xc876('0x25')]);}if(!_0x258321){if(_0x3057f6[_0xc876('0x4e')]>0xc8){throw new Error(_0xc876('0x4f'));}else{throw new Error(_0xc876('0x50')+_0x1ef9be+_0xc876('0x51'));}}try{_0x258321=eval(_0x258321)[0x0];}catch(_0x3e9551){throw new Error(_0xc876('0x4d')+res[_0xc876('0x25')]);}const _0x558d9b=_0x258321;_0x37bea7=path[_0xc876('0x2b')](__dirname,'tmp',rs[_0xc876('0x2d')](0x4)+'.mp3');fs[_0xc876('0x2f')](_0x37bea7,_0x258321,{'encoding':_0xc876('0x30')});_0x480a8c=path[_0xc876('0x2b')](__dirname,_0xc876('0x2c'),rs[_0xc876('0x2d')](0x4)+_0xc876('0x2e'));return convertFile(_0x37bea7,_0x480a8c);})[_0xc876('0x43')](function(){try{fs[_0xc876('0x21')](_0x37bea7);fs['chmodSync'](_0x480a8c,_0xc876('0x32'));}catch(_0x176d61){logger['error'](_0x176d61);}logger[_0xc876('0x1e')](_0xc876('0x52'),_0x480a8c[_0xc876('0x33')]('.')[0x0]);return _0x480a8c[_0xc876('0x33')]('.')[0x0];});};exports[_0xc876('0x53')]=function(_0x1b92c9,_0x49bddc,_0xdc0fef){return google[_0xc876('0x54')](_0x1b92c9,_0x49bddc,_0xdc0fef)[_0xc876('0x43')](function(_0x359070){logger['info'](_0x359070[_0xc876('0x55')]);return rp(_0x359070);})[_0xc876('0x43')](function(_0x478eef){var _0x4f99a2='';var _0x2f2707=0x0;try{fs[_0xc876('0x21')](_0x1b92c9);}catch(_0x2fbf55){logger['error'](_0x2fbf55);}if(_0x478eef&&_0x478eef[_0xc876('0x56')]){_0x4f99a2=_0x478eef[_0xc876('0x56')][_0xc876('0x57')](function(_0x385fcb){return _0x385fcb&&_0x385fcb['alternatives'][0x0]&&_0x385fcb['alternatives'][0x0][_0xc876('0x58')]?_0x385fcb[_0xc876('0x59')][0x0][_0xc876('0x58')]:'';})['join']('\x0a');_0x2f2707=_0x478eef['results']['map'](function(_0x19d30b){return _0x19d30b&&_0x19d30b[_0xc876('0x59')][0x0]&&_0x19d30b['alternatives'][0x0]['confidence']?_0x19d30b[_0xc876('0x59')][0x0][_0xc876('0x5a')]:0x0;})[_0xc876('0x5b')]('\x0a');}logger['info'](_0xc876('0x5c'),_0x4f99a2);logger['info'](_0xc876('0x5d'),_0x2f2707);return{'transcript':_0x4f99a2,'confidence':_0x2f2707};})[_0xc876('0x5e')](function(_0x1a146a){logger['error']('[%s]\x20%s:%s',_0x1a146a[_0xc876('0x17')],_0x1a146a['name'],_0x1a146a[_0xc876('0x5f')]);});};exports[_0xc876('0x60')]=function(_0x1fa709,_0x5871e2,_0x535c0a,_0x47e54e){var _0x59ff1b=apiai(_0x5871e2,{'language':_0x47e54e||'en'});return _0x59ff1b[_0xc876('0x61')](_0x535c0a,{'sessionId':md5(_0x1fa709)})[_0xc876('0x43')](function(_0x43963c){logger[_0xc876('0x1e')](JSON[_0xc876('0x4a')](_0x43963c));return{'source':_0x43963c['result'][_0xc876('0x62')],'resolvedQuery':_0x43963c[_0xc876('0x63')][_0xc876('0x64')],'action':_0x43963c['result'][_0xc876('0x65')],'actionIncomplete':_0x43963c[_0xc876('0x63')]['actionIncomplete'],'speech':_0x43963c[_0xc876('0x63')][_0xc876('0x66')][_0xc876('0x67')],'score':_0x43963c['result'][_0xc876('0x68')],'statusCode':_0x43963c[_0xc876('0x69')][_0xc876('0x6a')],'endConversation':_0x43963c['result'][_0xc876('0x6b')]['endConversation']||![],'isFallbackIntent':_0x43963c[_0xc876('0x63')]['metadata'][_0xc876('0x6c')]};});};exports[_0xc876('0x6d')]=function(_0x31cc95,_0x3ce0c8,_0x5bc39a,_0x10d888,_0x15b7d0,_0x55a55f){var _0xc8953=_0x10d888[_0xc876('0x6e')](/\\n/g,'\x0a');var _0x27cd90={'credentials':{'private_key':_0xc8953,'client_email':_0x5bc39a}};var _0x1c8159=new dialogflow['SessionsClient'](_0x27cd90);var _0x384063=_0x1c8159[_0xc876('0x6f')](_0x3ce0c8,md5(_0x31cc95));var _0x2ad0a1={'session':_0x384063,'queryInput':{'text':{'text':_0x15b7d0,'languageCode':_0x55a55f}}};return _0x1c8159[_0xc876('0x70')](_0x2ad0a1)[_0xc876('0x43')](function(_0x7ca158){if(_0x7ca158&&_0x7ca158[_0xc876('0x4e')]){logger[_0xc876('0x1e')](_0xc876('0x71'),JSON[_0xc876('0x4a')](_0x7ca158));var _0x405f2b=_0x7ca158[0x0];if(_0x405f2b){var _0x430532={'action':_0x405f2b[_0xc876('0x72')][_0xc876('0x65')],'allRequiredParamsPresent':_0x405f2b[_0xc876('0x72')][_0xc876('0x73')],'endConversation':_0x405f2b['queryResult'][_0xc876('0x74')]&&_0x405f2b['queryResult'][_0xc876('0x74')]['fields']?_0x405f2b['queryResult'][_0xc876('0x74')][_0xc876('0x75')]['end_conversation'][_0xc876('0x76')]:![],'fulfillmentText':_0x405f2b[_0xc876('0x72')]['fulfillmentText'],'intentName':_0x405f2b['queryResult'][_0xc876('0x77')][_0xc876('0x78')],'intentDisplayName':_0x405f2b['queryResult'][_0xc876('0x77')][_0xc876('0x79')],'isFallbackIntent':_0x405f2b[_0xc876('0x72')]['intent'][_0xc876('0x7a')],'languageCode':_0x405f2b[_0xc876('0x72')][_0xc876('0x7b')],'queryText':_0x405f2b['queryResult'][_0xc876('0x7c')],'responseId':_0x405f2b[_0xc876('0x7d')],'score':_0x405f2b[_0xc876('0x72')][_0xc876('0x7e')],'speech':_0x405f2b['queryResult'][_0xc876('0x7f')],'providerResponse':JSON[_0xc876('0x4a')](_0x7ca158)};return _0x430532;}}});};exports[_0xc876('0x80')]=function(_0xbc5a54,_0x1d2dba,_0x550af7,_0x4ccb2b){return tilde['asr'](_0xbc5a54,_0x1d2dba,_0x550af7,_0x4ccb2b)[_0xc876('0x43')](function(_0x3dce20){try{fs[_0xc876('0x21')](_0xbc5a54);}catch(_0x4e27d3){logger['error'](_0x4e27d3);}logger[_0xc876('0x1e')](_0xc876('0x81'),_0x3dce20[_0xc876('0x58')]);logger['info'](_0xc876('0x82'),_0x3dce20['confidence']);return _0x3dce20;});};exports[_0xc876('0x83')]=function(_0x2c8a66,_0x167e6f,_0x29b00b,_0x55a5d4,_0xfbe306,_0x1a5488){var _0x3d4cc7=path[_0xc876('0x2b')](__dirname,_0xc876('0x2c'),rs[_0xc876('0x2d')](0x4)+'.mp3');var _0x3c5be5;return aws[_0xc876('0x84')](_0x2c8a66,_0x167e6f,_0x29b00b,_0x55a5d4,_0xfbe306,_0x1a5488,_0x3d4cc7)[_0xc876('0x43')](function(){_0x3c5be5=path[_0xc876('0x2b')](__dirname,'tmp',rs[_0xc876('0x2d')](0x4)+_0xc876('0x2e'));return convertFile(_0x3d4cc7,_0x3c5be5);})[_0xc876('0x43')](function(){try{fs[_0xc876('0x21')](_0x3d4cc7);fs[_0xc876('0x31')](_0x3c5be5,_0xc876('0x32'));}catch(_0x4656d2){logger[_0xc876('0x18')](_0x4656d2);}return _0x3c5be5[_0xc876('0x33')]('.')[0x0];});};exports['awsLex']=function(_0x379a57,_0x242704,_0x4807aa,_0x32a0e5,_0xc5de47,_0x3bf447){return aws['lex'](_0x379a57,_0x242704,_0x4807aa,_0x32a0e5,_0xc5de47,_0x3bf447)[_0xc876('0x43')](function(_0x2d67d0){logger[_0xc876('0x1e')](JSON[_0xc876('0x4a')](_0x2d67d0));return _0x2d67d0;});};exports[_0xc876('0x85')]=function(_0x184d0a,_0x4fcd35,_0x294b18,_0x56d057){var _0x240b7a=util[_0xc876('0x86')](_0xc876('0x87'),ISPEECH_API,_0x184d0a,encodeURIComponent(_0x4fcd35),_0x294b18,_0x56d057);var _0x1ac39f=path['resolve'](__dirname,_0xc876('0x2c'),rs[_0xc876('0x2d')](0x4)+'.mp3');var _0x30f7e3;return downloadFile(_0x240b7a,_0x1ac39f)[_0xc876('0x43')](function(){_0x30f7e3=path['resolve'](__dirname,_0xc876('0x2c'),rs[_0xc876('0x2d')](0x4)+'.wav');return convertFile(_0x1ac39f,_0x30f7e3);})[_0xc876('0x43')](function(){try{fs[_0xc876('0x21')](_0x1ac39f);fs[_0xc876('0x31')](_0x30f7e3,_0xc876('0x32'));}catch(_0x23f2d5){logger['error'](_0x23f2d5);}return _0x30f7e3[_0xc876('0x33')]('.')[0x0];});};exports[_0xc876('0x88')]=function(_0x30c032,_0x204d9a,_0x459812,_0x56763c){var _0x36674e=util[_0xc876('0x86')](_0xc876('0x89'),ISPEECH_API,_0x204d9a,_0x459812,base64Encode(_0x30c032),_0x56763c?util[_0xc876('0x86')](_0xc876('0x8a'),encodeURIComponent(_0x56763c)):_0xc876('0x8b'));return uploadFile(_0x36674e)['then'](function(_0x223988){return querystring[_0xc876('0xb')](_0x223988);});};exports[_0xc876('0x8c')]=function(_0x4d9c4c,_0x5915bd){return sestek[_0xc876('0x8d')](_0x4d9c4c,_0x5915bd)[_0xc876('0x43')](function(_0x373567){logger['info'](JSON['stringify'](_0x373567));var _0x58054d={'speech':_0x373567[_0xc876('0x8e')],'action':_0x373567[_0xc876('0x8f')]?_0x373567['channelData'][_0xc876('0x90')]:undefined,'actiondata':_0x373567['channelData']?_0x373567[_0xc876('0x8f')][_0xc876('0x91')]:undefined};if(_0x373567[_0xc876('0x8f')]&&_0x373567[_0xc876('0x8f')][_0xc876('0x92')]){return base64Decode(_0x373567['channelData'][_0xc876('0x92')][_0xc876('0x93')],path['resolve'](__dirname,_0xc876('0x2c'),rs[_0xc876('0x2d')](0x4)+_0xc876('0x2e')))[_0xc876('0x43')](function(_0x3e085c){_0x58054d[_0xc876('0x94')]=_0x3e085c;return _0x58054d;});}return _0x58054d;});};exports['dirName']=function(){return __dirname;};