@@ -106,9 +106,18 @@ module.exports = function(RED) {
106106 return session_id ;
107107 }
108108
109- function setContext ( msg , config , session_id ) {
109+ function checkAndSet ( source , target , field ) {
110+ if ( source [ field ] ) {
111+ target [ field ] = source [ field ] ;
112+ }
113+ }
114+
115+ function setContext ( msg , session_id ) {
110116 let context = null ;
111- if ( session_id ) {
117+ if ( msg . params ) {
118+ checkAndSet ( msg . params , params , 'context' ) ;
119+ }
120+ if ( ! context && session_id ) {
112121 let c = null
113122 c = node . context ( ) . flow . get ( 'context-' + session_id ) ;
114123 if ( c ) {
@@ -118,18 +127,58 @@ module.exports = function(RED) {
118127 return context ;
119128 }
120129
130+ function setAdditionalContext ( msg , params ) {
131+ if ( msg . additional_context ) {
132+ params . context = params . context ? params . context : { } ;
133+
134+ for ( prop in msg . additional_context ) {
135+ if ( msg . additional_context . hasOwnProperty ( prop ) ) {
136+ params . context [ prop ] = msg . additional_context [ prop ] ;
137+ }
138+ }
139+ }
140+ }
141+
142+ function setAssistantID ( msg , params , config ) {
143+ checkAndSet ( config , params , 'assistant_id' ) ;
144+ if ( msg . params ) {
145+ checkAndSet ( msg . params , params , 'assistant_id' ) ;
146+ }
147+ }
148+
149+ function setInputOptions ( msg , params , config ) {
150+ // Setting the flags this way works as their default
151+ // values are false.
152+ [ 'alternate_intents' ,
153+ 'return_context' ,
154+ 'restart' ,
155+ 'debug' ] . forEach ( ( f ) => {
156+ checkAndSet ( config , params . input . options , f ) ;
157+ if ( msg . params ) {
158+ checkAndSet ( msg . params , params . input . options , f ) ;
159+ }
160+ } ) ;
161+ }
162+
121163 function buildInputParams ( msg , config ) {
122164 let params = {
123- 'message_type' : 'text' ,
124- 'input' : msg . payload ,
165+ 'input' : {
166+ 'message_type' : 'text' ,
167+ 'text' : msg . payload ,
168+ 'options' : { }
169+ } ,
125170 'session_id' : setSessionID ( msg , config )
126171 } ;
127172
128- let context = setContext ( msg , config , params . session_id ) ;
173+ let context = setContext ( msg , params . session_id ) ;
129174 if ( context ) {
130175 params . context = context ;
131- // Look for additional context
132176 }
177+ setAdditionalContext ( msg , params ) ;
178+ setAssistantID ( msg , params , config ) ;
179+ setInputOptions ( msg , params , config ) ;
180+
181+ //verifyOptionalInputs(node, msg, config, params);
133182
134183 return Promise . resolve ( params ) ;
135184 }
0 commit comments