【问题标题】:Malformed response error : empty speech response while making my agent格式错误的响应错误:使我的代理时出现空语音响应
【发布时间】:2019-05-19 12:32:17
【问题描述】:

我正在制作对话流应用程序,该应用程序将用户链接到与用户所说的数字相关的每个链接。

我得到了 google codelab 的实现代码并对其进行了编辑。

但是当我尝试使用 Card 和其他东西来创建可点击的 url 链接时,会发生“MalformedResponse: Failed to parse Dialogflow response into AppResponse because of empty speech response”。

我正在为此使用 Dialogflow InlineEditor。

尝试 app.buildRichResponse 但同样失败

这是我的 node.js 代码。

'use strict';

// Import the Dialogflow module from the Actions on Google client library.
const {dialogflow} = require('actions-on-google');

// Import the firebase-functions package for deployment.
const functions = require('firebase-functions');

// Instantiate the Dialogflow client.
const app = dialogflow({debug: true});

const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');

// Handle the Dialogflow intent named 'favorite color'.
// The intent collects a parameter named 'color'.
app.intent('getJobs', (conv, {number}) => {
    const jobNum = number;
    // Respond with the user's lucky number and end the conversation.
    if (number == 1) {
      conv.ask(new Card({
           title: `Title: this is a card title`,
           imageUrl: 'https://dialogflow.com/images/api_home_laptop.svg',
           text: `This is the body text of a card.  You can even use line\n  
    breaks and emoji! ????`,
           buttonText: 'This is a button',
           buttonUrl: 'https://docs.dialogflow.com/'
          }));

    } else if (number == 2) {
      conv.close('camera on');
    } else {
      conv.close('unknown number');
    }
});

//Set the DialogflowApp object to handle the HTTPS POST request.
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

【问题讨论】:

    标签: node.js dialogflow-es


    【解决方案1】:

    我认为问题是,当数字为 1 时,您只使用丰富的响应,这可能会导致“MalformedResponse:由于语音响应为空,无法将 Dialogflow 响应解析为 AppResponse”错误,因为没有任何助手可以用语音响应。如果没有简单的响应,您将无法使用丰富的响应。

    您还尝试同时使用actions-on-googledialogflow-fulfillmentlibraries。这也可能导致问题。你可以试试:

       function getJobs(agent) {
         agent.add(`This message is from Dialogflow's Cloud Functions for Firebase editor!`);
         agent.add(new Card({
             title: `Title: this is a card title`,
             imageUrl: 'https://developers.google.com/actions/images/badges/XPM_BADGING_GoogleAssistant_VER.png',
             text: `This is the body text of a card.  You can even use line\n  breaks and emoji! ?`,
             buttonText: 'This is a button',
             buttonUrl: 'https://assistant.google.com/'
           })
         ); 
    intentMap.set('getJobs', getJobs);
    

    const { dialogflow, BasicCard, Image, Button } = require('actions-on-google');
    app.intent('getJobs', (conv, {number}) => {
    conv.ask('This is simple response...',new BasicCard({
      text: `This is a basic card.`
      subtitle: 'This is a subtitle',
      title: 'Title: this is a title',
      buttons: new Button({
        title: 'This is a button',
        url: 'https://assistant.google.com/',
      }),
      image: new Image({
        url: 'https://example.com/image.png',
        alt: 'Image alternate text',
      }),
      display: 'CROPPED',
    }));
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多