天猫精灵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("请检查意图名称是否正确,或者新增的意图没有在代码里添加对应的处理分支。")



相关文章
|
10天前
|
机器学习/深度学习 人工智能 编解码
深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
【9月更文挑战第2天】深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
 深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
|
6天前
|
人工智能 Cloud Native Serverless
来云栖大会!探展云上开发,沉浸式体验云原生 + AI 新奇玩法
计算馆将展示中国最先进的云计算产业链全景,从底层硬件到数据创新,从云计算基础设施到数据管理服务、人工智能平台和模型服务,全景式呈现 AI 时代云计算最新技术形态和产品进展。计算馆有哪些推荐?往下看!
|
11天前
|
人工智能 Linux iOS开发
AI超强语音转文本SenseVoice,本地化部署教程!
【9月更文挑战第7天】以下是AI超强语音转文本工具SenseVoice的本地化部署教程:首先确保服务器或计算机满足硬件和软件要求,包括处理器性能、内存及操作系统等。接着从官网下载适合的安装包,并按操作系统进行安装。配置音频输入设备和语言模型后,启动SenseVoice并测试其语音转文本功能。最后根据实际使用情况进行优化调整,并定期更新以获取最新功能。详细步骤需参照官方文档。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
突破AI大模型工业化开发,生成式AI迎来全链条服务商
突破AI大模型工业化开发,生成式AI迎来全链条服务商
突破AI大模型工业化开发,生成式AI迎来全链条服务商
|
1月前
|
人工智能 自然语言处理 Java
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
文章介绍了Spring AI,这是Spring团队开发的新组件,旨在为Java开发者提供易于集成的人工智能API,包括机器学习、自然语言处理和图像识别等功能,并通过实际代码示例展示了如何快速集成和使用这些AI技术。
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
|
25天前
|
人工智能 分布式计算 数据处理
Big Data for AI实践:面向AI大模型开发和应用的大规模数据处理套件
文叙述的 Big Data for AI 最佳实践,基于阿里云人工智能平台PAI、MaxCompute自研分布式计算框架MaxFrame、Data-Juicer等产品和工具,实现了大模型数据采集、清洗、增强及合成大模型数据的全链路,解决企业级大模型开发应用场景的数据处理难题。
|
29天前
|
人工智能 自然语言处理 测试技术
AI协助开发:未来软件工程的变革
在科技飞速发展的今天,人工智能(AI)已成为软件开发领域的变革力量。AI不仅能自动生成与优化代码、提高开发效率及代码质量,还能实现自动化测试、快速定位错误,确保软件的稳定性与可靠性。通过自然语言处理技术,AI简化了需求分析过程;在项目管理上,AI能优化任务分配,提升团队协作效率。尽管AI的应用带来了诸如数据隐私等新挑战,但随着技术的进步,AI将持续深化参与软件开发的各个环节,为开发人员提供强有力的支持,推动行业向前发展。
|
1月前
|
机器学习/深度学习 人工智能 搜索推荐
AI低代码平台:创新开发新选择
Zoho Creator、Airtable、Appian、Creatio Atlas及织信等低代码平台,通过集成AI功能如预测分析、情感分析、自动化文案创作等,显著提升了开发效率与智能化水平。例如,Zoho Creator利用AI预测客户需求并分析情绪;Airtable借助OpenAI模型自动生成代码与文案;Appian通过AI技能自动处理文档与邮件;Creatio Atlas运用AI优化决策流程并提供个性化推荐;织信则集成ChatGPT与Stable Diffusion,实现智能开发与图像生成。这些平台不仅支持多种业务场景,还简化了应用程序开发流程。
63 5
|
19天前
|
Java Spring 人工智能
AI 时代浪潮下,Spring 框架异步编程点亮高效开发之路,你还在等什么?
【8月更文挑战第31天】在快节奏的软件开发中,Spring框架通过@Async注解和异步执行器提供了强大的异步编程工具,提升应用性能与用户体验。异步编程如同魔法,使任务在后台执行而不阻塞主线程,保持界面流畅。只需添加@Async注解即可实现方法的异步执行,或通过配置异步执行器来管理线程池,提高系统吞吐量和资源利用率。尽管存在线程安全等问题,但异步编程能显著增强应用的响应性和效率。
29 0
|
19天前
|
人工智能 Java Spring
Spring框架下,如何让你的日志管理像‘AI’一样智能,提升开发效率的秘密武器!
【8月更文挑战第31天】日志管理在软件开发中至关重要,不仅能帮助开发者追踪问题和调试程序,还是系统监控和运维的重要工具。在Spring框架下,通过合理配置Logback等日志框架,可大幅提升日志管理效率。本文将介绍如何引入日志框架、配置日志级别、在代码中使用Logger,以及利用ELK等工具进行日志聚合和分析,帮助你构建高效、可靠的日志管理系统,为开发和运维提供支持。
27 0