public prepareStream()

in src/js/server/dialogflow.ts [118:173]


    public prepareStream(audio: any, cb:Function){
      const initialStreamRequest = {
        session: this.sessionPath,
        queryParams: {
          session: this.sessionClient.sessionPath(
              this.projectId, this.sessionId),
        },
        queryInput: {
          audioConfig: {
            sampleRateHertz: this.sampleRateHertz,
            audioEncoding: this.encoding,
            languageCode: this.languageCode,
          },
          singleUtterance: this.singleUtterance
        },
        outputAudioConfig: {
          audioEncoding: 'OUTPUT_AUDIO_ENCODING_LINEAR_16',
          sampleRateHertz: 48000,
          synthesizeSpeechConfig: {
            voice: {
              ssmlGender: 'SSML_VOICE_GENDER_FEMALE'
            },
            speakingRate: 1.5,
            pitch: 7
          }
        }
      };

      // Create a stream for the streaming request.
      this.detectStreamCall = this.sessionClient
      .streamingDetectIntent()
        .on('error', (e: any) => {
          console.log(e);
        }).on('data', (data: any) => {
          if (data.recognitionResult) {
            console.log(
              `Intermediate transcript:
              ${data.recognitionResult.transcript}`
            );
          } else {
              console.log(`Detected intent:`);
              console.log(data.outputAudio);
              cb(data.outputAudio);
          }
        }).on('end', () => {
          console.log('on end');
        });
        
        // Write the initial stream request to config for audio input.
        if(this.isInitialRequest) {
          this.detectStreamCall.write(initialStreamRequest);
        }

        // create a wav file
        this.fileWriter.write(audio);
    }