我正在使用the new 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
反向代理提供)。为什么Google不会将我重定向到那里?
有人可以指导我如何在帐户链接流程中执行此初始握手,在哪里可以看到从Web挂钩发送的登录意图应该触发的形式?
我不想使用我的手机,因为错误消息似乎暗示,因为我在AoG模拟器中测试的帐户与我在手机上的用户ID不同。
使用Simulator as a Speaker
是什么意思?我的设置中缺少什么?
还有其他Google应用可以更好地模拟物理设备,类似于Alexa's simulator吗?
通常情况下,您可以模拟帐户关联,通过选择调试选项卡,您会在其中找到一个网址,将其复制粘贴到另一个标签上,然后您就可以关联您的帐户。完成链接后,转到模拟器并输入“取消”或“停止”,然后输入“与语音库对话”。
!不要按重置或更改版本,或者您必须重新链接您的应用程序
但是,最近谷歌从调试标签中删除了这个网址,我无法在任何地方找到它...
Simulator as a Speaker
,Surface Dropdown设置为Phone,你需要select 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.
所以目前,您无法使用模拟器测试需要帐户链接的Action。你可以用智能手机做到这一点......