在第三方技能中,您可以连接到自己已有的服务或其他系统,以将自定义的富回复发送给终端用户。
第三方技能都可以启用回答服务。默认情况下,回答服务处于禁用状态。当回答服务启用时,请求以及一些其他信息将被发送到您填写的回答服务 API 地址。
下图显示了第三方技能回答服务的简要处理流程:
首先,如果您还没有技能
,通过机器人
内部或我的技能
来创建一个新的对话技能。
下一步,进入技能。从左侧的“回答服务”面板来启用回答服务。点击滑动按钮打开它,并填入您的回答服务 API 服务地址。
使用回答服务时,我们平台将向您的服务 Url 发送 HTTP GET 请求。该 GET 请求的会带上用户的问题。
示例:
假设您填的 api url 是 http://my.domain.com/services/endpoint?q=
当用户说你好
时,平台将发起如下请求
http://my.domain.com/services/endpoint?q=你好
您的服务应该基于查询作出行动并返回动态响应。您的服务可以访问其他第三方查询 API,并将其返回给终端用户。您也可以增加自定义返回内容,如图片、视频、卡片等。
您的服务的返回格式须符合 DialogAnswer 格式,示例如下。有关我们支持的完整响应类型集(包括图片、视频、音频、卡片、快速回复等),请参阅我们的富回复文档。
{"stage":[{"text":{"text":["您好,有什么可以帮您?"]}},{"image": {"title": "Image Title","url": "http://www.example.org/Costco-Waterloo-Ontario-Gas-Station.jpg","alt": "Some image."}}]}
为了表明已发生错误,请在输出/回调中添加状态、错误信息和异常字段。
字段名称 | 类型 | 是否必要 | 描述 |
---|---|---|---|
status | String | 否 | 如果值为“failed”,表明当前操作失败。 |
errorMsg | String | 否 | 发送回终端用户的错误信息。 |
errorMsgFull | String | 否 | 完整的错误消息。在调试信息中可用,用于常规调试。 |
下面是一个示例:
{"status":"failed","errorMsg":"java.lang.NullPointerException.","errorMsgFull":"Exception in thread main java.lang.NullPointerException at Entity.<init>(Entity.java:24) at Main.<init>(Main.java:22) at Main.main(Main.java:18)"}