天猫精灵AI语音技能云开发

简介: 清单中物品的价格查询

https://aligenie.com/
登录,进入控制台,创建新技能。
1.png

点击后端服务,点击创建应用,关联阿里云账户,开通相关资源,创建技能应用;
语言选择python,模板选择地理小百科,点击创建,保存。
2.png
3.png

然后选择语言互交模型,点击左侧的实体,创建一个自定义实体
4.png

点击实体列表的编辑,添加实体值。
5.png

返回意图,点击图中的编辑,添加对话和参数。
6.png
7.png

前往后端服务,如图进入部署。
8.png

点击右下角的终端,输入pip install requests 安装模块

代码如下
import logging
import json
import base64
import random
import collections
import requests

USER_MAP = {}
KNOWLEDGE = [

"大米",
"餐巾纸",
"卫生纸",
"酱油"    

]
KNOWLEDGEJJDid = [

"4592915",
"100015114144",
"1082266",
"100006624003"    

]
def jdprice(l_index):
#京东

URL ='https://p.3.cn/prices/mgets?skuIds='+KNOWLEDGEJJDid[l_index]
headers = {
    'User-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36',
    'Cookie': '',
    'Connection': 'keep-alive',
    'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate, sdch',
    'Accept-Language': 'zh-CN,zh;q=0.8',
    'Host': 'p.3.cn',
    'Referer': 'https://book.jd.com/booktop/0-0-0.html?category=1713-0-0-0-10001-1'
}   
res = requests.get(URL,headers=headers)
jdp=json.loads(res.text)

return jdp[0]['p']

KNOWLEDGEJTB = [

"55.3",
"60",
"56.9",
"100006624003"    

]
def tbprice(l_index):

return KNOWLEDGEJTB[l_index]

KNOWLEDGEJPDD = [

"4592915",
"100015114144",
"1082266",
"100006624003"    

]
def pddprice(l_index):

return KNOWLEDGEJPDD[l_index]

def pricecx(l_index,maket):

if maket=='京东':
    return jdprice(l_index)
if maket=='淘宝':
    return tbprice(l_index)
if maket=='拼多多':
    return pddprice(l_index) 

print(pricecx(0,'淘宝'))

def common_reply(reply, result_type):

response = {
    "isBase64Encoded": "false",
    "statusCode": "200",
    "headers": {"content-type": "application/json"},
    "body": {
        "returnCode": "0",
        "returnErrorSolution": "",
        "returnMessage": "",
        "returnValue": {
            "reply": reply,
            "resultType": result_type,
            "executeCode": "SUCCESS",
            "msgInfo": "",
        }
    }
}
return response

未指定追问参数,音箱自动开麦,用户的回答可跳转到其它意图

def ask_reply(reply):

return common_reply(reply, 'ASK_INF')

结束对话的回复,回复后音箱闭麦

def result_reply(reply):

return common_reply(reply, 'RESULT')

def handler(event, context):

request = json.loads(event)
logger = logging.getLogger()
body = base64.b64decode(request['body']).decode()
data = json.loads(body)
maket=data['slotEntities'][0]['originalValue']

logger.info('request body:' + body)

# 从请求中获取意图参数以及参数值
intent_name = data['intentName']
user_id = getattr(data['requestData'], 'userOpenId', 'testUser')
global USER_MAP
linked_list = USER_MAP.get(user_id)

# 欢迎意图 或 用户缓存数据为空
if intent_name == "welcome" or linked_list is None:
    linked_list = collections.deque()
    random_index = random.randint(0, len(KNOWLEDGE) - 1)
    linked_list.append(random_index)
    USER_MAP[user_id] = linked_list
    
    
    return ask_reply(KNOWLEDGE[random_index]+'在'+maket+'平台的价格是'+pricecx(random_index,maket))
# 下一个意图,随机选择一个内容回复,并将index追加到用户数据的List集合最后
elif intent_name == "next":
    random_index = random.randint(0, len(KNOWLEDGE) - 1)
    linked_list.append(random_index)
    USER_MAP[user_id] = linked_list
    return ask_reply(KNOWLEDGE[random_index]+'在'+maket+'平台的价格是'+pricecx(random_index,maket))

# 上一个意图,将用户数据的List集合中最后一个index移除,并返回该index的内容。首先要判断集合内是否有元素,没有则不需要移除
elif intent_name == "prev":
    if len(linked_list) > 0:
        linked_list.pop()
    if len(linked_list) == 0:
        return ask_reply("这已经是第一个了。")
    return ask_reply(KNOWLEDGE[linked_list[len(linked_list) - 1]] +'在'+maket+'平台的价格是'+pricecx(linked_list[len(linked_list) - 1],maket))

# 退出意图,清除用户缓存
elif intent_name == "exit":
    USER_MAP.pop(user_id)
    return result_reply("已为您退出,再见。")



return result_reply("请检查意图名称是否正确,或者新增的意图没有在代码里添加对应的处理分支。")



相关文章
|
14天前
|
人工智能 小程序
【一步步开发AI运动小程序】十五、AI运动识别中,如何判断人体站位的远近?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,无需后台支持,具有快速、体验好、易集成等特点。本文介绍如何利用插件判断人体与摄像头的远近,确保人体图像在帧内的比例适中,以优化识别效果。通过`whole`检测规则,分别实现人体过近和过远的判断,并给出相应示例代码。
|
12天前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
82 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
13天前
|
人工智能 API 语音技术
TEN Agent:开源的实时多模态 AI 代理框架,支持语音、文本和图像的实时通信交互
TEN Agent 是一个开源的实时多模态 AI 代理框架,集成了 OpenAI Realtime API 和 RTC 技术,支持语音、文本和图像的多模态交互,具备实时通信、模块化设计和多语言支持等功能,适用于智能客服、实时语音助手等多种场景。
103 15
TEN Agent:开源的实时多模态 AI 代理框架,支持语音、文本和图像的实时通信交互
|
4天前
|
机器学习/深度学习 人工智能 安全
并非只有AI-2025年工作技能报告
全球最大的在线学习平台Coursera发布《2025年工作技能报告》,报告基于500万企业学习者和7,000多家机构的数据分析,揭示了2025年全球劳动力所需的关键技能趋势。报告强调,随着GenAI的快速发展,相关技能的课程注册量同比增长了866%,显示出对AI能力的需求激增。
25 9
|
2天前
|
人工智能 Serverless 视频直播
活动实践 | AI智能体实时语音互动
AI智能体实时语音互动方案提供端到端的实时音频交互,用户通过终端SDK与云端AI智能体进行音频通话。AI智能体接收音频输入,依据预定义工作流处理并生成响应,通过ARTC网络推送结果。该方案支持灵活编排AI组件如语音转文字、大语言模型等,确保高可用、低延迟的通信体验。用户可轻松创建和管理智能体及实时工作流,实现高效对话,并可通过示例网站体验功能。
|
8天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十七、如何识别用户上传视频中的人体、运动、动作、姿态?
【云智AI运动识别小程序插件】提供人体、运动、姿态检测的AI能力,支持本地原生识别,无需后台服务,具有速度快、体验好、易集成等优点。本文介绍如何使用该插件实现用户上传视频的运动识别,包括视频解码抽帧和人体识别的实现方法。
|
13天前
|
人工智能 小程序 UED
【一步步开发AI运动小程序】十六、AI运动识别中,如何判断人体站位?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,本地引擎无需后台支持,具备快速、体验好、易集成等优势。本文介绍如何利用插件的`camera-view`功能,通过检测人体站位视角(前、后、左、右),确保运动时的最佳识别率和用户体验。代码示例展示了如何实现视角检查,确保用户正或背对摄像头,为后续运动检测打下基础。
|
1天前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
60 0
|
19天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十三、自定义一个运动分析器,实现计时计数02
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,详细解析了俯卧撑动作的检测规则构建与执行流程,涵盖卧撑和撑卧两个姿态的识别规则,以及如何通过继承`sports.SportBase`类实现运动分析器,适用于小程序开发者。
|
19天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十二、自定义一个运动分析器,实现计时计数01
随着AI技术的发展,AI运动APP如雨后春笋般涌现,如“乐动力”、“天天跳绳”等,推动了云上运动会、线上健身等热潮。本文将指导你从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”,介绍运动识别原理、计量方式及运动分析器基类的使用,帮助你在小程序中实现运动计时和计数功能。下篇将继续探讨运动姿态检测规则的编写。