0

我正在使用新的 Action on Google Java API构建一个应用程序。据我了解,在 Alexa 中处理帐户链接时,初始流程(当JSON 请求中的userId为null时)应重定向到登录表单以征得用户同意:

    @ForIntent("RawText")
    public ActionResponse launchRequestHandler(ActionRequest request) {

       String userId = request.getAppRequest().getUser().getUserId();
       String queryText = request.getWebhookRequest().getQueryResult().getQueryText();

       String speech = null;

            ResponseBuilder responseBuilder = getResponseBuilder(request);

            if (isBlank(userId) || GREETING.equalsIgnoreCase(queryText)) {

                speech = "I've sent a link to your Google Assistant app that will get you started and set up in just several simple steps.";

                responseBuilder.add(
                    new SignIn()
                        .setContext(speech));
                //...
                return responseBuilder.build();

然而,在 AoG 模拟器中进行测试时,我没有看到任何重定向正在执行。我看到以下错误:

在此处输入图像描述

我的帐户链接设置:

在此处输入图像描述

其中授权 URL 重定向到本地模拟身份验证服务,该服务应该显示登录表单。它是可访问的(通过localhost和通过 ssh 隧道,在这种情况下由serveo.net反向代理提供)。为什么谷歌不把我重定向到那里?

有人可以指导我如何在帐户链接流程中进行此初始握手,我在哪里可以看到从网络挂钩发送的登录意图应该触发的表单?

正如错误消息所暗示的那样,我宁愿不使用我的手机,因为我在 AoG 模拟器中测试的帐户与我在手机上的用户 ID 不同。

使用是什么意思Simulator as a Speaker?我的设置中缺少什么?

是否有另一个谷歌应用程序可以更好地模拟物理设备,类似于Alexa 的模拟器

4

1 回答 1

1

通常,您可以模拟帐户链接,通过选择“调试”选项卡,您会找到一个 url,将其复制粘贴到另一个选项卡上,您就可以链接您的帐户。链接完成后,转到模拟器并输入“取消”或“停止”,然后输入“与语音库对话”。

!不要按重置或更改版本,否则您必须重新链接您的应用

但是,最近谷歌已经从调试选项卡中删除了这个 url,我在任何地方都找不到它......

Simulator as a Speaker, Surface Dropdown 设置为 Phone, 你需要选择 Speaker ,

但是当你尝试那个时,你会收到这个错误......

Invocation Error
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. 

因此,目前,您无法使用模拟器测试需要帐户链接的操作。你可以用你的智能手机来做...

更新 2019-03-05:

谷歌在模拟器中添加了账户链接,现在更容易测试。 在此处输入图像描述

于 2019-02-20T09:55:00.063 回答