天猫精灵语音开发-第三天

简介: 图文详解如何开发天猫精灵语音应用,以及阿里云云开发平台的基本使用,最后将介绍如何把使用阿里云云开发平台做后台开发天猫精灵应用

## 前言

流程

  • 前台配置流程

    - 创建空气质量意图
    - 配置单轮对话语料并配置前置意图
    
  • 后台开发流程

    - 解析请求意图并返回预期值
    - 提交代码并部署上线
  • 语音测试
  • 项目下线

前台配置流程

创建空气质量意图

image.png

配置单轮对话语料并配置前置意图

前置意图配置参数传递规则:前置意图标识.前置意图中的参数名称,以天气查询意图是空气质量查询意图的前置意图,则配置参数为 {weather.city}

image.png

后台开发流程

登录阿里云云开发平台(网址:workbench.aliyun.com)基于昨天的代码开发新的功能,使用详情请看第一天教程

解析请求意图并返回预期值

image.png

原始代码
package com.alibaba.ailabs;

import com.alibaba.ailabs.common.AbstractEntry;
import com.alibaba.da.coin.ide.spi.meta.AskedInfoMsg;
import com.alibaba.da.coin.ide.spi.meta.ExecuteCode;
import com.alibaba.da.coin.ide.spi.meta.ResultType;
import com.alibaba.da.coin.ide.spi.standard.ResultModel;
import com.alibaba.da.coin.ide.spi.standard.TaskQuery;
import com.alibaba.da.coin.ide.spi.standard.TaskResult;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.fc.runtime.Context;

import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @Description 天猫精灵技能函数入口,FC
 * handler:com.alibaba.ailabs.GenieEntry::handleRequest
 * @Version 1.0
 **/
public class GenieEntry extends AbstractEntry {
    @Override
    public ResultModel<TaskResult> execute(TaskQuery taskQuery, Context context) {
        context.getLogger().info("taskQuery: " + JSON.toJSONString(taskQuery));
        TaskResult taskResult = new TaskResult();
        // 从请求中获取意图参数以及参数值
        Map<String, String> paramMap = taskQuery.getSlotEntities().stream().collect(Collectors.toMap(slotItem -> slotItem.getIntentParameterName(), slotItem -> slotItem.getStandardValue()));
        
        String intentName = taskQuery.getIntentName();
        String city = paramMap.get("city");
        String date = jsonParse(paramMap.get("sys.date(公共实体)"));

        if("gclm-hi".equals(intentName)){
            taskResult.setReply("主人我在,我可以帮你查询天气");
        } else if("wether".equals(intentName)){
             //意图中 date 参数勾选了必选,请求数据中一定会携带 date 参数,因此只需要判断 city 参数有没有
             if(StringUtils.isBlank(city)) {
                   taskResult.setReply("主人,你要查询那个城市的天气啊!!!");
             }
            // 这是使用假数据
            taskResult.setReply("主人,"+city + date + "天气 晴");
        } else if("air-quality".equals(intentName)){
             //意图中 date 参数勾选了必选,请求数据中一定会携带 date 参数,因此只需要判断 city 参数有没有
             if(StringUtils.isBlank(city)) {
                   taskResult.setReply("主人,你要查询那个城市的空气质量啊!!!");
             }
            // 这是使用假数据
            taskResult.setReply("主人,"+city + date + "空气质量 优");

        } else {
            taskResult.setReply("主人,我无法识别你的意图,等我重新学习后再来更好的服务主人");
        }
       return reply(taskResult);
    }

    /**
     * 结束对话的回复,回复后音箱闭麦
     */
    private ResultModel<TaskResult> reply(TaskResult taskResult) {
        ResultModel<TaskResult> res = new ResultModel<>();
        taskResult.setExecuteCode(ExecuteCode.SUCCESS);
        taskResult.setResultType(ResultType.RESULT);
        res.setReturnCode("0");
        res.setReturnValue(taskResult);
        return res;
    }


    private String jsonParse(String data) {
        try{
          JSONObject object = JSONObject.parseObject(data);
          return object.getString("description"); 
        }catch(Exception e) {
          return data;
        }
    }
}

提交代码并部署上线

  • 使用Git提交代码
  • 选择预发环境部署上线,详情请看第一天教程

语音测试

进入在线测试进行测试

image.png

项目下线

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

昨天就忘记下线了。多跑了一定的流量

image.png

image.png

相关文章
|
数据可视化 JavaScript 开发工具
天猫精灵之天气查询开发
天猫精灵之天气查询
|
1天前
|
IDE 程序员 开发工具
CodeFuse邀你领取编码挑战任务,最高赢取Beats蓝牙耳机!
在1024程序员节,CodeFuse推出「编码挑战季」,邀请全球开发者参与。通过GitHub领取任务,提升技术,赢取定制周边,包括Beats Studio Pro耳机。活动已开放近50个任务,涵盖四大代码仓库。快来加入,展示你的技术实力!
7 0
|
4月前
|
机器学习/深度学习 人工智能 视频直播
AI直播手机APP震撼发布!3大场景直播,60秒一键开播!
🎉 青否数字人AI直播APP发布!🚀 在抖音等平台60秒一键开播,简化直播流程。💡 3种AI直播模式,融合6大AIGC技术,助力新手轻松直播带货且避免违规。💪 AI主播、声音克隆,实时话术改写,智能互动与讲品同步,提升转化。📊 实景与视频直播结合,适应多种场景。🌐 独立部署,自定义版权,1年免费升级,专业售后支持。🚀 (直播: zhibo175) #青否数字人 #AI直播
AI直播手机APP震撼发布!3大场景直播,60秒一键开播!
|
SQL 开发框架 .NET
初识天猫精灵语音技能
初识天猫精灵语音技能
425 0
初识天猫精灵语音技能
|
SQL 移动开发 开发框架
1小时入门天猫精灵有屏音箱语音技能开发
本文将教你在天猫精灵上怎么开发技能或者应用。文中使用PHP的知名框架:Laravel,只需1小时帮你入门天猫精灵有屏技能开发。支持语音交互。欢迎大家转发,分享,文末还有源码共享,欢迎大家下载。
1小时入门天猫精灵有屏音箱语音技能开发
天猫精灵开发平台AliGenie - 打造孩子专属的暖心小伙伴
在天猫精灵陪伴孩子的过程中,除了监督学习、讲故事、听儿歌,我更希望它可以成为孩子倾诉的对象,当孩子遇到困难或者在学校被欺负,它可以化身为精灵,给予孩子更多的鼓励和说些更暖心话语,温暖一个个幼小的心灵。
519 0
天猫精灵开发平台AliGenie - 打造孩子专属的暖心小伙伴
|
自然语言处理 Serverless
云开发天猫精灵天气小助手语音技能
使用阿里云云开发平台实现天猫精灵天气小助手语音技能
302 0
云开发天猫精灵天气小助手语音技能
|
自然语言处理 开发工具 git
天猫精灵语音开发-第二天
图文详解如何开发天猫精灵语音应用,以及阿里云云开发平台的基本使用,最后将介绍如何把使用阿里云云开发平台做后台开发天猫精灵应用
194 0
|
数据可视化 Java 开发工具
天猫精灵体验:天气小助手开发
猫精灵技能应用开发平台是阿里巴巴天猫精灵面向不同类型的广大开发者推出的技能应用开发、接入平台。 该平台提供了从语音交互模型定义、语义解析理解能力,到技能开发、测试、部署的一整套开发工具和便捷的可视化操作工作台,帮助开发者高效地将各类技能应用快速接入到天猫精灵音箱以及精灵生态硬件终端。
315 0
天猫精灵体验:天气小助手开发
|
智能硬件 Python
天猫精灵天气助手快速上手
天猫精灵是受众很广泛的智能音箱品牌,它目前的功能已经很丰富。接下来介绍天气助手接入
297 0
天猫精灵天气助手快速上手