如何使用Amazon Voice Service或Alexa对我的应用进行语音查询

时间:2019-04-01 07:23:55

标签: android iot alexa alexa-voice-service amazon-lwa

在开发与Android应用程序的IoT设备集成时,我一直陷于这个问题。

我希望实现的是与我的应用交谈,例如,“ Alexa,炊具内部的温度是多少?”。为了获取此信息,我有一个通过蓝牙连接到智能炊具的android应用,该应用可以从炊具中读取温度信息。

现在如何在Android应用中获取查询以及如何以“电磁炉中的当前温度为100摄氏度”返回响应。 Alexa可以为我口头翻译。

这是我到目前为止所做的。

  1. 我使用Amazon开发人员控制台创建了一个帐户
  2. 在那里注册我的应用并将API密钥复制到我的android项目中
  3. 在我的android项目中添加了他们的lib
  4. 使用“通过Amazon登录”服务获得accessToken

    requestContext = RequestContext.create(this)
    requestContext.registerListener(object : AuthorizeListener() {
        override fun onSuccess(authorizeResult: AuthorizeResult) {
            accessToken = authorizeResult.accessToken
            Timber.d("Access Token: %s", accessToken)
        }
    
        override fun onCancel(auth: AuthCancellation?) {
            Timber.e(auth?.description)
        }
    
        override fun onError(error: AuthError) {
            Timber.e(error, error.localizedMessage)
        }
    })
    
    signInBtn.setOnClickListener {
        AuthorizationManager.authorize(
            AuthorizeRequest.Builder(requestContext)
                .addScopes(ProfileScope.profile(), ProfileScope.postalCode())
                .build()
        )
    }
    

这是清单的相关声明

<activity android:name="com.amazon.identity.auth.device.workflow.WorkflowActivity"
    android:theme="@android:style/Theme.NoDisplay"
    android:allowTaskReparenting="true"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <!-- android:host must use the full package name found in Manifest General Attributes -->
        <data android:host="${applicationId}" android:scheme="amzn"/>
    </intent-filter>
</activity>

我一直在关注this文档。

我该怎么做才能在应用程序中获取查询以处理并返回结果?还是有可能?

1 个答案:

答案 0 :(得分:1)

您需要创建智能家居技能才能做到这一点,前进的方式是

  1. 创建智能家居技能,请参考文档here

  2. 一旦您创建了智能家居技能(您将在此过程中创建后端服务器),并且用户每次问“ Alexa,内部温度是多少,用户都将在其Alexa帐户中启用该技能。炊具?”您将收到对服务器的指令请求,然后可以将其路由到android应用,并让android应用直接或通过您的服务器将响应发送到AVS。