dueros模拟测试没有请求后台_DuerOS开放平台

配置Java环境。

在开发和运行示例之前,请按下面的指导配置Java运行环境。如果已经完成环境配置,请阅读第二步。

安装Maven软件项目管理工具,点击链接下载。

安装Java SE开发工具包(JDK) 7或更高版本,点击链接下载。

创建Java工程。

根据下面的命令创建工程并设定groupId和artifactId。查询个税示例中的groupId为com.baidu.dueros.bot,artifactId为demo,创建工程的命令如下。

mvn archetype:generate -DgroupId=com.baidu.dueros.bot -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

修改pom.xml文件。

增加技能开发平台和百度云cfc相关的SDK的依赖关系。查询个税示例的pom.xml文件内容如下。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.baidu.dueros.bot

demo

1.0

com.baidu.dueros

bot-sdk

1.1.1

com.baidubce.faas

bce-cfc-java-core

1.0.0

provided

junit

junit

3.8.1

test

UTF-8

1.8

1.8

maven-assembly-plugin

jar-with-dependencies

make-assembly

package

single

编写工程入口函数代码。

在使用Java编程时,需要定义一个函数入口类。下面是查询个税技能使用的入口函数的示例,请将下面的内容拷贝到文件src/main/java/com/baidu/dueros/bot/App.java中。

package com.baidu.dueros.bot;

import com.baidubce.faas.core.FaasContext;

import com.baidubce.faas.core.InvokeHandler;

import org.apache.commons.io.IOUtils;

import java.io.InputStream;

import java.io.OutputStream;

import java.nio.charset.StandardCharsets;

public class App implements InvokeHandler

{

public void invoke(InputStream input, OutputStream output, FaasContext context) throws Exception {

try {

String result = IOUtils.toString(input, StandardCharsets.UTF_8);

Bot bot = new Bot(result);

bot.disableVerify();

//调用bot的run方法

String responseJson = bot.run();

output.write(responseJson.getBytes());

} catch (Exception e) {

e.printStackTrace();

output.write("{\"status\":1,\"msg\":\"function error\"}".getBytes());

}

}

}

其中,函数入口类要继承并实现com.baidubce.faas.core.InvokeHandler接口。函数invoke有三个参数:input表示输入数据,output表示输出数据,context表示函数运行时信息。用户日志输出到stdout和stderr,函数计算服务会自动收集这些日志。

实现技能功能代码。

在文件src/main/java/com/baidu/dueros/bot/Bot.java进行技能功能代码的实现,查询个税的代码请参考Bot.java文件。这里简单介绍查询个税技能处理DuerOS发送的LaunchRequest、IntentRequest和SessionEndedRequest三种请求的代码实现。

当用户调用技能时,如用户说“打开查询个税”,此时DuerOS会向用户发送LaunchRequest请求消息,函数onLaunch()实现了对LaunchRequest请求的处理,播报欢迎语,并在屏幕上展现欢迎界面和提示语,代码示例如下。

protected Response onLaunch(LaunchRequest launchRequest) {

// 新建文本卡片

TextCard textCard = new TextCard("欢迎使用查询个税");

// 设置链接地址

textCard.setUrl("www:....");

// 设置链接内容

textCard.setAnchorText("setAnchorText");

// 添加引导话术

textCard.addCueWord("我想查询个税");

// 新建返回的语音内容

OutputSpeech outputSpeech = new OutputSpeech(SpeechType.PlainText, "欢迎使用查询个税");

// 构造返回的Response

Response response = new Response(outputSpeech, textCard);

return response;

}

当用户发送查询个税请求后,DuerOS会发送IntentRequest消息。技能收到请求后,对月薪和城市的槽位信息进行确认,并为用户提供服务,代码示例如下。

protected Response onInent(IntentRequest intentRequest) {

// 判断NLU解析的意图名称是否匹配 inquiry_tax

if ("inquiry_tax".equals(intentRequest.getIntentName())) {

// 判断NLU解析解析后是否存在这个槽位

if (getSlot("sys.number") == null) {

// 询问月薪槽位

ask("sys.number");

return askNumber();

} else if (getSlot("sys.city") == null) {

// 询问城市槽位

ask("sys.city");

return askCity();

} else {

// 计算个税缴纳情况

return compute();

}

}

return null;

}

当用户想要退出查询个税技能时,会说“退出”,此时DuerOS会向技能发送SessionEndedRequest请求,技能收到请求会退出技能,并播报退出语。

protected Response onSessionEnded(SessionEndedRequest sessionEndedRequest) {

// 构造TextCard

TextCard textCard = new TextCard("感谢您使用查询个税服务");

textCard.setAnchorText("setAnchorText");

textCard.addCueWord("");

// 构造OutputSpeech

OutputSpeech outputSpeech = new OutputSpeech(SpeechType.PlainText, "感谢您使用查询个税服务");

// 构造Response

Response response = new Response(outputSpeech, textCard);

return response;

}

可以点击链接下载查询个税示例工程的完整代码。

编译工程。

编译工程,并将编译的jar包压缩成zip文件,为技能部署到CFC做准备。

mvn package

cd target

zip java-bot.zip demo-1.0-jar-with-dependencies.jar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值