当前位置: 首页 > 知识库问答 >
问题:

dialogflow webhook实现代码失败

云长恨
2023-03-14

我正在尝试将Alexa与Dialogflow集成,并使用Dialogflow来满足意图请求。对于静态意图响应,我能够正确地获得响应,但当我尝试集成webhook以实现完整填充时,我得到以下异常对话框流:

TypeError:无法读取V2Agent上未定义的属性“source”。导出时,在新WebhookClient(/user\u code/node\u modules/dialogflow fulfillment/src/v2 agent.js:108:86)上处理请求(/user\u code/node\u modules/dialogflow fulfillment/src/dialogflow fulfillment.js:193:17)。dialogflowFirebaseFulfillment。功能。https。cloudFunction(/user\u code/node\u modules/firebase functions/lib/providers/https.js:26:47)上的onRequest(/user\u code/index.js:26:18)位于/var/tmp/worker/worker。js:684:7 at/var/tmp/worker/worker。js:668:9在流程中结合了TickCallback(内部/流程/下一步)。js:73:7在流程中_tickDomainCallback(内部/process/next_tick.js:128:9)

下面是我使用的代码为履行webook:

'use strict';

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

process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
   const agent = new WebhookClient({ request, response });
  console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
  console.log('Dialogflow Request body: ' + JSON.stringify(request.body));

  function orcacall () {
      response.setHeader('Content-Type','application/json');
      response.send(JSON.stringify({'speech':'myMessage','displayText':'myMessage','data':[],'contextOut':[]}));


  }
let intentMap = new Map();
  intentMap.set('Orca', orcacall);
  agent.handleRequest(intentMap);
});

共有2个答案

湛安宁
2023-03-14

也许现在发帖太晚了

你的orcacall()函数需要一个参数

console.log('Dialogflow Request body: ' + JSON.stringify(request.body));

  function orcacall (agent) { //Here agent is added
      response.setHeader('Content-Type','application/json');

此参数在使用参数和发布响应时非常有用。

季炯
2023-03-14

抱歉,在我发布了我的答案后,我才发现你已经从评论中得到了你的答案。

orcaCall函数需要一个代理参数。把它改成这样:

function orcacall (agent) {
  response.setHeader('Content-Type','application/json');
  response.send(JSON.stringify({'speech':'myMessage','displayText':'myMessage','data':[],'contextOut':[]}));  }
 类似资料:
  • 实现Run 实现Flock 前面提到进程的文件锁,实际上Run也用到了,可以试想下以下的场景。 用户A执行run pt-summary,由于本地已经缓存了所以会直接运行本地的脚本。同时用户B执行run -u pt-summary,加上-u或者--update参数后Run会从远端下载并运行最新的脚本。如果不加文件锁的话,用户A的行为就不可预测了,而文件锁很好得解决了这个问题。 具体使用方法如下,我们

  • #coding=utf-8 ''''' ''' from math import log import operator def createDataSet(): dataSet =[[1,1,'yes'], [1,1,'yes'], [1,0,'no'], [0,1

  • 代码入口 applicationContext-web.xml 文件路径: pinpoint/web/src/main/resources/applicationContext-web.xml 导入的配置文件有hbase.properties和jdbc.properties: <bean id="propertyConfigurer" class="org.springframework.bean

  • from numpy import * import time import matplotlib.pyplot as plt # calulate kernel value def calcKernelValue(matrix_x, sample_x, kernelOption): kernelType = kernelOption[0] numSa

  • 问题内容: 我正在创建使用C2DM推送通知的Android应用程序。但是我在创建PHP代码以使用c2dm发送消息时遇到问题。请指导我如何使用php代码发送消息。实际上,关于如何获取客户端身份验证令牌存在一个问题。我已经看到了http://code.google.com/android/c2dm/index.html#server网址,但是据此,我创建了android应用程序,我也获得了注册ID,并

  • 本文向大家介绍vue.js todolist实现代码,包括了vue.js todolist实现代码的使用技巧和注意事项,需要的朋友参考一下 案例知识点: 1.vue.js基础知识 2.HTML5 本地存储localstorage store.js代码 App.vue代码 总结 以上所述是小编给大家介绍的vue.js todolist实现代码,希望对的大家有所帮助!