Alexa BDD 测试
Alexa BDD tests
我正在尝试对我的 Alexa 技能实施 BDD 测试。我正在使用 Java SDK 来实现它。
基本上,我想在我的测试套件中以编程方式触发任意意图并断言响应,但我找不到任何实现它的材料。
我只能找到 com.amazon.ask.model.services.skillMessaging.SkillMessagingServiceClient.sendSkillMessage
,其 Javadoc 说:
Send a message request to a skill for a specified user.
这正是我所需要的,但是,为了创建 com.amazon.ask.model.services.skillMessaging.SkillMessagingServiceClient
,我必须执行以下操作:
SkillMessagingServiceClient client = new SkillMessagingServiceClient(
DefaultApiConfiguration.builder()
.withApiClient(ApacheHttpApiClient.standard())
.withSerializer(new JacksonSerializer())
.withAuthorizationValue("<authorization_token").build(),
DefaultAuthenticationConfiguration.builder()
.withClientId("<client_id>")
.withClientSecret("<client_secret>")
.build()
);
为了得到client_id
和client_secret
:
- 我已经访问使用亚马逊控制台登录
- 我已经创建了一个安全配置文件
- 我已经在我的技能上启用了帐户链接,
- 授权 URI:
https://www.amazon.com/ap/oa
- 访问令牌 URI:
https://api.amazon.com/auth/o2/token
- 从第 2 点开始的客户端 ID 和客户端密码
- 范围:
alexa:skill_messaging
和 profile:user_id
- 身份验证模式:基本
- 我已经在我的安全配置文件
允许的 return 网络 URI 中复制了所有 Alexa 重定向 URL
因此,现在我的技能可以从 Alexa 应用程序绑定到我的亚马逊帐户,但是:
- 总而言之,我只是想实现测试,而不是绑定我的帐户。我的生产技能不需要这个功能
- 绑定无效:从 Alexa 应用程序确认后,我收到错误消息
- 但我不知道如何收集身份验证令牌,除非我从 Cloudwatch 日志中捕获它并使用它...直到它过期
在第 2 点,我可以看到失败的原因:oauthError
(https://skills-store.amazon.it/external/link-result?success=false&errorKey=oauth-error&languageCode=it_IT&skillId=amzn1.ask.skill......&skillStage=development
)。该网页包含 link 到 RFC6749。
我目前卡住了,无法完全测试我的技能,也是因为无法测试 Alexa Player,尤其是意大利语,除非您直接使用物理设备进行测试。
感谢您的帮助。
您似乎对帐户链接和技能证书感到困惑。帐户链接用于代表用户 E.G. 对外部服务进行 api 调用。我希望我的技能能够访问用户的 google 个人资料。
因此,对于您的用例,用于 API 调用与技能相关的 Alexa 服务的技能证书似乎足够好。由于您已经获得了 clientId、client secret,我建议您探索 Ask-Smapi-Sdk。您可以按照 readme 通过 ask-cli 获取 refreshToken,并构建 smapi 客户端。
使用 SmapiClient,您可以使用 Smapi 模拟 apis 来触发您的意图,特别是在您的 smapi 客户端中定义的函数 simulateSkillV1。
希望这就是您所需要的。 ✧(•̀ω•́ )
谢谢,
沉
我正在尝试对我的 Alexa 技能实施 BDD 测试。我正在使用 Java SDK 来实现它。
基本上,我想在我的测试套件中以编程方式触发任意意图并断言响应,但我找不到任何实现它的材料。
我只能找到 com.amazon.ask.model.services.skillMessaging.SkillMessagingServiceClient.sendSkillMessage
,其 Javadoc 说:
Send a message request to a skill for a specified user.
这正是我所需要的,但是,为了创建 com.amazon.ask.model.services.skillMessaging.SkillMessagingServiceClient
,我必须执行以下操作:
SkillMessagingServiceClient client = new SkillMessagingServiceClient(
DefaultApiConfiguration.builder()
.withApiClient(ApacheHttpApiClient.standard())
.withSerializer(new JacksonSerializer())
.withAuthorizationValue("<authorization_token").build(),
DefaultAuthenticationConfiguration.builder()
.withClientId("<client_id>")
.withClientSecret("<client_secret>")
.build()
);
为了得到client_id
和client_secret
:
- 我已经访问使用亚马逊控制台登录
- 我已经创建了一个安全配置文件
- 我已经在我的技能上启用了帐户链接,
- 授权 URI:
https://www.amazon.com/ap/oa
- 访问令牌 URI:
https://api.amazon.com/auth/o2/token
- 从第 2 点开始的客户端 ID 和客户端密码
- 范围:
alexa:skill_messaging
和profile:user_id
- 身份验证模式:基本
- 授权 URI:
- 我已经在我的安全配置文件 允许的 return 网络 URI 中复制了所有 Alexa 重定向 URL
因此,现在我的技能可以从 Alexa 应用程序绑定到我的亚马逊帐户,但是:
- 总而言之,我只是想实现测试,而不是绑定我的帐户。我的生产技能不需要这个功能
- 绑定无效:从 Alexa 应用程序确认后,我收到错误消息
- 但我不知道如何收集身份验证令牌,除非我从 Cloudwatch 日志中捕获它并使用它...直到它过期
在第 2 点,我可以看到失败的原因:oauthError
(https://skills-store.amazon.it/external/link-result?success=false&errorKey=oauth-error&languageCode=it_IT&skillId=amzn1.ask.skill......&skillStage=development
)。该网页包含 link 到 RFC6749。
我目前卡住了,无法完全测试我的技能,也是因为无法测试 Alexa Player,尤其是意大利语,除非您直接使用物理设备进行测试。
感谢您的帮助。
您似乎对帐户链接和技能证书感到困惑。帐户链接用于代表用户 E.G. 对外部服务进行 api 调用。我希望我的技能能够访问用户的 google 个人资料。
因此,对于您的用例,用于 API 调用与技能相关的 Alexa 服务的技能证书似乎足够好。由于您已经获得了 clientId、client secret,我建议您探索 Ask-Smapi-Sdk。您可以按照 readme 通过 ask-cli 获取 refreshToken,并构建 smapi 客户端。 使用 SmapiClient,您可以使用 Smapi 模拟 apis 来触发您的意图,特别是在您的 smapi 客户端中定义的函数 simulateSkillV1。
希望这就是您所需要的。 ✧(•̀ω•́ )
谢谢,
沉