Google主页指南

365bet地区学习使用365bet地区进行Google操作

s瑞安·范德沃夫·塞尔吉奥·德尔阿莫

365bet地区版本 3.3.0

365bet地区培训

365bet地区培训由创建并积极维护365bet地区框架的人们开发和交付

入门

365bet地区在本指南中,您将学习如何创建365bet地区应用程序来托管Google Action为您Google首页与之交互的设备我们将构建部署并设置必要的一切来促进Google App Engine灵活和Google API

我们将使用抢先体验非官方Java SDK建立动作,这是因为唯一的官方SDK是使用node构建的

您将需要什么

  • 花些时间在你手上

  • 体面的文本编辑器或IDE

  • Google帐号

  • 一种谷歌云帐户

  • curl命令可帮助调试

如何完成指南

要开始,请执行以下操作

要么

365bet地区指南存储库包含两个文件夹

  • 初始初始项目通常是一个简单的365bet地区应用程序,其中包含一些其他代码,可以帮助您快速入门

  • 完成一个完整的示例它是按照指南中介绍的步骤进行操作并将这些更改应用于文档的结果。初始

要完成指南,请转到初始

  • 光盘进入grails指南grails google主页初始

并按照下一节中的说明进行操作

您可以直接前往完成的例子如果你光盘进入grails指南grails google主页完成

365bet地区最初的项目是使用网络个人资料中我们删除了资产管道依存关系

尽管您可以直接转到完成的示例以部署应用程序,但是您需要完成一些配置步骤Google Cloud设定.

您将需要编辑文件src主要资源动作json指向您的Google App Engine灵活部署

Google Cloud设定

本指南使用了付费服务,您可能需要在Google Cloud中启用计费功能才能完成本指南中的某些步骤

创建一个Google Cloud项目

注册Google Cloud Platform并创建一个新项目

创建项目
创建项目

安装云端SDK适用于您的操作系统

安装SDK之后,在终端中运行init命令

gcloud初始化

它将提示您选择要使用的Google帐户和项目

安装gactions CLI

我们将使用命令行CLI测试我们的应用

命令行CLI并下载

行动党

在Linux和OSX上使gactions二进制可执行文件chmod x

安装完gaction之后,在终端中运行init命令

行动初始力量

您可以运行的其他命令, 更新, 部署, 测试清单.

配置Google操作

启用Google Actions API

Google API管理器控制台并启用Google Actions API

enablegoogleactions

将您的项目导入到Google Actions控制台

转到新的Google动作控制台并导入先前创建的项目

谷歌的行动控制台

在中配置您的项目ID动作json

动作json是元数据文件,我们用于将应用程序支持的操作告知Google Cloud Actions Console

在这里您还可以控制

  • 示例查询可帮助Google了解要调用的操作

  • 通话意向

src主要资源动作json
{
  "行动": [
    {
      "描述": "",
      "": "主要",
      "履行": {
        "对话名称": ""
      },
      "意图": {
        "": "行动意图主要"
      }

    },
    {
      "描述": "深色链接可查找更明亮的颜色",
      "":"",
      "履行": {
        "对话名称": "颜色意图"
      },
      "意图": {
        "": "颜色意图",
        "参数": [{
          "": "",
          "类型": "SchemaOrg颜色"
        }],
        "": {
          "queryPatterns": [
            ""
          ]
        }
      }
    }
  ],
  "对话": {
    "": {
      "": "寻色器回声",
      "网址": "https grails color finder appspot com助手动作索引"
    },
    "颜色意图": {
      "": "颜色意图",
      "网址": "https grails颜色查找器appspot com助手动作颜色"
    }
  }
}

如上图所示,我们的应用程序支持两项操作,我们将在本指南的下一部分中更详细地说明这些操作

我们将需要修改httpExecution项目以匹配您已部署的应用程序端点

src主要资源动作json
"网址": "https PROJECT ID appspot com助手动作索引"

将动作添加到您的助手应用程序

首次在Google Cloud Actions控制台中选择项目时,您需要通过以下方式提供操作包JSON:阵营像这样的工具

useactionssdk
gactions更新操作包src主要资源操作json项目PROJECT ID

请遵循上述命令提示的指示,其中涉及授权过程

最后,您将看到类似于以下内容的输出

您的操作已成功更新您的项目PROJECT ID助手应用程序。在Google控制台上访问“操作”以完成您的应用程序注册,并在https控制台操作中提交该应用程序以供审核。google com project PROJECT ID概述

添加应用信息

动作包通过验证后,您将可以输入目录信息,例如图像隐私权政策和描述,在这里您还可以选择熟练的演讲者的声音

appinfo
appinfo

之前的屏幕截图显示了两个按钮测试和提交我们将单击测试在之前的屏幕截图中,将我们的应用程序部署到Google App Engine Flexible之后,我们就可以测试我们的操作了

Google App引擎

365bet地区我们将把本指南中开发的365bet地区应用程序部署到Google App Engine弹性环境

App Engine使开发人员可以专注于做自己最擅长的代码编写工作。基于Google Compute Engine,App Engine灵活的环境会自动上下缩放您的应用程序,同时平衡负载微服务授权SQL和NoSQL数据库流量拆分日志记录版本控制安全性扫描和内容交付网络均本地支持

运行命令

gcloud应用创建

初始化当前Google Cloud项目中的App Engine应用程序

编写申请

365bet地区在365bet地区中处理来自Google的请求

我们为我们的应用命名寻色器我们想要实现下图所示的方案

scenarioA

首先我们要添加一个依赖Google Actions Java SDK

建立gradle
编译'com frogermcs gactions'

所说明的对话是通过处理程序进行管理的。我们使用工厂实例化处理程序。

src main groovy演示MainRequestHandlerFactory groovy
演示 com frogermcs gactions api RequestHandler
 com frogermcs gactions api request RootRequest
 常规转换CompileStatic

静态编译
 MainRequestHandlerFactory 延伸RequestHandler工厂覆写RequestHandler创建RootRequest rootRequestMainRequestHandler rootRequest
src main groovy演示MainRequestHandler groovy
演示 com frogermcs gactions ResponseBuilder
 com frogermcs gactions api RequestHandler
 com frogermcs gactions api request RootRequest
 com frogermcs gactions api响应RootResponse
 常规转换CompileStatic

静态编译
 MainRequestHandler 延伸请求处理程序受保护的MainRequestHandler RootRequest rootRequestrootRequest覆写RootResponse getResponse ResponseBuilder askResponse'嘿,行得通现在说点什么,我可以重复一遍')
    }
}
src main groovy演示MainRequestHandler groovy
演示 com frogermcs gactions ResponseBuilder
 com frogermcs gactions api RequestHandler
 com frogermcs gactions api request RootRequest
 com frogermcs gactions api响应RootResponse
 常规转换CompileStatic

静态编译
 MainRequestHandler 延伸请求处理程序受保护的MainRequestHandler RootRequest rootRequestrootRequest覆写RootResponse getResponse ResponseBuilder askResponse'嘿,行得通现在说点什么,我可以重复一遍')
    }
}
src主要groovy演示TextRequestHandlerFactory groovy
演示 com frogermcs gactions api RequestHandler
 com frogermcs gactions api request RootRequest
 常规转换CompileStatic

静态编译
 文本请求处理厂 延伸RequestHandler工厂覆写RequestHandler创建RootRequest rootRequestTextRequestHandler rootRequest
src主要groovy演示TextRequestHandler groovy
演示 com frogermcs gactions ResponseBuilder
 com frogermcs gactions api RequestHandler
 com frogermcs gactions api request RootRequest
 com frogermcs gactions api响应RootResponse
 常规转换CompileStatic

静态编译
 文字RequestHandler 延伸请求处理程序受保护的TextRequestHandler RootRequest rootRequestrootRequest覆写RootResponse getResponse ResponseBuilder tellResponse"你刚刚说过${rootRequest输入获取0原始输入得到0询问}")
    }
}

365bet地区我们将在365bet地区 Controller中处理来自Google的请求

365bet地区控制器在Model View Controller MVC模式中实现C,并负责处理Web请求。在365bet地区中,控制器是一个类,其名称以约定Controller结尾并位于grails应用程序controllers目录中

365bet地区365bet地区控制器又将委派给Actions SDK

365bet地区应用程序控制器演示AssistantActionController groovy
演示 com frogermcs gactions AssistantActions
 com frogermcs gactions api StandardIntents
 com frogermcs gactions api request RootRequest
 com Google gson Gson
 com google gson stream JsonReader
 javax servlet http HttpServletRequest
 常规转换CompileStatic

静态编译
 AssistantActionController {
    定义 指数AssistantActions辅助动作AssistantActions构建器365bet地区365bet地区 ResponseHandler响应addRequestHandlerFactory StandardIntents主要MainRequestHandlerFactory(1)addRequestHandlerFactory StandardIntents TEXTTextRequestHandlerFactory构建RootRequest rootRequest parseActionRequest请求助手assistantAction handleRequest rootRequest(2)
        空值 (3)
    }
    私人的RootRequest parseActionRequest HttpServletRequest请求抛出 IOExceptionJsonReader jsonReaderJsonReader请求阅读器Gson fromJson jsonReader RootRequest
1 我们可以链处理程序
2 365bet地区365bet地区操作委托给Actions SDK来处理来自Google的请求
3 我们不想返回grails视图处理程序管理响应

365bet地区365bet地区ResponseHandler到您的项目中如上所述,它允许我们使用控制器来处理传入的请求

365bet地区src main groovy演示365bet地区ResponseHandler groovy
演示 com frogermcs gactions ResponseHandler
 com frogermcs gactions api响应RootResponse
 com Google gson Gson
 常规转换CompileStatic
 javax servlet http HttpServletResponse
 groovy util日志记录Slf j

365bet地区这是SDK的处理程序,可使其与365bet地区一起正常使用
静态编译
自我
 365bet地区ResponseHandler 实施ResponseHandler私人的 最后HttpServletResponse httpServletResponse私人的 最后365bet地区Gson gson 365bet地区ReilsponseHandler HttpServletResponse httpServletResponse这个httpServletResponse365bet地区Gson 365bet地区ResponseHandler HttpServletResponse httpServletResponse Gson gson这个httpServletResponse httpServletResponse这个格森覆写
    虚空onPrepare内容类型contentType httpServletResponse setContentType contentType覆写
    虚空onPrepareResponseHeaders<, 标头对于 (headerName标头keySet httpServletResponse addHeader headerName标头获取headerName覆写
    虚空onResponse RootResponse rootResponse尝试gson toJson rootResponse httpServletResponse编写器httpServletResponse flushBuffer抓住 (IOException电子日志错误'写入回复时出错'getResponse RootResponse rootResponse尝试gson toJson rootResponse抓住 (IOException电子日志错误'获取响应时出错'

色彩处理器

为了纪念我们的应用程序名称,我们也想处理下一个场景

方案B

与前面的示例类似,我们需要一个处理程序和一个工厂实例化该处理程序

该处理程序演示了将语言参数传递给该意图的方法。当用户要求为X使用较亮的颜色时,它将尝试查找具有名称的较亮颜色并将其告诉用户

src主要groovy演示ColorRequestHandlerFactory groovy
演示 com frogermcs gactions api RequestHandler
 com frogermcs gactions api request RootRequest
 常规转换CompileStatic

静态编译
 ColorRequestHandlerFactory 延伸RequestHandler工厂覆写RequestHandler创建RootRequest rootRequestColorRequestHandler rootRequest
src主要groovy演示ColorRequestHandler groovy
演示 com frogermcs gactions ResponseBuilder
 com frogermcs gactions api RequestHandler
 com frogermcs gactions api request RootRequest
 com frogermcs gactions api响应RootResponse
 演示密尔ColorUtils
 java awt颜色
 java lang体现字段
 常规转换CompileStatic
 groovy util日志记录Slf j

输入颜色名称,并在可能的情况下返回较亮的颜色名称
静态编译
自我
 ColorRequestHandler 延伸请求处理程序受保护的ColorRequestHandler RootRequest rootRequestrootRequest覆写RootResponse getResponse日志调试"输入项${rootRequest输入到ListString}")
        颜色root请求输入0论点0原始文本到小写颜色parsedColor空值
        尝试 {
            领域领域forName'java awt颜色'getField颜色parsedColor颜色现场获得空值)
        } 抓住 (NoSuchFieldException不要返回colorNotFound颜色如果parsedColor ColorUtils colorUtilsColorUtils较亮的颜色实用程序findBrighterNameForColor解析的颜色为LowerCase回答"抱歉,我找不到较亮的颜色${}."如果颜色较亮答案"较亮的颜色${}${更亮} "
            }
            返回ResponseBuilder tellResponse答案colorNotFound颜色私人的根响应colorNotFound颜色ResponseBuilder tellResponse"对不起,我不懂颜色${}.")
    }
}

我们将在控制器的另一项操作中处理来自Google的请求

365bet地区应用程序控制器演示AssistantActionController groovy
演示 com frogermcs gactions AssistantActions
 com frogermcs gactions api StandardIntents
 com frogermcs gactions api request RootRequest
 com Google gson Gson
 com google gson stream JsonReader
 javax servlet http HttpServletRequest
 常规转换CompileStatic

静态编译
 AssistantActionController {
    定义 AssistantActions辅助动作AssistantActions构建器365bet地区365bet地区ResponseHandler响应addRequestHandlerFactory'颜色意图', ColorRequestHandlerFactory(1)建立RootRequest rootRequest parseActionRequest请求(2)assistantActions handleRequest rootRequest空值  (3)
    }
    私人的RootRequest parseActionRequest HttpServletRequest请求抛出 IOExceptionJsonReader jsonReaderJsonReader请求阅读器Gson fromJson jsonReader RootRequest
1 在工厂的帮助下实例化处理程序
2 365bet地区操作委托给Actions SDK来处理来自Google的请求
3 我们不想返回grails视图处理程序管理响应

让我们使用一个简单的实用程序类使我们的操作做一些有趣的事情,这将帮助我们映射给定的java awt颜色给我们起一个英文名字

src main groovy演示util ColorUtils Java
有用的演示 java awt;
 Java有用的ArrayList;

Java代码从rgb十六进制值awt颜色获取颜色名称从rgb值查找颜色名称的部分是从https gist github com nightlark文件gistfile java编辑的,该文件有Ryan Mast nightlark作者Xiaoxiao Li的错误
上市  ColorUtils {

    初始化我们拥有的颜色列表
    私人的 数组列表initColorList数组列表colorList 数组列表colorList添加colorName"爱丽丝蓝", F, F, FFcolorList添加colorName"古董白", xFA, 铁锈, xDcolorList添加colorName"水色", X, FF, FFcolorList添加colorName"蓝晶", F, FF, xDcolorList添加colorName"蔚蓝", F, FF, FFcolorList添加colorName"米色", F, F, xDCcolorList添加colorName"浓汤", FF, E, CcolorList添加colorName"黑色", X, X, XcolorList添加colorName"杏仁白", FF, 铁锈, 光盘colorList添加colorName"蓝色", X, X, FFcolorList添加colorName"紫罗兰色", A, ×, EcolorList添加colorName"棕色", A, A, AcolorList添加colorName"BurlyWood", xDE, B, XcolorList添加colorName"少年蓝", F, , AcolorList添加colorName"租船公司", F, FF, XcolorList添加colorName"巧克力", xD, X, colorList添加colorName"珊瑚", FF, F, XcolorList添加colorName"矢车菊蓝", X, X, xEDcolorList添加colorName"玉米丝", FF, F, xDCcolorList添加colorName"赤红", xDC, X, CcolorList添加colorName"青色", X, FF, FFcolorList添加colorName"深蓝", X, X, ×colorList添加colorName"塔卡卡扬", X, ×, ×colorList添加colorName"暗金杆", B, X, ×colorList添加colorName"深灰色", A, A, AcolorList添加colorName"深绿色", X, X, XcolorList添加colorName"达基", 蓝光碟, B, ×colorList添加colorName"深洋红色", ×, X, ×colorList添加colorName"深橄榄绿色", X, ×, FcolorList添加colorName"深橙", FF, C, XcolorList添加colorName"黑暗兰花", X, X, xCCcolorList添加colorName"深红色", ×, X, XcolorList添加colorName"黑暗鲑鱼", E, X, AcolorList添加colorName"深海绿色", F, xBC, FcolorList添加colorName"DarkSlateBlue", X, D, ×colorList添加colorName"深板岩灰色", F, F, FcolorList添加colorName"darkturquois到", X, xCE, xDcolorList添加colorName"暗紫", X, X, xDcolorList添加colorName"深粉", FF, X, XcolorList添加colorName"深天蓝", X, xBF, FFcolorList添加colorName"定莱", X, X, XcolorList添加colorName"道奇蓝", , X, FFcolorList添加colorName"火砖", B, X, XcolorList添加colorName"花白色", FF, xFA, FcolorList添加colorName"森林绿", X, ×, XcolorList添加colorName"紫红色", FF, X, FFcolorList添加colorName"甘斯伯勒", xDC, xDC, xDCcolorList添加colorName"幽灵白", F, F, FFcolorList添加colorName"", FF, xD, XcolorList添加colorName"金棒", xDA, A, XcolorList添加colorName"灰色", X, X, XcolorList添加colorName"绿色", X, X, XcolorList添加colorName"黄绿色", 盗窃, FF, FcolorList添加colorName"甘露", F, FF, FcolorList添加colorName"亮粉色", FF, X, BcolorList添加colorName"印度红", 光盘, C, CcolorList添加colorName"靛青", ×, X, XcolorList添加colorName"象牙", FF, FF, FcolorList添加colorName"黄褐色", F, E, CcolorList添加colorName"薰衣草", E, E, xFAcolorList添加colorName"薰衣草腮红", FF, F, FcolorList添加colorName"草坪绿", C, xFC, XcolorList添加colorName"柠檬雪纺", FF, xFA, 光盘colorList添加colorName"浅蓝", 盗窃, xD, EcolorList添加colorName"光珊瑚", F, X, XcolorList添加colorName"浅青色", E, FF, FFcolorList添加colorName"浅金色杆黄色", xFA, xFA, xDcolorList添加colorName"浅灰", xD, xD, xDcolorList添加colorName"浅绿色", X, xEE, XcolorList添加colorName"浅粉红色", FF, B, CcolorList添加colorName"鲑鱼", FF, A, AcolorList添加colorName"浅海绿色", X, B, xAAcolorList添加colorName"天蓝色", X, xCE, xFAcolorList添加colorName"浅灰色", X, X, XcolorList添加colorName"浅钢蓝", B, C, xDEcolorList添加colorName"浅黄色", FF, FF, EcolorList添加colorName"酸橙", X, FF, XcolorList添加colorName"柠檬绿", X, 光盘, XcolorList添加colorName"麻布", xFA, F, EcolorList添加colorName"品红", FF, X, FFcolorList添加colorName"栗色", X, X, XcolorList添加colorName"中型海蓝宝石", X, 光盘, xAAcolorList添加colorName"中蓝", X, X, 光盘colorList添加colorName"中兰花", xBA, X, xDcolorList添加colorName"中紫色", X, X, 数据库colorList添加colorName"中海绿色", C, B, XcolorList添加colorName"中板岩蓝", ×, X, xEEcolorList添加colorName"中春绿色", X, xFA, AcolorList添加colorName"中绿松石", X, xD, xCCcolorList添加colorName"中紫红色", C, X, XcolorList添加colorName"午夜蓝", X, X, XcolorList添加colorName"薄荷奶油", F, FF, xFAcolorList添加colorName"迷雾玫瑰", FF, E, EcolorList添加colorName"莫卡辛", FF, E, BcolorList添加colorName"纳瓦霍怀特", FF, xDE, 盗窃colorList添加colorName"海军", X, X, XcolorList添加colorName"老花边", xFD, F, EcolorList添加colorName"橄榄", X, X, XcolorList添加colorName"橄榄色", ×, , XcolorList添加colorName"橙子", FF, A, XcolorList添加colorName"橙红色", FF, X, XcolorList添加colorName"兰花", xDA, X, xDcolorList添加colorName"苍白的金杆", xEE, E, xAAcolorList添加colorName"浅绿色", X, xFB, XcolorList添加colorName"淡青绿色", 偶然的, xEE, xEEcolorList添加colorName"浅紫红色", 数据库, X, XcolorList添加colorName"木瓜鞭", FF, xEF, xDcolorList添加colorName"桃粉扑", FF, xDA, BcolorList添加colorName"秘鲁", 光盘, X, FcolorList添加colorName"", FF, C, xCBcolorList添加colorName"李子", xDD, A, xDDcolorList添加colorName"粉蓝色", B, E, EcolorList添加colorName"紫色", X, X, XcolorList添加colorName"红色", FF, X, XcolorList添加colorName"玫瑰红", xBC, F, FcolorList添加colorName"宝蓝色", X, X, EcolorList添加colorName"马鞍棕色", ×, X, XcolorList添加colorName"三文鱼", xFA, X, XcolorList添加colorName"桑迪·布朗", F, A, XcolorList添加colorName"海绿色", , ×, XcolorList添加colorName"贝壳", FF, F, xEEcolorList添加colorName"西耶娜", A, X, DcolorList添加colorName"", C, C, CcolorList添加colorName"天蓝色", X, xCE, 铁锈colorList添加colorName"板岩蓝", A, A, 光盘colorList添加colorName"板岩灰", X, X, XcolorList添加colorName"", FF, xFA, xFAcolorList添加colorName"春天绿色", X, FF, FcolorList添加colorName"钢铁蓝", X, X, BcolorList添加colorName"tan", xD, B, CcolorList添加colorName"蓝绿色", X, X, XcolorList添加colorName"", xD, xBF, xDcolorList添加colorName"番茄", FF, X, XcolorList添加colorName"绿松石", X, E, xDcolorList添加colorName"紫色", xEE, X, xEEcolorList添加colorName"小麦", F, xDE, BcolorList添加colorName"白色", FF, FF, FFcolorList添加colorName"白色的烟", F, F, FcolorList添加colorName"黄色", FF, FF, XcolorList添加colorName"黄绿色", A, 光盘, X));
        返回colorList从我们的列表中获取最接近的颜色名称参数r参数g参数b返回
    上市 getColorNameFromRgb整型[R整型G整型b数组列表colorList initColorList ColorName最近匹配空值;
        整型最小MSE整数最大价值整型微软对于ColorName c colorList mse c computeMSE r g b如果mse minMSE minMSE mse最近匹配如果最近匹配空值) {
            返回最近匹配getName其他 {
            返回 "没有匹配的颜色名称";
        }
    }

    将十六进制颜色转换为rgb,然后调用getColor NameFromRgb r g b参数十六进制颜色返回
    上市 getColorNameFromHex整型十六进制颜色整型十六进制颜色FF) >> 16;
        整型g十六进制颜色FF) >> 8;
        整型b十六进制颜色FF);
        返回getColorNameFromRgb r g b上市 整型colorToHex颜色C返回 整数解码"X"
                + 整数toHexString c getRGB子字符串2));
    }

    上市 getColorNameFromColor颜色颜色返回getColorNameFromRgb颜色getRed颜色getGreen颜色getBlue上市 findBrighterNameForColor颜色颜色名称getColorNameFromColor颜色nextColorName名称整型colorCount0;
        名称等于nextColorName colorCount100颜色颜色更明亮nextColorName getColorNameFromColor colorCount返回nextColorName上市 findDarkerNameForColor颜色颜色名称getColorNameFromColor颜色nextColorName名称整型colorCount0;
        名称等于nextColorName colorCount100颜色颜色较深nextColorName getColorNameFromColor colorCount返回nextColorNameColorUtils的子类为了查找颜色名称作者Xiaoxiao Li
    上市  colorName {
        上市 整型g上市 那么上市colorName那么整型[R整型G整型b这个r这个r这个b这个名字上市 整型计算MSE整型PIXR整型像素G整型像素B返回 (整型pixR r pixR r pixG g pixG g pixB b pixB b3);
        }

        上市 整型GETRA返回[R上市 整型getG返回G上市 整型getB返回b上市 getName返回那么

上一类是Java类365bet地区365bet地区允许我们无缝混合Groovy和Java代码.

非官方的Google Actions Java SDK

SDK位于https github com frogermcs Google Actions Java SDK但是我们要做的就是编辑构建gradle以包含库

建立gradle
作为frogermcs gactions进行编译

Google App Engine Gradle插件

要部署到App Engine,我们将使用Google App Engine Gradle插件.

我们需要修改建立gradle将插件添加为buildscript依赖项并应用插件

建立gradle
buildscript存储库mavenLocal maven url"https repo grails org grails核心"依赖类路径"org grails grails gradle插件$grails版本"类路径'com google cloud tools appengine gradle插件'应用插入: 'com google cloud tools appengine'

应用程序部署配置

要部署到Google App Engine,我们需要添加文件src主appengine应用yaml

它描述了应用程序的部署配置

src主appengine应用yaml
运行爪哇大约柔性运行时配置:
    杰克OpenJDK服务器码头健康检查:
    启用健康检查资源:
    中央处理器: 1
    记忆体: 2.3

手动缩放:
  实例: 1

这里应用程式Yaml指定应用程序使用的运行时并进行设置env flex指定应用使用灵活的环境.

最小的应用程式Yaml365bet地区上面显示的应用程序配置文件足以满足一个简单的365bet地区应用程序的需要,具体取决于应用程序所使用的大小复杂性和功能,您可能需要更改和扩展此基本配置文件。应用程式Yaml请看使用app yaml配置您的应用指南

有关Java运行时如何工作的更多信息,请参见Java Jetty运行时.

春季靴跳船

如之前的应用引擎配置文件所示,我们正在使用Jetty

根据SpringBoot的文档,我们需要对进行以下更改部署到Jetty而不是Tomcat

更换tomcat

应用程序构建gradle
提供'org springframework boot spring boot starter tomcat'

带码头

建立gradle
提供"org springframework boot spring boot starter jetty"

我们还需要排除tomcat juli的依赖关系。Add

建立gradle
配置编译排除模组: "Tomcat 7月"
}

部署应用

要将应用程序部署到Google App Engine,请运行

gradlew appengineDeploy

初始部署可能需要一些时间。完成后,您将可以访问您的应用

测试

测试您的Google Action并与之互动

返回Google Actions控制台并点击测试

测试
测试

尝试用以下短语测试您的行为

365bet地区要求365bet地区颜色查找器找到洋红色的较亮颜色

您应该看到响应

365bet地区当然,这里是365bet地区 Color Finder的测试版本。洋红色的较亮颜色是紫红色。

测试更亮的颜色

让我们再试一次

365bet地区与365bet地区颜色查找器交谈

你会看到的

365bet地区当然,这里是365bet地区 Color Finder的测试版本嘿,它可以工作现在告诉一些事情,以便我可以重复一下

现在回应一下

365bet地区365bet地区很棒

您应该看到它回显了您输入的内容

365bet地区你刚刚告诉365bet地区很棒

测试默认

现在,您可以提高技能,当您准备就绪时,转到Google API仪表板填写目录列表,然后将其提交以进行测试