Watson Conversation动态获取指定实体值列表的实现问询
解决方案:动态返回Watson Assistant实体的所有值
我之前也碰到过一模一样的需求,不用静态上下文数组的话,咱们可以通过Webhook调用Watson Assistant API的方式实现动态获取实体全量值,具体步骤如下:
1. 先定义对应的查询意图
首先得让Watson准确识别用户“查询所有水果”的请求,所以创建一个意图(比如命名为list_fruits),添加这些训练样本:
- 你们有什么水果?
- 能提供哪些水果?
- 所有可选的水果是啥?
- 水果种类有哪些?
多添加几个相似表述,确保Watson能稳定触发这个意图。
2. 搭建Webhook后端服务
Watson对话流本身没法直接读取实体的完整值列表,所以需要通过Webhook调用Watson的官方API来获取。这里以Python为例写个极简后端:
import requests from flask import Flask, request, jsonify app = Flask(__name__) # 替换成你自己的Watson认证信息和技能ID WATSON_API_KEY = "你的API密钥" WATSON_ASSISTANT_URL = "你的Assistant服务URL" SKILL_ID = "你的技能ID" ENTITY_ID = "Fruit" @app.route('/get-fruit-values', methods=['POST']) def get_fruit_values(): # 调用Watson Assistant的实体值列表API api_url = f"{WATSON_ASSISTANT_URL}/v2/skills/{SKILL_ID}/entities/{ENTITY_ID}/values?version=2021-06-14" headers = { "Content-Type": "application/json", "Authorization": f"Bearer {WATSON_API_KEY}" } response = requests.get(api_url, headers=headers) if response.status_code == 200: # 提取所有实体值并整理成自然语言格式 value_list = [item['value'] for item in response.json()['values']] if len(value_list) > 1: fruit_text = ", ".join(value_list[:-1]) + " 和 " + value_list[-1] else: fruit_text = value_list[0] return jsonify({"fruits": fruit_text}) else: return jsonify({"fruits": "抱歉,暂时无法获取水果列表"}) if __name__ == '__main__': app.run(port=5000)
你也可以用Node.js、Java等自己熟悉的语言实现,核心逻辑就是调用Watson的List entity values接口拿到所有值,再整理成友好的文本格式返回。
3. 在Watson Assistant中配置Webhook和对话节点
- 启用Webhook:进入你的技能,点击左侧菜单栏「设置」→「Webhook」,填入刚才搭建的服务地址(比如
http://你的服务器地址:5000/get-fruit-values),保存配置。 - 配置对话节点:
- 新建一个对话节点,触发条件设为
#list_fruits(匹配我们定义的意图)。 - 在节点的「然后」部分,选择「调用Webhook」,选中刚才配置的Webhook。
- 添加响应内容,引用Webhook返回的结果:
我们目前提供的水果有:<? $webhook_result.fruits ?>
- 新建一个对话节点,触发条件设为
这样当用户问“你们有什么水果?”时,Watson会触发意图、调用Webhook获取最新的Fruit实体值列表,然后动态返回给用户。
补充:简易替代方案(适合值少变动的场景)
如果你的实体值不会频繁更新,也可以用个小技巧:创建Fruit实体时,把所有值的列表写在实体的「描述」字段里(比如“Apple、Orange、Banana、Kiwi”),然后在对话节点的响应中直接引用<? entities['Fruit'].description ?>。这种方法不用写后端,但需要手动维护描述字段,适合值很少变动的场景。
内容的提问来源于stack exchange,提问作者Guido Dizioli
相关产品推荐
相关产品推荐

