Built motion from commit d9028345.|2.5.43
[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 _0x8d97=['null','generic','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','writeFileSync','googleASR','asr','uri','results','alternatives','transcript','join','confidence','googleASR\x20transcription','[%s]\x20%s:%s','message','googleDialogflow','textRequest','stringify','result','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','tildeASR','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','http','https','path','randomstring','sox','url','parse','util','./aws','./sestek','./tilde','../../../config/logger','agi','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','close','unlink','download\x20error','pipe','end','protocol','https:','host','data','wav','error\x20convert','info','finish\x20to\x20convert','start','tmp','.wav','base64','777','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','audioConfig','MP3','text:synthesize','POST','then','resolve','generate','.mp3','from','audioContent','writeFile','chmodSync','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','f.req=','jQ1olc'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8d97,0xcb));var _0x78d9=function(_0x153eb6,_0x5a291f){_0x153eb6=_0x153eb6-0x0;var _0x3855a7=_0x8d97[_0x153eb6];return _0x3855a7;};'use strict';var apiai=require(_0x78d9('0x0'));var BPromise=require(_0x78d9('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x78d9('0x2'));var https=require(_0x78d9('0x3'));var md5=require('md5');var path=require(_0x78d9('0x4'));var querystring=require('querystring');var rp=require('request-promise');var rs=require(_0x78d9('0x5'));var sox=require(_0x78d9('0x6'));var tts=require('google-tts-api');var urlParse=require(_0x78d9('0x7'))[_0x78d9('0x8')];var util=require(_0x78d9('0x9'));var aws=require(_0x78d9('0xa'));var google=require('./google');var sestek=require(_0x78d9('0xb'));var tilde=require(_0x78d9('0xc'));var logger=require(_0x78d9('0xd'))(_0x78d9('0xe'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x2bb6c4,_0x568b30){return new BPromise(function(_0x2c7907,_0x160682){var _0x2aea14=urlParse(_0x2bb6c4);var _0x10a545=_0x2aea14['protocol']==='https:'?https:http;var _0x3a72a9={'host':_0x2aea14['host'],'path':_0x2aea14[_0x78d9('0x4')],'headers':{'user-agent':_0x78d9('0xf')}};_0x10a545[_0x78d9('0x10')](_0x3a72a9,function(_0x3e4a37){if(_0x3e4a37[_0x78d9('0x11')]!==0xc8){logger[_0x78d9('0x12')](_0x78d9('0x13')+_0x2bb6c4+_0x78d9('0x14')+_0x3e4a37[_0x78d9('0x11')]+'\x20('+_0x3e4a37[_0x78d9('0x15')]+')');_0x160682(new Error(_0x78d9('0x13')+_0x2bb6c4+_0x78d9('0x14')+_0x3e4a37[_0x78d9('0x11')]+'\x20('+_0x3e4a37[_0x78d9('0x15')]+')'));return;}var _0x37a129=fs[_0x78d9('0x16')](_0x568b30);_0x37a129['on'](_0x78d9('0x17'),function(){logger['info']('finish\x20download\x20file');_0x37a129[_0x78d9('0x18')](_0x2c7907);});_0x37a129['on']('error',function(_0x2f5da0){fs[_0x78d9('0x19')](_0x568b30);logger[_0x78d9('0x12')](_0x78d9('0x1a'),_0x2f5da0);_0x160682(_0x2f5da0);});_0x3e4a37[_0x78d9('0x1b')](_0x37a129);})['on']('error',function(_0x3ac325){logger[_0x78d9('0x12')](_0x3ac325);_0x160682(_0x3ac325);})[_0x78d9('0x1c')]();});}function uploadFile(_0x232737){return new BPromise(function(_0x32aaa2,_0x297175){var _0x152511=urlParse(_0x232737);var _0x53f52e=_0x152511[_0x78d9('0x1d')]===_0x78d9('0x1e')?https:http;var _0x54c524={'host':_0x152511[_0x78d9('0x1f')],'path':_0x152511[_0x78d9('0x4')],'headers':{'user-agent':_0x78d9('0xf')}};_0x53f52e['get'](_0x54c524,function(_0x4488af){if(_0x4488af['statusCode']!==0xc8){_0x297175(new Error('request\x20to\x20'+_0x232737+_0x78d9('0x14')+_0x4488af[_0x78d9('0x11')]+'\x20('+_0x4488af['statusMessage']+')'));return;}var _0x2f73d9='';_0x4488af['on'](_0x78d9('0x20'),function(_0xbd618f){_0x2f73d9+=_0xbd618f;});_0x4488af['on'](_0x78d9('0x1c'),function(){_0x32aaa2(_0x2f73d9);});})['on'](_0x78d9('0x12'),function(_0x1388b5){_0x297175(_0x1388b5);})[_0x78d9('0x1c')]();});}function convertFile(_0x1a76c4,_0x51fb32){return new BPromise(function(_0x2e61bb,_0x3a1935){var _0x31bd6d=sox['transcode'](_0x1a76c4,_0x51fb32,{'sampleRate':0x1f40,'format':_0x78d9('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x31bd6d['on']('error',function(_0xb81ed8){logger['error'](_0x78d9('0x22'),_0xb81ed8);_0x3a1935(_0xb81ed8);});_0x31bd6d['on'](_0x78d9('0x1c'),function(){logger[_0x78d9('0x23')](_0x78d9('0x24'));_0x2e61bb();});_0x31bd6d[_0x78d9('0x25')]();});}function base64Decode(_0xf452a2,_0x1840a9){var _0x48134c=path['resolve'](__dirname,_0x78d9('0x26'),rs['generate'](0x4)+_0x78d9('0x27'));fs['writeFileSync'](_0x48134c,_0xf452a2,_0x78d9('0x28'));return convertFile(_0x48134c,_0x1840a9)['then'](function(){try{fs[_0x78d9('0x19')](_0x48134c);fs['chmodSync'](_0x1840a9,_0x78d9('0x29'));}catch(_0x469148){logger['error'](_0x469148);}return _0x1840a9[_0x78d9('0x2a')]('.')[0x0];});}function base64Encode(_0x42c407){var _0x2b891d=fs[_0x78d9('0x2b')](_0x42c407);return new Buffer(_0x2b891d)[_0x78d9('0x2c')]('base64');}exports['googleCloudTTS']=function(_0x7b59cb,_0x45881f,_0x507fff,_0x5b735d,_0x22fe55,_0x2d6d98){var _0x5353fb,_0x484f89;var _0x4e6eb0=_0x78d9('0x2d');var _0x30c7e4=_0x78d9('0x2e')+_0x7b59cb;var _0x1824c8={};if(_0x45881f===_0x78d9('0x2f')){_0x1824c8[_0x78d9('0x30')]={'ssml':_0x507fff};}else{_0x1824c8['input']={'text':_0x507fff};};_0x1824c8['voice']={'languageCode':_0x5b735d,'ssmlGender':_0x22fe55};_0x1824c8[_0x78d9('0x31')]={'audioEncoding':_0x78d9('0x32'),'sampleRateHertz':0x1f40};var _0x2b0f11={'url':_0x4e6eb0+_0x78d9('0x33')+_0x30c7e4,'method':_0x78d9('0x34'),'json':!![],'body':_0x1824c8};return rp(_0x2b0f11)[_0x78d9('0x35')](function(_0x3d2dd1){return new BPromise(function(_0x7f9a37,_0x53a26b){_0x5353fb=path[_0x78d9('0x36')](__dirname,_0x78d9('0x26'),rs[_0x78d9('0x37')](0x4)+_0x78d9('0x38'));var _0x4558c8=Buffer[_0x78d9('0x39')](_0x3d2dd1[_0x78d9('0x3a')],_0x78d9('0x28'));return fs[_0x78d9('0x3b')](_0x5353fb,_0x4558c8,function(_0x3e7ccc){_0x53a26b(_0x3e7ccc);},function(_0xd9e662){fs[_0x78d9('0x3c')](_0x5353fb,_0x78d9('0x29'));_0x7f9a37(_0xd9e662);});});})[_0x78d9('0x35')](function(_0x188893){_0x484f89=path['resolve'](__dirname,_0x78d9('0x26'),rs[_0x78d9('0x37')](0x4)+_0x78d9('0x27'));return convertFile(_0x5353fb,_0x484f89);})[_0x78d9('0x35')](function(){try{fs['unlink'](_0x5353fb);fs['chmodSync'](_0x484f89,'777');}catch(_0x4cc25d){logger[_0x78d9('0x12')](_0x4cc25d);}logger[_0x78d9('0x23')](_0x78d9('0x3d'),_0x484f89[_0x78d9('0x2a')]('.')[0x0]);return _0x484f89[_0x78d9('0x2a')]('.')[0x0];});};exports[_0x78d9('0x3e')]=function(_0x1e33ad,_0x4258be){var _0x15c422=_0x78d9('0x3f');var _0x5357a8,_0x3680b0;var _0x3bf8eb;var _0x2e3eda={'encoding':_0x78d9('0x40'),'method':_0x78d9('0x34'),'timeout':0x2710,'url':_0x15c422,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x78d9('0x41')+encodeURIComponent(JSON['stringify']([[[_0x78d9('0x42'),JSON['stringify']([_0x1e33ad,_0x4258be||'en',![],_0x78d9('0x43')]),null,_0x78d9('0x44')]]]))};return rp(_0x2e3eda)['then'](function(_0x2b161d){try{_0x3bf8eb=eval(_0x2b161d['slice'](0x5))[0x0][0x2];}catch(_0x35e621){throw new Error(_0x78d9('0x45')+_0x2b161d[_0x78d9('0x20')]);}if(!_0x3bf8eb){if(_0x1e33ad[_0x78d9('0x46')]>0xc8){throw new Error(_0x78d9('0x47'));}else{throw new Error('lang\x20\x22'+_0x4258be+_0x78d9('0x48'));}}try{_0x3bf8eb=eval(_0x3bf8eb)[0x0];}catch(_0x474df3){throw new Error(_0x78d9('0x45')+res[_0x78d9('0x20')]);}const _0x80a9d5=_0x3bf8eb;_0x5357a8=path[_0x78d9('0x36')](__dirname,_0x78d9('0x26'),rs[_0x78d9('0x37')](0x4)+_0x78d9('0x38'));fs[_0x78d9('0x49')](_0x5357a8,_0x3bf8eb,{'encoding':_0x78d9('0x28')});_0x3680b0=path[_0x78d9('0x36')](__dirname,'tmp',rs[_0x78d9('0x37')](0x4)+'.wav');return convertFile(_0x5357a8,_0x3680b0);})[_0x78d9('0x35')](function(){try{fs['unlink'](_0x5357a8);fs[_0x78d9('0x3c')](_0x3680b0,'777');}catch(_0x5a3907){logger[_0x78d9('0x12')](_0x5a3907);}logger[_0x78d9('0x23')]('goggleTTS\x20path',_0x3680b0[_0x78d9('0x2a')]('.')[0x0]);return _0x3680b0[_0x78d9('0x2a')]('.')[0x0];});};exports[_0x78d9('0x4a')]=function(_0x4db8e5,_0x57978a,_0x221251){return google[_0x78d9('0x4b')](_0x4db8e5,_0x57978a,_0x221251)[_0x78d9('0x35')](function(_0x1fc46a){logger[_0x78d9('0x23')](_0x1fc46a[_0x78d9('0x4c')]);return rp(_0x1fc46a);})['then'](function(_0x3621a9){var _0x2491b1='';var _0x4b8519=0x0;try{fs[_0x78d9('0x19')](_0x4db8e5);}catch(_0x276a4d){logger['error'](_0x276a4d);}if(_0x3621a9&&_0x3621a9['results']){_0x2491b1=_0x3621a9[_0x78d9('0x4d')]['map'](function(_0x5d83fc){return _0x5d83fc&&_0x5d83fc[_0x78d9('0x4e')][0x0]&&_0x5d83fc[_0x78d9('0x4e')][0x0][_0x78d9('0x4f')]?_0x5d83fc[_0x78d9('0x4e')][0x0][_0x78d9('0x4f')]:'';})[_0x78d9('0x50')]('\x0a');_0x4b8519=_0x3621a9[_0x78d9('0x4d')]['map'](function(_0x3ce71b){return _0x3ce71b&&_0x3ce71b[_0x78d9('0x4e')][0x0]&&_0x3ce71b['alternatives'][0x0][_0x78d9('0x51')]?_0x3ce71b[_0x78d9('0x4e')][0x0][_0x78d9('0x51')]:0x0;})[_0x78d9('0x50')]('\x0a');}logger[_0x78d9('0x23')](_0x78d9('0x52'),_0x2491b1);logger[_0x78d9('0x23')]('googleASR\x20confidence',_0x4b8519);return{'transcript':_0x2491b1,'confidence':_0x4b8519};})['catch'](function(_0x13bf6d){logger[_0x78d9('0x12')](_0x78d9('0x53'),_0x13bf6d[_0x78d9('0x11')],_0x13bf6d['name'],_0x13bf6d[_0x78d9('0x54')]);});};exports[_0x78d9('0x55')]=function(_0x85c72c,_0x301255,_0x3f1f3c,_0x5d174e){var _0x31e394=apiai(_0x301255,{'language':_0x5d174e||'en'});return _0x31e394[_0x78d9('0x56')](_0x3f1f3c,{'sessionId':md5(_0x85c72c)})[_0x78d9('0x35')](function(_0xcc143){logger[_0x78d9('0x23')](JSON[_0x78d9('0x57')](_0xcc143));return{'source':_0xcc143['result']['source'],'resolvedQuery':_0xcc143[_0x78d9('0x58')][_0x78d9('0x59')],'action':_0xcc143[_0x78d9('0x58')][_0x78d9('0x5a')],'actionIncomplete':_0xcc143[_0x78d9('0x58')][_0x78d9('0x5b')],'speech':_0xcc143[_0x78d9('0x58')][_0x78d9('0x5c')][_0x78d9('0x5d')],'score':_0xcc143[_0x78d9('0x58')][_0x78d9('0x5e')],'statusCode':_0xcc143[_0x78d9('0x5f')]['code'],'endConversation':_0xcc143[_0x78d9('0x58')][_0x78d9('0x60')][_0x78d9('0x61')]||![],'isFallbackIntent':_0xcc143[_0x78d9('0x58')][_0x78d9('0x60')][_0x78d9('0x62')]};});};exports['googleDialogflowV2']=function(_0x580d25,_0x356ca4,_0x1c86cd,_0x53605d,_0x53da50,_0x309b72){var _0x3e23a5=_0x53605d[_0x78d9('0x63')](/\\n/g,'\x0a');var _0x4a753d={'credentials':{'private_key':_0x3e23a5,'client_email':_0x1c86cd}};var _0x3072b4=new dialogflow[(_0x78d9('0x64'))](_0x4a753d);var _0x21b7e2=_0x3072b4[_0x78d9('0x65')](_0x356ca4,md5(_0x580d25));var _0x1877a4={'session':_0x21b7e2,'queryInput':{'text':{'text':_0x53da50,'languageCode':_0x309b72}}};return _0x3072b4[_0x78d9('0x66')](_0x1877a4)[_0x78d9('0x35')](function(_0x3f2efe){if(_0x3f2efe&&_0x3f2efe[_0x78d9('0x46')]){logger[_0x78d9('0x23')]('Dialogflow\x20V2\x20response:',JSON[_0x78d9('0x57')](_0x3f2efe));var _0x21ab52=_0x3f2efe[0x0];if(_0x21ab52){var _0x482eab={'action':_0x21ab52[_0x78d9('0x67')]['action'],'allRequiredParamsPresent':_0x21ab52['queryResult'][_0x78d9('0x68')],'endConversation':_0x21ab52[_0x78d9('0x67')][_0x78d9('0x69')]&&_0x21ab52[_0x78d9('0x67')][_0x78d9('0x69')][_0x78d9('0x6a')]?_0x21ab52[_0x78d9('0x67')]['diagnosticInfo'][_0x78d9('0x6a')][_0x78d9('0x6b')]['boolValue']:![],'fulfillmentText':_0x21ab52['queryResult'][_0x78d9('0x6c')],'intentName':_0x21ab52[_0x78d9('0x67')][_0x78d9('0x6d')]['name'],'intentDisplayName':_0x21ab52[_0x78d9('0x67')][_0x78d9('0x6d')][_0x78d9('0x6e')],'isFallbackIntent':_0x21ab52[_0x78d9('0x67')][_0x78d9('0x6d')][_0x78d9('0x6f')],'languageCode':_0x21ab52[_0x78d9('0x67')][_0x78d9('0x70')],'queryText':_0x21ab52['queryResult'][_0x78d9('0x71')],'responseId':_0x21ab52[_0x78d9('0x72')],'score':_0x21ab52[_0x78d9('0x67')]['intentDetectionConfidence'],'speech':_0x21ab52[_0x78d9('0x67')][_0x78d9('0x6c')],'providerResponse':JSON[_0x78d9('0x57')](_0x3f2efe)};return _0x482eab;}}});};exports[_0x78d9('0x73')]=function(_0x229c5a,_0x62a08a,_0x20e091,_0x7011d7){return tilde['asr'](_0x229c5a,_0x62a08a,_0x20e091,_0x7011d7)['then'](function(_0x1ee85e){try{fs[_0x78d9('0x19')](_0x229c5a);}catch(_0x437da2){logger[_0x78d9('0x12')](_0x437da2);}logger['info']('Tilde\x20ASR\x20transcription',_0x1ee85e['transcript']);logger['info'](_0x78d9('0x74'),_0x1ee85e['confidence']);return _0x1ee85e;});};exports[_0x78d9('0x75')]=function(_0x37346e,_0x23d801,_0x51fef3,_0x8c8feb,_0x6ef909,_0x15b55a){var _0x41f985=path[_0x78d9('0x36')](__dirname,_0x78d9('0x26'),rs[_0x78d9('0x37')](0x4)+_0x78d9('0x38'));var _0x445145;return aws['polly'](_0x37346e,_0x23d801,_0x51fef3,_0x8c8feb,_0x6ef909,_0x15b55a,_0x41f985)[_0x78d9('0x35')](function(){_0x445145=path[_0x78d9('0x36')](__dirname,_0x78d9('0x26'),rs[_0x78d9('0x37')](0x4)+_0x78d9('0x27'));return convertFile(_0x41f985,_0x445145);})[_0x78d9('0x35')](function(){try{fs[_0x78d9('0x19')](_0x41f985);fs['chmodSync'](_0x445145,_0x78d9('0x29'));}catch(_0x40c7b8){logger[_0x78d9('0x12')](_0x40c7b8);}return _0x445145[_0x78d9('0x2a')]('.')[0x0];});};exports[_0x78d9('0x76')]=function(_0x5b29db,_0x1bcba4,_0x460582,_0x88814,_0x34a4ac,_0x11c93d){return aws[_0x78d9('0x77')](_0x5b29db,_0x1bcba4,_0x460582,_0x88814,_0x34a4ac,_0x11c93d)[_0x78d9('0x35')](function(_0x31293b){logger[_0x78d9('0x23')](JSON[_0x78d9('0x57')](_0x31293b));return _0x31293b;});};exports[_0x78d9('0x78')]=function(_0x12d86c,_0x34a93b,_0x17a52a,_0x3327eb){var _0x2bc04b=util['format'](_0x78d9('0x79'),ISPEECH_API,_0x12d86c,encodeURIComponent(_0x34a93b),_0x17a52a,_0x3327eb);var _0x5ebf96=path[_0x78d9('0x36')](__dirname,_0x78d9('0x26'),rs['generate'](0x4)+_0x78d9('0x38'));var _0x4c434d;return downloadFile(_0x2bc04b,_0x5ebf96)[_0x78d9('0x35')](function(){_0x4c434d=path[_0x78d9('0x36')](__dirname,_0x78d9('0x26'),rs[_0x78d9('0x37')](0x4)+_0x78d9('0x27'));return convertFile(_0x5ebf96,_0x4c434d);})['then'](function(){try{fs[_0x78d9('0x19')](_0x5ebf96);fs[_0x78d9('0x3c')](_0x4c434d,_0x78d9('0x29'));}catch(_0xbd3394){logger[_0x78d9('0x12')](_0xbd3394);}return _0x4c434d[_0x78d9('0x2a')]('.')[0x0];});};exports['ispeechASR']=function(_0x58de1c,_0x33acdf,_0x1864ca,_0x425359){var _0x2ad262=util[_0x78d9('0x7a')](_0x78d9('0x7b'),ISPEECH_API,_0x33acdf,_0x1864ca,base64Encode(_0x58de1c),_0x425359?util[_0x78d9('0x7a')](_0x78d9('0x7c'),encodeURIComponent(_0x425359)):_0x78d9('0x7d'));return uploadFile(_0x2ad262)['then'](function(_0x54dff7){return querystring[_0x78d9('0x8')](_0x54dff7);});};exports[_0x78d9('0x7e')]=function(_0xabc2ff,_0x1433fd){return sestek[_0x78d9('0x7f')](_0xabc2ff,_0x1433fd)[_0x78d9('0x35')](function(_0x21a19e){logger[_0x78d9('0x23')](JSON['stringify'](_0x21a19e));var _0x4e1eae={'speech':_0x21a19e[_0x78d9('0x80')],'action':_0x21a19e[_0x78d9('0x81')]?_0x21a19e['channelData']['CustomAction']:undefined,'actiondata':_0x21a19e[_0x78d9('0x81')]?_0x21a19e[_0x78d9('0x81')][_0x78d9('0x82')]:undefined};if(_0x21a19e[_0x78d9('0x81')]&&_0x21a19e[_0x78d9('0x81')]['AudioFromTts']){return base64Decode(_0x21a19e[_0x78d9('0x81')][_0x78d9('0x83')][_0x78d9('0x84')],path['resolve'](__dirname,'tmp',rs[_0x78d9('0x37')](0x4)+_0x78d9('0x27')))[_0x78d9('0x35')](function(_0x3feba2){_0x4e1eae[_0x78d9('0x85')]=_0x3feba2;return _0x4e1eae;});}return _0x4e1eae;});};exports[_0x78d9('0x86')]=function(){return __dirname;};