🎈 创建技能应用
- 首先进入天猫精灵开放平台
https://www.aligenie.com
- 从右上角的
控制台
中选择技能应用平台
- 点击创建新技能,即可开始你的创作之旅了
🎈 选择技能配置
- 因为我们是自己开发,所以选择
语音技能
中的自定义模版 - 技能名称:最好取一个跟你开发的功能相对应的名字,比较好识别
- 技能调用词:是用来唤醒天猫精灵的这个功能的词语
- 收费情况:因为收费暂时不面对个人用户,所以我们选择免费的
- 部署方式:我选择的在线开发,如果你在阿里云有自己的服务器,也可以选择FAAS方式进行开发
🎈 选择开发语言
- 然后选择自己想要开发的语言
- 暂时平台提供三种语言来开发天猫精灵
java、nodejs、python
- 因为个人更喜欢
python
,这里我选择python
来进行开发 - 对于模版的选择,我们看到除了空白模版,我们可以看到系统还会提供另外的三个模版供你选择,如果你开发的是一个电影功能,可以选择对应的电影模版
- 系统提供的模版,里面已经写好了一些功能逻辑方法,不需要从0开发,可以根据自己的功能去修改其中的代码即可
- 这里因为我开发的功能是微博热搜实时提供,所以并不适用于其他模版,我选择的是空白模版
- 然后点击创建即可
🎈 天猫精灵开发流程
- 在创建上面的流程后,我们可以看到天猫精灵功能的开发流程
- 主要是配置基本信息、定义交互模型、编写代码逻辑、添加屏幕显示设备、测试、发布
- 上面的三个步骤就是进行基本信息的配置,所以到了这里可以看到第一步是已经完成的状态了
🎈 定义语音交互模型
- 什么是语音交互模型:其实就是你说出你设定的关键词,然后天猫精灵可以自动触发你编写的代码里面的方法,进行执行同你交互
- 所以在这里我们需要去定义一下关键词
- 意图:其实就是自定义的关键字
- 公共意图:其实就是官方已经定义好的一些关键词,比如返回桌面、接听电话等等
🎈 自定义意图
- 我们首先需要创建一个默认意图
welcome
- 就是你说第二步中设置的调用词的时候,天猫精灵默认触发的方法
- 我们还需要创建一个搜索意图
queryHotNews
- 用来进行触发天猫精灵实现微博热搜的功能
🎈 定义实体
- 实体是指某领域词汇的集合,技能平台提供了丰富的系统词典来支持技能引用
- 这里我们需要定义
platform
实体来表示我们需要搜索哪个平台的热门新闻 - 还需要定义一个
date
日期实体来表示我们需要查找哪天的热门新闻 - 其实关于热门搜索我们定义这两个实体就已经足够了
- 这里只是教程,当然在开发中我只开发当天的热门新闻播放,所以 date 实体对于我而言意义并不大
- 如果是自定义实体的话,需要自己添加实体值
- 当然我这里只开发微博热门功能,其实只定义微博即可,其他的平台只用做展示
🎈 实体的使用
- 在定义完实体后,我们需要在意图中使用实体
- 也就是告诉天猫精灵,在对话中,将哪些关键字剥离成实体,供开发人员去做逻辑代码的编写
- 所以我们要在搜索意图
queryHotNews
中使用自己设置的实体 - 所以我们点击该意图去编辑,在编辑页面可以看到单轮对话表达这个选项
- 这个选项就是你输入什么话,天猫精灵才会对你的话作出反应
- 这里我们可以输入几个搜索对话的例句,如下
- 例句其实就是你跟天猫精灵说这些例句的时候,你才会得到回复,也就是正常用户跟天猫精灵时候所说的话
- 可以看出我们在例句中写死了交流的句式,这样非常难以变通,如果平台很多,你就得把用户所有想问的话语都写下来,这肯定是不现实的,所以我们需要在例句中引入实体
- 我们将关键词选中,系统就会跳出实体的选择框,你可以自定义将关键词标记成对应的实体
- 这里我们将今天标记成
date
实体 - 将微博标记成
platform
实体 - 就可以将对话关键词直用实体代替,当天猫精灵捕捉到这些实体时,会将其作为参数传递给你,你进行响应的逻辑编写即可
🎈 代码开发
- 此时我们可以进入开发流程的第三步
- 进行代码开发了,首先我们需要创建应用,会进行项目和代码的初始化
- 然后进入云编辑器中编写代码即可
- 可以看到初始化的代码中只有简单的回复逻辑
- 那是因为我们选择的是空白模版
defhandler(event, context): request=json.loads(event) logger=logging.getLogger() body=base64.b64decode(request['body']).decode() data=json.loads(body) logger.info(data) response= { "isBase64Encoded": "false", "statusCode": "200", "headers": {"content-type": "application/json"}, "body": { "returnCode": "0", "returnErrorSolution": "", "returnMessage": "", "returnValue": { "reply": '欢迎使用天猫精灵', "resultType": "RESULT", "executeCode": "SUCCESS", "msgInfo": "" } } } returnresponse
🎈 热搜开发
- 通过
intent_name = data['intentName']
可以获得意图名称 - 通过
data['slotEntities']
可以获得所有的实体参数 - 这里我们需要引入
requests
模块,所以我们需要在终端执行pip install requests
命令进行安装 - 我们在逻辑里面判断,如果是欢迎 welcome 的意图的话,就回复欢迎使用飞兔热搜
- 如果是
queryHotNews
意图的话,就查询微博热搜接口进行播放即可
importloggingimportjsonimportbase64importrequestsdefreply(msg): response= { "isBase64Encoded": "false", "statusCode": "200", "headers": {"content-type": "application/json"}, "body": { "returnCode": "0", "returnErrorSolution": "", "returnMessage": "", "returnValue": { "reply": msg, "resultType": "RESULT", "executeCode": "SUCCESS", "msgInfo": "" } } } returnresponsedefhandler(event, context): request=json.loads(event) logger=logging.getLogger() body=base64.b64decode(request['body']).decode() data=json.loads(body) logger.info(data) intent_name=data['intentName'] platform=Nonedate=Noneforslotindata['slotEntities']: ifslot['intentParameterName'] =="platform": platform=slot['originalValue'] elifslot['intentParameterName'] =="date": date=slot['originalValue'] ifintent_name=='welcome': returnreply('欢迎使用飞兔热搜~') ifintent_name=='queryHotNews': response=requests.get('https://api.mdnice.com/trendings') response=json.loads(response.text) ifresponse['code'] !=0: returnreply('网络似乎出现了问题呢~') current=0msg=''foriteminresponse['data'][1]['trendingItemList']: current+=1msg+='{},{}\n' . format(current, item['title']) ifcurrent>=10: breakreturnreply(msg)
🎈 预发环境部署
- 我们需要先将代码推送到线上
- 然后选择将其发布到预发环境即可
🎈 在线测试和真机测试
- 在部署之后我们就可以进行测试了
- 我们可以使用在线测试和真机测试看看自己程序是否可以正常运行
- 真机测试需要购买天猫精灵才可以的哦,需要跟天猫精灵说
打开技能测试
即可输入验证码进行设备绑定了 - 真机测试跟在线测试是一样的,只是多了个语言播放功能
- 至此,微博热搜功能开发完毕