Использование выполнения диалогового потока для вызова API Spotify для воспроизведения песни, выбранной из базы данных Firebase - PullRequest
0 голосов
/ 09 июля 2019

Я довольно далеко со своим проектом по выбору песен на основе эмоций пользователя с помощью помощника Google.У меня есть код ниже, который обрабатывает выполнение, когда пользователь просит грустную песню.В настоящее время он проверяет базу данных на наличие песен с уровнем эмоций выше 0,5, а затем передает имя песни пользователю.

Мне интересно, как бы я тогда проиграл эту песню, используя API Spotify в качестве конечной точки.Кто-нибудь знает, как я мог бы сделать это в разделе выполнения моего приложения потока диалога?Я не видел ни одного примера в Интернете, поэтому я не знаю, возможно ли это вообще.Если нет, есть ли другой способ, который я могу использовать для воспроизведения песен с помощью помощника Google?

'use strict';

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const {WebhookClient} = require('dialogflow-fulfillment');

admin.initializeApp({
  credential: admin.credential.applicationDefault(),
  databaseURL: 'ws://mood-magic-four-ptwvjb.firebaseio.com/'
});

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  const agent = new WebhookClient({ request, response });	

  
  
  function playSadSong (agent) {
    // Get the database collection 'dialogflow' and document 'agent'
    var randomNumber = Math.floor(Math.random() * 2) + 1; 
   	return admin.database().ref(('`${randomNumber}`') ).once('value').then((snapshot)  => {
      const song = snapshot.child('song').val();
      const artist = snapshot.child('artist').val();
      
      if(song !== null && snapshot.child('sadness').val() > 0.5){ 
        agent.add(`I will play ${song} by ${artist}`);
      }
      else {
        agent.add(`I couldn't find anything right now...`);
      }
   });
  }
  
    

  // Map from Dialogflow intent names to functions to be run when the intent is matched
  let intentMap = new Map();
  intentMap.set('-Sad - yes', playSadSong);
  
  agent.handleRequest(intentMap);
});
...