AI语音技能云开发(天猫精灵技能)学习笔记(结营)

通过5天的学习,基本了解天猫精灵技能开发的流程,下面做一个小demo,作为结营作业

目标:购物清单中物品的价格查询

一、登录,进入控制台,创建新技能

天猫精灵开放平台首页 (aligenie.com)https://aligenie.com/

二、利用模板快速开发

点击后端服务,点击创建应用,关联阿里云开发账户

语言选择python,模板选择地理小百科,点击创建

三、编辑意图

等待一下,来到语言互交模型,发现意图已经自动帮我创建好了

点击左侧的实体,创建一个自定义实体,如图

回到意图,编辑欢迎意图

设置好之后,提交

 在上一条和下一条意图中,增加前置意图,设置好参数

四、编辑后台代码

点击代码编辑、前往ide开发

进入阿里云开发平台

阿里云-云开发平台云开发平台,是阿里云面向广大开发者提供的云上研发工作平台,助力研发团队实现工作的在线化(团队在线、环境在线、代码在线、协同在线)以及研发模式Serverless化,帮助研发团队实现对行业架构经验及架构服务的高效分享与传播,极致提升研发效率,极致降低研发成本。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BJFDLOHM-1637560653644)(https://workbench.aliyun.com/web-statics/logo-square@2x.png)]https://workbench.aliyun.com/点击右下角的终端,输入pip install requests 安装模块

代码如下

    URL ='https://p.3.cn/prices/mgets?skuIds='+KNOWLEDGEJJDid[l_index]

        'User-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36',

        'Connection': 'keep-alive',

        '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 KNOWLEDGEJTB[l_index]

    return KNOWLEDGEJPDD[l_index]

def pricecx(l_index,maket):

        return jdprice(l_index)

        return tbprice(l_index)

        return pddprice(l_index) 

def common_reply(reply, result_type):

        "isBase64Encoded": "false",

        "statusCode": "200",

        "headers": {"content-type": "application/json"},

            "returnCode": "0",

            "returnErrorSolution": "",

            "returnMessage": "",

            "returnValue": {

                "reply": reply,

                "resultType": result_type,

                "executeCode": "SUCCESS",

                "msgInfo": "",

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

    return common_reply(reply, 'ASK_INF')

    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')

    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个

红包金额最低5元

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

抵扣说明:

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

余额充值