# 技能标准请求

标准请求是所有技能都需要实现的请求,这些请求中包含请求格式文档中提到的所有字段:version, session, context, request。

标准请求包含:

  • LaunchRequest: 用户通过入口词“打开{技能名称}”进入你的技能时,你将会收到这个请求。
  • TextRequest: 在你的技能中,用户的语音请求未经过iFLYOS解析直接请求你的服务器时,你将会收到这个请求。
  • IntentRequest: 用户的语音请求经过iFLYOS解析后请求你的服务器时,你将会收到这个请求。
  • SessionEndedRequest: 用户主动退出技能结束会话时,你将会收到这个请求。

# LaunchRequest

# 消息示例

{
  "type": "LaunchRequest",
  "requestId": "f78b7d68...",
  "timestamp": "2018-08-06T16:13Z ",
}

# 参数说明

参数 描述 类型 必须出现
type 请求类型,这里取值 LaunchRequest String
requestId 代表请求的唯一标识符。 String
timestamp 请求时间戳,以ISO 8601格式发送 String

# TextRequest

# 消息示例

{
  "type": "TextRequest",
  "requestId": "f78b7d68...",
  "timestamp": "2018-08-06T16:13Z ",
  "query": {
    "type": "TEXT",
    "original":"今天天气怎么样?"
  }
}

# 参数说明

参数 描述 类型 必须出现
type 请求类型,这里取值 TextInputRequest String
requestId 代表请求的唯一标识符。 String
timestamp 请求时间戳,以ISO 8601格式发送 String
query 请求信息。
- type:请求类型,取值TEXT
- original:用户语音经过IVS理解后生成的文本
String

# IntentRequest

当用户命中了技能中定义的意图时发送。

注意

目前仅当你的技能使用了AudioPlayer指令后,用户唤醒设备后的语料命中了音频内置意图时,你将会收到IntentRequest,你会收到的intent.name是有限的。

# 消息示例

{
  "type": "IntentRequest",
  "requestId": "TbXlwz-F86pYnD0VwWbqauUDRwiNOU5i70DgS54E8wFCqpK2ku9bGYKzCGfm1mNw",
  "timestamp": "2018-09-05T02:59:45.503551Z",
  "query": {
      "type": "TEXT",
      "original": "下一首"
  },
  "intent": {
    "name": "ivs_next_intent",
    "slots": {
    }
  }
}

# 参数说明

参数 描述 类型 必须出现
type 请求类型,这里取值 IntentRequest string
requestId 代表请求的唯一标识符。 string
timestamp 请求时间戳,以ISO 8601格式发送 string
query 请求信息。
- type: 请求类型,取值TEXT
- original: 用户语音经过ivs理解后生成的文本
object
intent 意图信息 object
intent.name 意图名称,现在支持的意图名称如下表 string
intent.slots 词槽键值对。该字段可以为空。只显示解析出来的槽。IVS内置意图此项为空。 map

IntentName

IntentName 用户语料 用户意图 Response建议
ivs_next_intent 下一首;切歌;切换到下一首 播放下一首 Response中包含AudioPlayer.Play指令,播放下一首歌曲
ivs_previous_intent 上一首;回到上一首;切换到上一首 播放上一首 Response中包含AudioPlayer.Play指令,播放上一首歌曲
ivs_pause_intent 暂停;停下来;暂停一下 暂停播放 Response中包含AudioPlayer.Stop指令,停止播放,并通过后续接到的AudioPlayer.PlaybackStopped请求记录播放进度
ivs_resume_intent 继续播放;接着播 继续播放 Response中包含AudioPlayer.Play指令,从上一个接到的AudioPlayer.PlaybackStopped请求记录的播放进度处开始播放
ivs_inquire_media_intent 现在播的是什么;当前播放节目是什么;这是什么歌 查询当前播放的音频的名称 Response中通过outputSpeech传输回复文本
ivs_inquire_artist_intent 这是谁的歌;现在在播谁的节目 查询当前音频作者 Response中通过outputSpeech传输回复文本

# SessionEndedRequest

用户触发了结束会话的操作时发送。

消息示例

{
  "type": "SessionEndedRequest",
  "requestId": "f78b7d68...",
  "timestamp": "2018-08-06T16:13Z ",
  "reason": "ERROR",
  "error": {
    "type": "INVALID_RESPONSE",
    "message": "无效回复"
  }
}

参数说明

参数 描述 类型 必须出现
type 请求类型,这里取值 SessionEndedRequest String
requestId 代表请求的唯一标识符。 String
timestamp 请求时间戳,以ISO 8601格式发送 String
reason 结束会话的原因,取值:
- USER_INITIATED:用户明确结束了会话;
- ERROR:错误导致会话结束;
- EXCEEDED_MAX_REPROMPTS:用户无输入或多次输入无法理解
String
error 当结束原因为ERROR时,出现该字段。包含:
- type: 错误类型,取值:
- INVALID_RESPONSE,无效回复
- DEVICE_COMMUNICATION_ERROR,设备通讯错误
- INTERNAL_ERROR,内部错误
- message: 错误信息
Object