Composer框架HTTP请求响应处理:如何提取Response文本内容
问题与解决建议
问题详情
我们为地方政府开发一款处理内外部流程的聊天机器人,调用API获取特定服务联系信息时遇到以下问题:
- HTTP请求能成功返回数据,但响应里有冗余内容,我们只需要提取其中的「Response」文本
- 尝试用
${dialog.api_response.content.Response}提取时,直接导致HTTP请求失败 - 使用
${x.content}可成功获取结果,但返回内容包含Tags、response等多余字段 - 当前用语法合规的SSML响应做测试,且微软Framework Composer的相关文档十分匮乏
可行解决办法
无需修改API,在Composer内处理
- 用表达式函数解析响应
先通过${x.content}获取完整响应,再用json()函数将其转换为对象后提取目标字段,示例写法:${json(x.content).Response}。如果响应是嵌套结构,需逐层解析,比如${json(x.content).data.Response}(具体结构按实际返回内容调整)。 - 添加「设置属性」步骤
在HTTP请求步骤之后,新增「设置属性」操作,新建一个属性(比如dialog.targetResponse),将解析后的目标字段赋值给它,后续直接调用该属性即可。示例赋值表达式:json(dialog.api_response.content).Response。
注意:如果API返回的不是JSON格式,需先确认响应格式;若为JSON但解析失败,检查响应头的Content-Type是否为application/json。
修改API端点响应格式
如果Composer内处理存在阻碍,可直接让API仅返回所需的「Response」文本内容,剔除冗余字段,这样调用时直接用${dialog.api_response.content}即可获取目标内容。
内容的提问来源于stack exchange,提问作者Matthew Laws
相关产品推荐
相关产品推荐

