WebApi编写说明

 

一. 简介


    web API 别名webhook,是一个方法为POST、请求响应body格式为json的HTTP/HTTPS接口,基于restful风格,不限语言。供开发者在DUI平台使用内容资源,其中json的格式为key、value对。

 

二. API配置


属性

说明

URL

开发者在定制平台上输入的资源地址,强烈建议使用https。

参数名称

请求json的key,一般需要和对话的slot对应

取值

请求json的value。可以对应于对话的某个slot,对话调用webhook时,会将解析出的slot值作为对应key的value值传递给webhook。也可以填入一个常量值,该情况下,当webhook被调用时,对应key的值为常量

 

  • 返回结果

      返回的json可以通过约定的格式适配内置控件,内置控件包括:内容卡片控件、列表控件、多媒体控件、内嵌网页控件,具体描述见:https://www.duiopen.com/docs/ct_skill_nativeAPI中的"nativeapi返回数据规范"。

 

三. webhook示例


以汇率换算webhook为例,配置webhook服务接口地址: 

 




  • 请求参数设置:

 

 

  • 返回数据字段映射

       如果使用dui标准控件,则返回字段名则需要和控件字段一致,标准控件的使用参数参考:http://www.duiopen.com/docs/ct_skill_nativeAPI。如果是开发者自定义控件或者自定义使用规则,则不受此限制。

如果是使用返回字段进行nlg播报,则使用字符$来引用返回字段。

比如定义对话回复:


 

  • 数据示例

       在dui控制台输入:"100欧元兑换多少人民币"说法

 


    dui将会对说法进行解析,然后映射成定义的参数字段,对webhook服务发起请求。本次示例请求uri如下:

 

/webhook-v2/exchange/index?productId=tryProductId&deviceName=DUI-ODCP-f7482e70-2547-11ea-9135-9d3d851244a8&userId=DUI-ODCP-f7482e70-2547-11ea-9135-9d3d851244a8_tryProductId&RecordId=cf776e0f51314f6498a65f149019e7d5&SessionId=152645f44b354f758e67d7710893e0b8&skillId=2019031800001146

 

  • uri参数说明

 

参数

类型

说明

productId

string

所属产品ID

deviceName

string

设备ID

userId

string

用户ID

RecordId

string

本次请求全链路唯一ID

SessionId

string

本次会话ID

skillId

string

技能ID

 


汇率webhook收到的POST请求body数据如下:

{
	"nlu": {
		"skillId": "2019031800001146",
		"input": "100欧元兑换多少人民币",
		"skill": "汇率",
		"skillVersion": "latest",
		"source": "dui",
		"systime": 72.419189453125,
		"semantics": {
			"request": {
				"slots": [
					{
						"name": "intent",
						"value": "汇率"
					},
					{
						"pos": [
							0,
							2
						],
						"rawvalue": "100",
						"name": "原始金额",
						"rawpinyin": "100",
						"value": "100"
					},
					{
						"pos": [
							3,
							4
						],
						"rawvalue": "欧元",
						"name": "原始币种",
						"rawpinyin": "ou yuan",
						"value": "欧元"
					},
					{
						"pos": [
							9,
							11
						],
						"rawvalue": "人民币",
						"name": "目标币种",
						"rawpinyin": "ren min bi",
						"value": "人民币"
					}
				],
				"task": "汇率"
			}
		},
		"version": "2019.1.15.20:40:58",
		"timestamp": 1577080233
	},
	"duiWidget": "text",
	"from": "欧元",
	"fromNumber": "100",
	"intent": "汇率",
	"rec": "100欧元兑换多少人民币",
	"to": "人民币"
}

 

  • 请求body字段说明:

 

参数

类型

说明

nlu

Object

nlu语义解析相关数据

from

string

定义的参数:原始币种

to

string

定义的参数:目标币种

fromNumber

string

定义的参数:换算金额

 

  • webhook返回的数据:
    {
    	"errorcode": "100100",
    	"extra": {
    		"from": "欧元",
    		"to": "人民币",
    		"fromNumber": "100",
    		"result": "776.56"
    	}
    }​

 

根据控件约定的字段映射,或者直接引用返回的数据,就可以进行数据展示。 
完整的一次webhook请求,数据交换已经完成了。

 

四. 示例代码


 

语言 更新说明 源码下载
go 1.汇率查询示例源码V1.0 下载
java 1.汇率查询示例源码V1.0 下载