AI语音技能云开发 - “切换意图、参数传递”

简介: 切换意图、参数传递

上一篇中我们已经实现了一个简单的天气查询功能。

这篇,我们我们将再创建一个空气质量的查询,并与上一篇中的天气查询意图进行关联,实现意图的切换,参数的传递


一、创建空气质量查询意图

1.1 填写意图信息

image.png

1.2 配置单论对话表达,实现与上一篇差不多,配置默认参数追问

image.png

1.3 配置多轮对话,实现与上一篇差不多

image.png

1.4 配置前置意图

image.png

选择天气查询

image.png

二、后端服务开发

image.png

在CloudIDE中编辑上一篇中的代码

packagecom.alibaba.ailabs;
importcom.alibaba.ailabs.common.AbstractEntry;
importcom.alibaba.da.coin.ide.spi.meta.AskedInfoMsg;
importcom.alibaba.da.coin.ide.spi.meta.ExecuteCode;
importcom.alibaba.da.coin.ide.spi.meta.ResultType;
importcom.alibaba.da.coin.ide.spi.standard.ResultModel;
importcom.alibaba.da.coin.ide.spi.standard.TaskQuery;
importcom.alibaba.da.coin.ide.spi.standard.TaskResult;
importcom.alibaba.fastjson.JSON;
importcom.aliyun.fc.runtime.Context;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Map;
importjava.util.stream.Collectors;
/*** @Description 天猫精灵技能函数入口,FC*              handler:com.alibaba.ailabs.GenieEntry::handleRequest* @Version 1.0**/publicclassGenieEntryextendsAbstractEntry {
@OverridepublicResultModel<TaskResult>execute(TaskQuerytaskQuery, Contextcontext) {
context.getLogger().info("taskQuery: "+JSON.toJSONString(taskQuery));
// ResultModel<TaskResult> res = new ResultModel<>();TaskResulttaskResult=newTaskResult();
// 从请求中获取意图参数以及参数值Map<String, String>paramMap=taskQuery.getSlotEntities().stream().collect(Collectors.toMap(slotItem->slotItem.getIntentParameterName(), slotItem->slotItem.getOriginalValue()));
//处理名称为 welcome 的意图if ("welcome".equals(taskQuery.getIntentName())) {
taskResult.setReply("我在,你说,我可以帮你查询天气");
//处理名称为 weather 的意图        } elseif ("weather".equals(taskQuery.getIntentName())) {
//weather 意图中 date 参数勾选了必选,请求数据中一定会携带 date 参数,只需要判断 city 参数有没有。if (paramMap.get("city") ==null) {
taskResult.setReply("您要查询哪个城市的天气?");
returnaskReply(taskResult, "city", taskQuery.getIntentId());
            }
//TODO 根据参数获取天气信息,这里使用假数据替代taskResult.setReply(paramMap.get("city") +paramMap.get("sys.date(公共实体)") +"天气 晴");
//处理名称为 ari_quality 的意图        }elseif ("ari_quality".equals(taskQuery.getIntentName())) {
//air_quality 意图中 date 参数勾选了必选,请求数据中一定会携带 date 参数,只需要判断 city 参数有没有。if (paramMap.get("city") ==null) {
taskResult.setReply("您要查询哪个城市的空气质量?");
returnaskReply(taskResult, "city", taskQuery.getIntentId());
            }
//TODO 根据参数获取空气质量信息,这里使用假数据替代taskResult.setReply(paramMap.get("city") +paramMap.get("sys.date(公共实体)") +"空气质量 优");
//其他意图        }else {
taskResult.setReply("请检查意图名称是否正确,或者新增的意图没有在代码里添加对应的处理分支。");
        }
returnreply(taskResult);
      }
/*** 结束对话的回复,回复后音箱闭麦*/privateResultModel<TaskResult>reply(TaskResulttaskResult) {
ResultModel<TaskResult>res=newResultModel<>();
taskResult.setExecuteCode(ExecuteCode.SUCCESS);
taskResult.setResultType(ResultType.RESULT);
res.setReturnCode("0");
res.setReturnValue(taskResult);
returnres;
    }
/*** 指定追问参数,音箱自动开麦,用户的回答优先匹配追问的参数*/privateResultModel<TaskResult>askReply(TaskResulttaskResult, StringparameterName, LongintentId) {
ResultModel<TaskResult>res=newResultModel<>();
taskResult.setExecuteCode(ExecuteCode.SUCCESS);
taskResult.setResultType(ResultType.ASK_INF);
AskedInfoMsgaskedInfoMsg=newAskedInfoMsg();
askedInfoMsg.setIntentId(intentId);
askedInfoMsg.setParameterName(parameterName);
List<AskedInfoMsg>askedInfos=newArrayList<>();
askedInfos.add(askedInfoMsg);
taskResult.setAskedInfos(askedInfos);
res.setReturnValue(taskResult);
returnres;
    }
}

同样,保存代码,发布部署预发环境

# 看到这种字样表示部署成功[2021-11-04 11:24:18] 应用:语音精灵r96NtT4qEy  云开发应用[PRE]环境部署成功!

三、在线测试

image.png

四、下线应用

在线测试完成后,要在云开发平台我的应用及时将部署的应用下线,因为免费额度有限,不及时下线将会产生不必要的费用

一定要注意!!!

image.png

天猫技能应用平台官方文档:https://aligenie.com/doc/20255408/ugw88c


文章搬自:https://blog.csdn.net/miao_x_m/article/details/121139170

目录
相关文章
|
8月前
|
人工智能 安全 API
20 万奖金池就位!Higress AI 网关开发挑战赛参赛指南
本次赛事共设三大赛题方向,参赛者可以任选一个方向参赛。本文是对每个赛题方向的参赛指南。
642 66
|
8月前
|
人工智能
Claude code AI 技能神器:Anthropic Skills!
Anthropic推出Claude AI技能神器Skills,将复杂任务打包成即插即用的“外挂”,让AI秒懂流程,告别重复提示。支持团队共享,提升效率数倍,三步搞定专业报告,堪称AI办公革命!
2042 4
|
8月前
|
人工智能 运维 安全
加速智能体开发:从 Serverless 运行时到 Serverless AI 运行时
在云计算与人工智能深度融合的背景下,Serverless 技术作为云原生架构的集大成者,正加速向 AI 原生架构演进。阿里云函数计算(FC)率先提出并实践“Serverless AI 运行时”概念,通过技术创新与生态联动,为智能体(Agent)开发提供高效、安全、低成本的基础设施支持。本文从技术演进路径、核心能力及未来展望三方面解析 Serverless AI 的突破性价值。
|
8月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
7885 109
|
9月前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段三:自定义 Advisor 与结构化输出实现以及对话记忆持久化开发
本文介绍如何在Spring AI中自定义Advisor实现日志记录、结构化输出、对话记忆持久化及多模态开发,结合阿里云灵积模型Qwen-Plus,提升AI应用的可维护性与功能性。
1864 125
AI 超级智能体全栈项目阶段三:自定义 Advisor 与结构化输出实现以及对话记忆持久化开发
|
9月前
|
人工智能 Rust 并行计算
AI大模型开发语言排行
AI大模型开发涉及多种编程语言:Python为主流,用于算法研发;C++/CUDA优化性能;Go/Rust用于工程部署;Java适配企业系统;Julia等小众语言用于科研探索。
2358 127
|
人工智能 自然语言处理 前端开发
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
淘宝推荐信息流业务,常年被“需求多、技术栈杂、协作慢”困扰,需求上线周期动辄一周。WaterFlow——一套 AI 驱动的端到端开发新实践,让部分需求两天内上线,甚至产品经理也能“自产自销”需求。短短数月,已落地 30+ 需求、自动生成 5.4 万行代码,大幅提升研发效率。接下来,我们将揭秘它是如何落地并改变协作模式的。
1235 37
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
|
8月前
|
人工智能 IDE 开发工具
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
|
9月前
|
人工智能 前端开发 JavaScript
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
984 18
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
|
8月前
|
人工智能 运维 定位技术
【微笑讲堂】AI时代的Geo优化:掌握这些技能,让你的内容被智能引擎“偏爱”
大家好,我是微笑老师!本期讲解“Geo都需要掌握哪些技能”。随着AI搜索兴起,GEO(生成式引擎优化)正取代传统SEO,核心在于让内容被AI“读懂、信任、引用”。需掌握四大技能:结构化数据工程、多模态语义对齐、动态知识图谱运维、权威信源建设。从“被找到”到“被引用”,GEO与SEO融合进化,助力内容在AI时代脱颖而出。未来已来,你准备好了吗?
1207 8