1616
1717module . exports = function ( RED ) {
1818 const SERVICE_IDENTIFIER = 'text-to-speech' ;
19+
1920 var pkg = require ( '../../package.json' ) ,
20- TextToSpeechV1 = require ( 'watson-developer-cloud/text-to-speech/v1' ) ,
2121 serviceutils = require ( '../../utilities/service-utils' ) ,
2222 payloadutils = require ( '../../utilities/payload-utils' ) ,
2323 ttsutils = require ( './tts-utils' ) ,
@@ -113,35 +113,52 @@ module.exports = function(RED) {
113113
114114 function performTTS ( msg , params ) {
115115 var p = new Promise ( function resolver ( resolve , reject ) {
116- var tts = ttsutils . buildStdSettings ( apikey , username , password , endpoint ) ;
116+ let tts = ttsutils . buildStdSettings ( apikey , username , password , endpoint ) ;
117117
118- tts . synthesize ( params , function ( err , body , response ) {
119- if ( err ) {
120- reject ( err ) ;
121- } else {
118+ tts . synthesize ( params )
119+ . then ( ( body ) => {
122120 resolve ( body ) ;
123- }
124- } ) ;
121+ } )
122+ . catch ( ( err ) => {
123+ reject ( err ) ;
124+ } ) ;
125+
125126 } ) ;
126127 return p ;
127128 }
128129
129- function processResponse ( msg , body ) {
130- msg . speech = body ;
131- if ( config [ 'payload-response' ] ) {
130+ function processResponse ( msg , data ) {
131+ return new Promise ( function resolver ( resolve , reject ) {
132+ let body = data
133+ if ( data && data . result ) {
134+ body = data . result ;
135+ }
136+
137+ let tmpHolder = msg . payload ;
132138 msg . payload = body ;
133- }
134- return Promise . resolve ( ) ;
139+
140+ payloadutils . checkForStream ( msg )
141+ . then ( ( ) => {
142+ if ( ! config [ 'payload-response' ] ) {
143+ msg . speech = msg . payload ;
144+ msg . payload = tmpHolder ;
145+ }
146+ resolve ( ) ;
147+ } )
148+ . catch ( ( err ) => {
149+ reject ( err ) ;
150+ } ) ;
151+ } ) ;
135152 }
136153
137- this . on ( 'input' , function ( msg ) {
154+ this . on ( 'input' , function ( msg , send , done ) {
138155
139156 username = sUsername || this . credentials . username ;
140157 password = sPassword || this . credentials . password || config . password ;
141158 apikey = sApikey || this . credentials . apikey || config . apikey ;
142159
143160 endpoint = sEndpoint ;
144- if ( ( ! config [ 'default-endpoint' ] ) && config [ 'service-endpoint' ] ) {
161+ if ( config [ 'service-endpoint' ] ) {
145162 endpoint = config [ 'service-endpoint' ] ;
146163 }
147164
@@ -163,10 +180,12 @@ module.exports = function(RED) {
163180 } )
164181 . then ( function ( ) {
165182 node . status ( { } ) ;
166- node . send ( msg ) ;
183+ send ( msg ) ;
184+ done ( ) ;
167185 } )
168186 . catch ( function ( err ) {
169187 payloadutils . reportError ( node , msg , err ) ;
188+ done ( err ) ;
170189 } ) ;
171190 } )
172191 }
0 commit comments