google音箱对接全流程

本文详细介绍了如何在国内环境下将google音箱与Google Assistant和Home Graph API进行对接,包括创建Google Cloud Platform项目、设置服务账号、处理网络代理问题,以及Java代码实现设备状态上报和requestSync。尽管过程中遇到了网络限制等挑战,但最终成功完成了对接流程。对于有类似需求的读者,此篇文章提供了宝贵的实战经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

谷歌语音对接-GoogleAssistant-smart-home

google音箱国内使用的不多,有这个需求的时候在网上找文档找了半天,遇到的坑也挺多的,主要是国内相关文档不多

事先准备

首先需要能翻墙的wifi以及音箱,这块就不多说了
其次需要在google cloud platform创建项目(听说先创建action再创建项目会出现问题,没试过)

在这里插入图片描述
再开通api与服务点击 api和服务-> 凭据(需要开通home graph api,就是进去之后点击manage按钮就可以了)
在这里插入图片描述
选择刚才创建的项目
在这里插入图片描述
创建服务账号
在这里插入图片描述
创建服务账号,只用服务账号名称与服务账号id,点击完成
在这里插入图片描述
下载密钥
在这里插入图片描述
在这里插入图片描述
我这之前已经创建了,可以创建了再下载程json文件保存在本地

action on google

之后就是在action on google 创建action,此时创建的时候选择项目会出现下拉列表也就是刚才在goole cloud platform创建的那个
在这里插入图片描述
这个地方需要填写的是之后做QUERY,EXECUTE,SYNC等需要调用的接口

在这里插入图片描述
token url 跟 authorization url填写自己服务的地址
做完这些相当于配置部分的已经全部完成了

代码部分

我这边是用的java,当时存在的问题是调用设备状态上报以及requestSync的时候无法发送请求,后来发现是因为本地虽然可以翻墙,但是给外网发送请求还是不行的
在这里插入图片描述
就是上图这两个地方,第一个地方去google 服务拿token,但是国内数据是发出去的,第二个地方是需要发送真正的请求
这个地方读取的文件就是上面下载的密钥json文件
构建自己的https代理

 httpTransport = buildHttpProxy();
            HttpTransportFactory httpTransportFactory = () -> httpTransport;
            googleCredentials = GoogleCredentials.fromStream(HttpsUtils.class.getResourceAsStream("/google/"+configProperties.getServerAccountFileName()),httpTransportFactory)
                    .createScoped("https://www.googleapis.com/auth/homegraph");
 private static HttpTransport buildHttpProxy() throws IOException, GeneralSecurityException {
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(configProperties.getProxyHost(), configProperties.getProxyPort()));
        return new NetHttpTransport.Builder().setProxy(proxy).
                trustCertificates(GoogleUtils.getCertificateTrustStore()).build();
    }
public static void reportStateToHomeGraph(ReportStateAndNotificationRequest request){
   
        try{
            HomeGraphService homegraphService =
                    new HomeGraphService.Builder(
                            httpTransport,
                            GsonFactory.getDefaultInstance(),
                            new HttpCredentialsAdapter(googleCredentials))
                            .setApplicationName("xxx/1.0")
                            .build();
            ReportStateAndNotificationResponse execute = homegraphService.devices().reportStateAndNotification(request).execute();
      
        }catch (Exception e){
            e.printStackTrace();
            log.error("发送reportState请求失败:{}",e.getMessage());
        }
    }

以上就是对接流程,虽然对接完了,还是觉得google音箱国内没啥用,原创不易,转载请注明出处

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值