案例:电影评分技能

本案例将利用电影评分查询服务API(由豆瓣电影提供)为大家介绍:如何将API返回的槽位值关联到小程序路径,直达查询内容的小程序页面。

效果展示

查询电影评分的场景有多种,本案例以如下两种情景进行配置:
1.用户直接发起查询电影评分(意图:查询电影评分)
2.先查询某电影的演员表,进而查询该电影的电影评分(意图:演员表、演员表-第二轮)

如:当用户想查询《中国机长》的电影评分时,机器人回答可直达《中国机长》相应页面的小程序卡片,并且在小程序卡片上展示电影《中国机长》的评分和评价人数。
movie movie

步骤一:创建意图

创建高级技能“电影评分查询”,添加如下三种意图。

movie

步骤二:添加用户问法

在“查询电影评分”的意图里,我们配置用户查询电影评分时的常见问法。如果用户直接给出待查的电影名称,我们可以结合“电影名称”语义槽配置用户问法,如果用户没有给出待查的电影名称,我们稍后可在语义槽追问处设置追问。
movie
同理,在第一轮先查询某电影的演员表,第二轮再查询该电影的电影评分的意图里,我们将用户问法分别补充完整。 movie movie

步骤三:配置语义槽设置

从查询电影评分的API中我们可知,我们需要提供的输入参数是“电影名称”,API运行成功后会返回演员、评分、标题、类型等输出参数。我们在三个意图的语义槽设置处,都将“电影名称”语义槽关联上相应的影视综等词典,并打开追问,确保输入参数填写完整以成功运行API。
movie

步骤四:配置机器人回答

这三个意图用到的都是同一个API,我们在三个意图下均选择“服务接口调用”的回复类型,并选择“电影评分查询服务-电影评分查询”API,在“接口配置”处将输入参数“电影名称”对应上前面配置好的“电影名称”语义槽,保持语义槽的传递。
在回复主演名单的“演员表”意图下,配置回答主演的机器人回复话术。
movie
在回复查询评分结果的“查询电影评分”、“演员表-第二轮”意图下,机器人回答配置方法相同,都是弹出能直接拉起目标电影页面的小程序卡片。于是我们在调用成功的状态下,选择“回复结果”并选择“小程序”,按照要求填写小程序信息:

  • 【小程序APPID】:APPID的获取方法在使用文档【创建问题-直接回复】一节有详细介绍,本案例中,我们将拉起“豆瓣电影”小程序。
  • 【小程序路径】:在同一个小程序下,不同电影相应的小程序页面路径不同。输入的电影名称不同,接口返回的路径参数就不同。“$ABC$”代表着引用这个名为“ABC”的槽位,所以,我们可以用“$槽位名称$”的语法关联到路径参数对应槽位信息。在“豆瓣电影”小程序中,路径参数已经由“doubanjumpurl”完整给出,可以直接填写“/$doubanjumpurl$”;对于输出参数没有给出完整路径的小程序,可以在小程序路径后关联路径参数的槽位,如:
    movie
  • 【卡片标题】:同样使用“$槽位名称$”的语法进行关联,标题文本中“$槽位名称$”的部分会自动替换程相应槽位的内容值。比如此案例中,我们在卡片标题中填写“$标题$的评分为:$评分$”,如果“标题”的语义槽值为“中国机长”,“评分”为的语义槽值“10”,卡片标题的前端展示则为“中国机长的评分为:10”。
  • 【卡片样式】:上传相应的图片

所以在本案例下,小程序配置如下:
movie
如果查询失败,则告知用户没有查询到相应的电影评分:
movie
这样,三个意图的用户问法、语义槽设置、机器人回复就配置好了。

步骤五:多轮对话

从演员表进入电影评分查询的场景涉及有先后顺序的多轮对话,并且通过演员表询问电影评分与直接查询电影评分的用户问法有一定程度的重叠,所以我们在【演员表】意图的页面底部选择不结束对话,并设置优先命中意图【演员表-第二轮】。同时,在意图【演员表-第二轮】的页面上方选择仅承接意图【演员表】,这样,多轮对话的先后顺序也设置好了。
movie

通过以上配置,查询电影评分的技能就配置好了,通过将API返回的槽位值关联到小程序路径,可以直接拉起相应电影的小程序页面,并在前端卡片上直接展示该电影的评分。开发者可以应用同样的逻辑,依据自己的需求,将用户一步到位地引入相应的小程序页面。