You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Actions-On-Google权限意图获取用户信息后无响应问题排查

解决Actions-On-Google权限意图无响应的踩坑记录

最近我在做Actions-On-Google的权限获取功能,想要通过Permission Intent获取用户的姓名和位置,写了这段代码:

const agent = new WebhookClient({request, response}); 
const {WebhookClient} = require('dialogflow-fulfillment'); 
const {Text, Card, Image, Suggestion, Payload} = require('dialogflow-fulfillment'); 

let payload = { 
  "systemIntent": { 
    "intent": "actions.intent.PERMISSION", 
    "data": { 
      "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec", 
      "optContext": "To deliver your order", 
      "permissions": [ "NAME", "DEVICE_PRECISE_LOCATION" ] 
    } 
  } 
}; 
agent.add('PLACEHOLDER_FOR_PERMISSION'); 
agent.add(new Payload(PLATFORMS.ACTIONS_ON_GOOGLE, payload)); 

按照预期,这个负载应该触发这样的权限请求提示:

为了配送您的订单,我需要从Google获取您的姓名和街道地址,可以吗?

我已经在Dialogflow里设置了带有actions_intent_PERMISSION事件的后续意图,可是不管用建议芯片还是其他方式触发这个事件,都完全没反应。折腾了两天都没找到问题所在,还好最后终于解决了,下面把问题和解决要点整理出来:

先附上我设置的意图相关截图:

触发permissions意图时的请求JSON:

{ 
  "responseId": "54a4be35-3d0b-4cc8-b036-46fab0d09361", 
  "queryResult": { 
    "queryText": "permissions", 
    "action": "permissions", 
    "parameters": {}, 
    "allRequiredParamsPresent": true, 
    "fulfillmentMessages": [ { "text": { "text": [ "" ] } } ], 
    "intent": { 
      "name": "projects/projectid/agent/intents/95237653-0af0-4d0c-9101-0cd8ee0db186", 
      "displayName": "permissions" 
    }, 
    "intentDetectionConfidence": 1, 
    "diagnosticInfo": {}, 
    "languageCode": "en" 
  }, 
  "originalDetectIntentRequest": { "payload": {} }, 
  "session": "projects/projectid/agent/sessions/13213e7f-dba5-4d0c-979a-f626f7ac4691" 
} 

fulfillment返回的响应JSON:

{ 
  "conversationToken": "[]", 
  "expectUserResponse": true, 
  "expectedInputs": [ { 
    "inputPrompt": {}, 
    "possibleIntents": [ { 
      "intent": "actions.intent.PERMISSION", 
      "inputValueData": { 
        "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec", 
        "permissions": [ "NAME", "DEVICE_PRECISE_LOCATION" ], 
        "optContext": "To locate you" 
      } 
    } ], 
    "speechBiasingHints": [ "$name-type", "$sports", "$gender" ] 
  } ], 
  "responseMetadata": { 
    "status": { "message": "Success (200)" }, 
    "queryMatchInfo": { "queryMatched": true, "intent": "95237653-0af0-4d0c-9101-0cd8ee0db186" } 
  } 
} 

当时模拟器对这个permissions意图的响应完全是空的,后来排查出几个关键问题,解决后功能就正常了:

问题解决核心要点

  • Actions-on-Google模拟器不靠谱:这个模拟器稳定性很差,没法用来可靠验证Webhook的工作状态,别被它的无响应误导了
  • Promise处理要到位:Agent必须等待所有Promise执行完成后才能进入下一步,之前就是因为Promise没正确解析,导致后续意图逻辑没触发
  • 换个测试方式:别依赖模拟器了,把Bot发布到助手目录的Alpha版本,用真实设备或者Alpha测试通道来验证,这才是靠谱的测试方法

内容的提问来源于stack exchange,提问作者Tarun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:44:13