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

未集成Dialogflow调用Google Home模拟器应用失败的技术咨询

关于不集成Dialogflow使用Google Home模拟器调用应用的问题解答

首先明确说:完全可以不集成Dialogflow,直接通过自定义Webhook(也就是你配置的Fulfillment URL)让Google Home模拟器调用你的应用,这是Actions on Google支持的官方方案之一,你的方向是对的。

关于模拟器报错的原因

你看到的报错提示:

"You cannot use standard Google Assistant features in the Simulator. If you want to try them, use Google Assistant on your phone or other compatible devices."

这个提示有点误导性——它不一定说明你的配置有问题,反而更可能是模拟器本身的局限性:Google Home模拟器对某些自定义Action的支持不够完善,尤其是当你的响应格式不符合严格规范时,会触发这类模糊的报错。当然,也有可能是你的Webhook返回的内容有问题,导致模拟器无法正确处理。

你的PHP代码需要调整的地方

我看了你的代码片段,发现几个关键问题,这可能是导致调用失败的核心原因:

  1. 缺少Content-Type: application/json响应头:Google Assistant要求Webhook必须返回JSON格式的响应,并且明确设置这个头,否则无法解析。
  2. 缺少顶层的payload.google字段:这是Actions on Google响应规范中必须的部分,用来告诉Assistant如何渲染你的回复内容。
  3. 没有正确输出JSON(如果你的sendMessage函数只是构造数组,没有编码为JSON并输出的话,也会导致失败)。

下面是修正后的完整PHP示例:

<?php
// 必须设置正确的响应头
header('Content-Type: application/json');

// 构造符合规范的响应结构
$response = [
    'conversationToken' => '{"data":{}}',
    'userStorage' => '{"data":{}}',
    'expectUserResponse' => true,
    'expectedInputs' => [
        [
            'inputPrompt' => [
                'richInitialPrompt' => [
                    'items' => [
                        [
                            'simpleResponse' => [
                                'textToSpeech' => 'Hi!'
                            ]
                        ]
                    ]
                ]
            ],
            'possibleIntents' => [
                [
                    'intent' => 'actions.intent.TEXT'
                ]
            ]
        ]
    ],
    'payload' => [
        'google' => [
            'expectUserResponse' => true,
            'richResponse' => [
                'items' => [
                    [
                        'simpleResponse' => [
                            'textToSpeech' => 'Hi!'
                        ]
                    ]
                ]
            ]
        ]
    ]
];

// 输出JSON编码后的响应
echo json_encode($response, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
?>

后续排查步骤

  • 先测试Webhook本身:用Postman或curl给你的Fulfillment URL发送POST请求(请求体可以是空,或者模拟器发送的测试请求),检查返回的JSON是否和上面示例的结构一致,并且HTTP状态码是200。
  • 检查Actions Console配置:确保你的Action的Invocation Name(触发词)正确,并且已经发布到测试版(模拟器需要你用测试账号访问)。
  • 尝试真实设备测试:按照报错提示,用手机上的Google Assistant测试你的Action——很多时候模拟器的兼容性问题在真实设备上不会出现,能帮你验证Webhook是否真的正常工作。
  • 查看Actions Console日志:在Console的"Test"标签页下找到"Logs",这里能看到模拟器发送的请求详情和你的Webhook返回的响应,通过日志可以快速定位格式错误或逻辑问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:04:16