Google cloud platform 行动谷歌问题与阿尔法-贝塔测试和生产环境

Google cloud platform 行动谷歌问题与阿尔法-贝塔测试和生产环境,google-cloud-platform,dialogflow-es,actions-on-google,dialogflow-es-fulfillment,Google Cloud Platform,Dialogflow Es,Actions On Google,Dialogflow Es Fulfillment,我对谷歌和我的alpha-beta测试用户以及产品版本的操作有问题。我正在使用,当我在测试模式下使用我的应用程序时,使用模拟器或我的手机连接到我的开发帐户,一切正常,我没有任何问题 但是我已经用alpha-beta测试用户测试了我的项目。我将Opt-in链接发送给我的用户,他们可以接受成为alpha-beta测试人员,并且可以使用调用示例启动代理 当使用上下文时,Welcome intent启动正常,然后问题就会出现,因为在请求主体的日志中存在,但在实现中不存在 任何上下文都存在。我还更改了数组

我对谷歌和我的alpha-beta测试用户以及产品版本的操作有问题。我正在使用,当我在测试模式下使用我的应用程序时,使用模拟器或我的手机连接到我的开发帐户,一切正常,我没有任何问题

但是我已经用alpha-beta测试用户测试了我的项目。我将Opt-in链接发送给我的用户,他们可以接受成为alpha-beta测试人员,并且可以使用调用示例启动代理

当使用上下文时,Welcome intent启动正常,然后问题就会出现,因为在请求主体的日志中存在,但在实现中不存在

任何上下文都存在。我还更改了数组上下文,现在我只使用一个单词的参数。我也有同样的问题

package.json

{
  "name": "dialogflowCFPUPVASISTENTE",
  "description": "This is the dialogflowCFPUPVASISTENTE for a Dialogflow agents using Cloud Functions for Firebase",
  "version": "0.0.1",
  "private": true,
  "license": "Apache Version 2.0",
  "author": "Google Inc.",
  "engines": {
    "node": "8"
  },
  "scripts": {
    "start": "firebase serve --only functions:dialogflowCFPUPVASISTENTE",
    "deploy": "firebase deploy --only functions:dialogflowCFPUPVASISTENTE"
  },
  "dependencies": {
    "actions-on-google": "^2.2.0",
    "firebase-admin": "^5.13.1",
    "firebase-functions": "^2.0.2",
    "dialogflow": "^0.6.0",
    "dialogflow-fulfillment": "^0.6.0",
    "axios": "^0.18.0",
    "i18next": "^15.0.5",
    "moment": "^2.24.0",
    "crypto-js": "^4.0.0",
    "google-auth-library": "^5.10.0"
  }
} 
index.js

 const numero = agent.parameters.numero;
conole.log(numero);
console.log('prueba6666666 cursos1 context');


//prueba
let contexto_busqueda = agent.context.get('busqueda1');
console.log(contexto_busqueda);  //HERE is UNDEFINED WHEN USE TESTER PHONE
let busqueda = contexto_busqueda.parameters.busqueda;
带有上下文“busqueda1”简单参数“busqueda”的dialogflowFirebaseFulfillment(请求正文)

带有上下文“busqueda1”简单参数“busqueda”的dialogflowFirebaseFulfillment(请求正文)正在工作

{
textPayload: "Dialogflow Request body: {"responseId":"a3703a6d-9fca-4e4d-91f3-ecb58212a0f3-eec93b43","queryResult":{"queryText":"el curso 3","action":"MasInfoIntent","parameters":{"numero":3},"allRequiredParamsPresent":true,"outputContexts":[{"name":"projects/cfpupv-ojcaew/agent/sessions/ABwppHEYyiNzdo2qmZnOOb7FKufwyuTJ6tetAC7KkGYLp7PBEleCLaO6QIrC91Ql1a9DgWormHN_HNVb8Q/contexts/enviar_email1","lifespanCount":5,"parameters":{"idtoken":"xxxxx","palabra":"java","palabra.original":"java","numero":3,"numero.original":"3"}},{"name":"projects/cfpupv-ojcaew/agent/sessions/ABwppHEYyiNzdo2qmZnOOb7FKufwyuTJ6tetAC7KkGYLp7PBEleCLaO6QIrC91Ql1a9DgWormHN_HNVb8Q/contexts/info_curso1","lifespanCount":5,"parameters":{"numero":3,"numero.original":"3"}},{"name":"projects/cfpupv-ojcaew/agent/sessions/ABwppHEYyiNzdo2qmZnOOb7FKufwyuTJ6tetAC7KkGYLp7PBEleCLaO6QIrC91Ql1a9DgWormHN_HNVb8Q/contexts/actions_capability_screen_output","parameters":{"numero":3,"numero.original":"3"}},{"name":"projects/cfpupv-ojcaew/agent/sessions/ABwppHEYyiNzdo2qmZnOOb7FKufwyuTJ6tetAC7KkGYLp7PBEleCLaO6QIrC91Ql1a9DgWormHN_HNVb8Q/contexts/actions_capability_account_linking","parameters":{"numero":3,"numero.original":"3"}},{"name":"projects/cfpupv-ojcaew/agent/sessions/ABwppHEYyiNzdo2qmZnOOb7FKufwyuTJ6tetAC7KkGYLp7PBEleCLaO6QIrC91Ql1a9DgWormHN_HNVb8Q/contexts/actions_capability_media_response_audio","parameters":{"numero":3,"numero.original":"3"}},{"name":"projects/cfpupv-ojcaew/agent/sessions/ABwppHEYyiNzdo2qmZnOOb7FKufwyuTJ6tetAC7KkGYLp7PBEleCLaO6QIrC91Ql1a9DgWormHN_HNVb8Q/contexts/actions_capability_audio_output","parameters":{"numero":3,"numero.original":"3"}},{"name":"projects/cfpupv-ojcaew/agent/sessions/ABwppHEYyiNzdo2qmZnOOb7FKufwyuTJ6tetAC7KkGYLp7PBEleCLaO6QIrC91Ql1a9DgWormHN_HNVb8Q/contexts/google_assistant_input_type_voice","parameters":{"numero":3,"numero.original":"3"}},{"name":"projects/cfpupv-ojcaew/agent/sessions/ABwppHEYyiNzdo2qmZnOOb7FKufwyuTJ6tetAC7KkGYLp7PBEleCLaO6QIrC91Ql1a9DgWormHN_HNVb8Q/contexts/busqueda1","lifespanCount":4,"parameters":{"palabra":"java","palabra.original":"java","busqueda":"java","numero":3,"numero.original":"3"}},{"name":"projects/cfpupv-ojcaew/agent/sessions/ABwppHEYyiNzdo2qmZnOOb7FKufwyuTJ6tetAC7KkGYLp7PBEleCLaO6QIrC91Ql1a9DgWormHN_HNVb8Q/contexts/__system_counters__","parameters":{"no-input":0,"no-match":0,"numero":3,"numero.original":"3"}}],"intent":{"name":"projects/cfpupv-ojcaew/agent/intents/b74cc78e-8c1c-420e-ba0d-3b6da6e18dd9","displayName":"MasInfoIntent"},"intentDetectionConfidence":1,"languageCode":"es"},"originalDetectIntentRequest":{"source":"google","version":"2","payload":{"user":{"locale":"es-ES","lastSeen":"2020-04-24T12:07:58Z","idToken":"xxxxx","userVerificationStatus":"VERIFIED"},"conversation":{"conversationId":"ABwppHEYyiNzdo2"
insertId: "000001-3770d84b-b3e1-4610-a4e1-91f9c27573a5"
resource: {
type: "cloud_function"
labels: {3}
}
timestamp: "2020-04-24T12:08:09.311Z"
severity: "INFO"
labels: {
execution_id: "0hxf6o3oumx8"
}
logName: "projects/cfpupv-ojcaew/logs/cloudfunctions.googleapis.com%2Fcloud-functions"
trace: "projects/cfpupv-ojcaew/traces/ee0e462e5b7fcab9b45d7ef9acdcebe8"
receiveTimestamp: "2020-04-24T12:08:10.552786312Z"
}
TypeError:无法读取未定义的属性“参数” 在masInfo(/srv/index.js:122:29) 在WebhookClient.handleRequest(/srv/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:313:44) 在exports.dialogflowFirebaseFulfillment.functions.https.onRequest(/srv/index.js:173:9)处 在cloudFunction(/srv/node_modules/firebase functions/lib/providers/https.js:57:9) at/worker/worker.js:783:7 at/worker/worker.js:766:11 at_combinedTickCallback(内部/流程/下一步勾选js:132:7) 在进程中。_tickDomainCallback(内部/process/next_tick.js:219:9)”

我认为这是谷歌云平台的权限问题。有什么想法吗

我是否需要alpha tester和production的其他权限才能使用上下文

如果我使用其他alpha测试仪,项目将无法工作,因为尽管程序中的googlecloud平台的请求体中存在dialogflow上下文,但它是未定义的。 我是否必须在谷歌的alpha测试或生产中使用该程序


您能帮助我吗?

您可能达到了上下文的最大大小,因为您正在存储大量信息。我无法找到上下文的文档限制,但我认为值得尝试使用较小的参数计数来重现该问题,以查看它是否成功。

您可能达到了上下文的最大大小,因为您正在存储大量信息。我还没有找到上下文的文档限制,但我认为值得尝试使用较小的参数计数来重现问题,看看它是否成功。

看起来参数“listado”的值是JavaScript数组。指示映射中的值在某些有限的情况下应该是复合类型(即另一个映射),但通常应该是字符串


因此,当您认为您正在设置一个数组时——当它被读回时,由于它不是一个字符串,它可能被清空,或者整个上下文被认为是无效的。

看起来参数“listado”有一个JavaScript数组作为值。指示映射中的值在某些有限的情况下应该是复合类型(即另一个映射),但通常应该是字符串


因此,当您认为正在设置一个数组时——当它被读回时,由于它不是字符串,所以可能会被清空,或者整个上下文被视为无效。

谷歌助手支持行动的答案:

感谢您提供所需信息,并将我的帐户添加为Alpha测试员。基于这些,我们可以理解“parameters”属性导致操作崩溃。在检查提供的代码片段时,我们注意到您使用了“agent”而不是“conv”。您可以做的是将“代理”更新为“conv”。这是因为代理更多地用于Dialogflow的其他集成。这也与Dialogflow团队进行了协调,他们也提出了同样的建议。请参考下面的代码片段,了解如何直接或在webhook的上下文中获取参数值

// Handle the Dialogflow intent named 'Curso Intent' without context.
// The intent collects a parameter named 'numero'.
app.intent('Curso Intent', (conv, {numero}) => {
    const numero = numero;
});


// Handle the Dialogflow intent named 'Curso Intent' with context "curso_out".
// The intent collects a parameter named 'numero'.
app.intent('Curso Intent', (conv, {conv}) => {
    const cCursoOut = conv.contexts.get('curso_out');
    const pCursoOut = cCursoOut.parameters;
    const numero = pCursoOut.numero;
});
使用“conv”项目可以完美地工作


非常感谢您

行动回复谷歌助手支持:

感谢您提供所需信息,并将我的帐户添加为Alpha测试员。基于这些,我们可以理解“parameters”属性导致操作崩溃。在检查提供的代码片段时,我们注意到您使用了“agent”而不是“conv”。您可以做的是将“代理”更新为“conv”。这是因为代理更多地用于Dialogflow的其他集成。这也与Dialogflow团队进行了协调,他们也提出了同样的建议。请参考下面的代码片段,了解如何直接或在webhook的上下文中获取参数值

// Handle the Dialogflow intent named 'Curso Intent' without context.
// The intent collects a parameter named 'numero'.
app.intent('Curso Intent', (conv, {numero}) => {
    const numero = numero;
});


// Handle the Dialogflow intent named 'Curso Intent' with context "curso_out".
// The intent collects a parameter named 'numero'.
app.intent('Curso Intent', (conv, {conv}) => {
    const cCursoOut = conv.contexts.get('curso_out');
    const pCursoOut = cCursoOut.parameters;
    const numero = pCursoOut.numero;
});
使用“conv”项目可以完美地工作


非常感谢你

嗨!欢迎来到stackoverflow。你能提供一些更多的信息,比如什么有效,什么无效的截图吗?这有助于我们为您提供答案。有关更多信息,请参阅如何提出好问题部分。嗨,维克多,谢谢你提供你正在使用的代码。查看代码时,似乎cursos上下文不可用或已过期。对于每个设备,这通常都可以正常工作。在设置上下文之前,我看到一个
if(results!==null&&results.length>0)
语句。您确定在使用手机时,上下文是由buscarCursos函数设置的吗?嗨,Jordi,我已经编写了dialogflowFirebaseFulfillment(请求正文)的代码,然后我调用了masInfo函数“el Curso2”,您可以看到上下文是使用