云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

分布式存储_欧菲光企业邮箱_免费领

小七 141 0

大家好,大数据局,

在T.CON(一家德国SAP咨询公司)实习期间,物联网是什么意思,我为亚马逊语音服务Alexa建立了一项技能,该服务通过SAP云平台与SAP HR集成。通过这项技能,Alexa应该能够回答您的问题,例如关于您的休假、团队成员的休假以及创建休假请求。

T.CON已经创建了一个名为"T.CON HR Portal"的SAP云平台解决方案,它为最重要的HR流程提供了一个简单直观的界面。此解决方案还提供restful web服务,为了使事情简单化,Alexa skill的后端服务重用这些服务并在同一实例中运行。

最终,用户可以坐在沙发上预订假期,正如您在以下视频(语言为德语)中看到的那样:

在我想要的博客文章中简要介绍必要的步骤和一些问题:

架构和通信流程概述

在Amazon Echo识别出关键字(如Alexa)后,它会将音频数据发送给Alexa。Alexa服务将通过"自动语音识别"(ASR)引擎将音频转换成文本。文本将由"自然语言理解"(NLU)模块接收。从本文中,它将从用户那里读取相应的意图。该模块还查找日期等值/变量。为了让Alexa工作,需要开发人员提供一些信息,比如在带有插槽的intent模式中定义的可能意图和值。为了分配意图,他必须输入一些用户可以说的示例语句。Alexa将结果(如intent和slot)传递给开发人员构建的后端。之后Alexa应该给用户一个答案。这个答案来自后端,由一个字符串和一些所谓的"ssmltag"(语音合成标记语言)组成,如果需要的话,可以听起来更好,比如中断。后端会将此响应发送给Alexa。现在Alexa可以使用"文本到语音"(TTS)引擎生成语音输出,并将其转发到回音设备。

进入Alexa技能发展视图。

首先我必须选择技能的[第一]语言。然后我插入了一个名称(技能目录的标题)和一个调用名称(用于调用技能)。

交互模型页面是最有趣的页面。通过intent模式,我定义了对话框的结构。我创建了一个自定义槽类型,用于捕捉无法分配的语句。这个页面上的最后一件事是指定一些示例语句/语句。

由于我的后端在sapcp上运行,所以我必须选择一个HTTPS端点。我还使用帐户链接将Amazon帐户分配给HR门户帐户。这些信息来自sapcp:

首先,您必须在CP实例中为您的应用程序创建一个身份验证客户机。您可以在Amazon的skill developer视图的configuration页上找到重定向链接。

OAuth端点的链接在OAuth->Branding视图中定义。

您还需要一个范围(您可以使用这些范围在后端代码中定义权限)

在SSL certification视图上,我必须使用第二个证书选项。因为SAP CP应用程序/后端没有直接认证。

现在您的Alexa skill可以与后端通信。

后台和技能工具包(Java)(Eclipse)

打开您的Eclipse。我使用eclipseneon.2(4.6.2)。接下来创建一个新的动态Web项目(不要忘记更改JRE系统库并添加sapweb概要文件)。对于技能,有什么免费的云服务器,您还需要以下lib(将它们放入WebContent\WEB-INF\lib文件夹):

应该出现在Libraries/WEB App Libraries中。

这将像servlet一样处理。它调用请求验证器和内容解析器。所以Speechlet对象只获取有效的java对象。SpeechletServlet对象还必须获得Speechlet对象,该对象应该获得意图。

您将需要一个重写Speechlet接口的类来对意图做出反应。该类需要重写下面的方法:

SpeechletResponse包含您的答案。

首先创建一个扩展SpeechletServlet的Servlet。

如果您想获得发送响应的请求的一些信息,淘客系统,请重写SpeechletServlet中的doPost方法。但是别忘了从Speechlet类调用doPost方法。

SAP CP将身份验证后的用户名写入响应。所以我必须读取并保存在doPost方法中。

接下来创建一个实现SpeechletV2接口的类。

并用您要执行的代码重写这些方法。

sapsdk提供了一些函数来连接到同一个云实例上的web服务。(仅Java EE Web 6 SDK)

发送oauth令牌的问题/在标头中找不到令牌

在我激活帐户链接(oauth)之后,Alexa无法连接到我的后端,并且在检查了许多小时的配置之后,我激活了com.sap.cloud网站.安全.oauth2记录器。他说他找不到代币。所以我寻找一个解决方案,我发现有人有同样的问题(https://forums.developer.amazon.com/questions/46982/can-alexa-return-the-access-token-in-the-header-in.html)

他发现Alexa并没有把代币放在头上(按照标准的要求),而是放在身体里。好在我没有引起,但我怎么能解决呢?我决定创建一个没有身份验证的网关,从主体读取令牌,个人云服务器,将其写入头并将请求转发给受保护的技能。我知道这是一个解决方法,但它的好处是,如果发生通信错误,我可以记录来自Alexa的请求和来自我的技能的响应。

对于该解决方法,我创建了第二个servlet,它将请求(带有身份验证头)转发到SpeechletServlet。

并使用该servlet的响应进行回复。至少我得换衣服了网站.xml. 为了使只有SpeechletServlet在认证区域中。

Alexa Skills教程

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/getting-started-guide

https://speakerdeck.com/wolfpaulus/building-alexa-skills-with-the-java-alexaskillskit-sdk

我希望这个小描述能帮助你完成第一个任务SAP CP上的Alexa Skill–享受Alexa带来的乐趣!

干杯,弗洛里安