TypeError:agent.intent不是export.dialogflowFirebaseFulfillment.functions.https.onRequest上的函数

时间:2018-11-20 12:15:56

标签: dialogflow actions-on-google

我正在尝试使用Google行动木马显示一些项目,以处理点击动作,我需要使用intent('actions.intent.OPTION',(?,?,?))函数,但是导致出现以下错误,

ERROR:

TypeError: agent.intent is not a function at exports.dialogflowFirebaseFulfillment.functions.https.onRequest

代码是

const functions = require('firebase-functions');
const {
    WebhookClient
} = require('dialogflow-fulfillment');
const {
    Image,
    Carousel,
    BrowseCarousel,
    BrowseCarouselItem,
} = require('actions-on-google');
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {

  const agent = new WebhookClient({
    request,
    response
  });
  agent.requestSource = agent.ACTIONS_ON_GOOGLE;
  console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
  console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
  // Run the proper function handler based on the matched Dialogflow intent name
  let intentMap = new Map();
  intentMap.set('Welcome Intent', welcome);
  intentMap.set('Default Fallback Intent', fallback);
  intentMap.set('video.search', searchQuery);
  // intentMap.set('your intent name here', googleAssistantHandler);
  agent.handleRequest(intentMap);

  agent.action('actions.intent.OPTION', (conv, params, option) => {
    let response = 'You did not select any item';
    if (option) {
        response = 'You have chosen: ' + option;
    }
    conv.ask(response);
  });
}

如果您在这里缺少任何物品,请提供帮助?

另外,我需要触发深层链接,从意图处理方法中,有什么方法可以从此处触发显式深层链接意图URI?

1 个答案:

答案 0 :(得分:1)

该错误消息似乎很奇怪,但看起来您是从Google文档中复制了代码但未阅读其余信息,并试图将其更改为backend lf_was_9080 acl auth_lf_was http_auth(lf_was_auth_list) http-request auth realm lf_was_auth_list if !auth_lf_was #mode tcp server lf_was_9080 10.85.200.158:9080/lf4html/login.jsp check redirect code 301 location http://10.85.200.158:9080/lf4html/login.jsp frontend http-in bind *:80 #Configure SSL & Forward Headers bind *:443 ssl crt /etc/ssl/my.platform.com reqadd X-Forwarded-Proto:\ https reqadd X-Forwarded-Port:\ 443 acl lf_was_9080_in hdr(host) -i sys1204.my.platform.com use_backend lf_was_9080 if lf_was_9080_in

问题在于您正在将agent.action视为一个函数-事实并非如此。 This is a property包含在“意图”的“参数”部分中设置的“操作”的名称。

通过Dialogflow处理agent.action是通过创建一个包含事件 actions.intent.OPTION且没有训练短语的Intent。像这样:

enter image description here

然后,您将拥有一个处理“ input.option”意图的处理程序(使用我在示例中使用的名称),就像处理其他意图处理程序一样。