Dialogflow整数参数添加及糖尿病机器人胰岛素计算实现咨询
Dialogflow实现胰岛素剂量计算功能操作指南
一、添加参数配置
- 打开Dialogflow控制台,进入目标代理(Agent)。
- 新建或打开用于计算的意图(如命名为「胰岛素剂量计算」)。
- 在**参数(Parameters)**模块添加两个参数:
- 参数1:名称设为
carbohydrate_intake,实体类型选@sys.number(支持整数/小数,若强制整数则选@sys.integer),勾选「必填」,设置提示短语为「请输入碳水化合物摄入量」。 - 参数2:名称设为
carbohydrate_ratio,实体类型同上述,勾选「必填」,提示短语设为「请输入碳水化合物系数」。
- 参数1:名称设为
二、构建对话触发流程
- 给意图设置触发短语,比如「计算胰岛素剂量」「我要算打多少胰岛素」,用户发送这类语句时触发意图。
- 当意图启动后,Dialogflow会自动检查参数是否完整:若缺失第一个参数,自动发送提示短语;用户输入后提取参数,再检查第二个参数,缺失则发送对应提示,直到两个参数都收集完成。
三、实现剂量计算逻辑
方式1:使用Webhook(推荐,支持复杂计算与数据传递)
- 在意图的**Fulfillment(实现)**区域,勾选「启用Webhook调用以获取响应」。
- 编写Webhook服务(以Node.js为例):
function calculateInsulinDose(agent) { // 提取Dialogflow传递的参数 const carbIntake = parseFloat(agent.parameters.carbohydrate_intake); const carbRatio = parseFloat(agent.parameters.carbohydrate_ratio); // 计算剂量,可根据需求调整精度 const dose = (carbIntake / carbRatio).toFixed(1); // 返回对话响应 agent.add(`您需要注射${dose}单位胰岛素`); // 将结果存入上下文,方便前端获取 agent.setContext({ name: 'insulin_calculation_result', lifespanCount: 3, parameters: { insulin_dose: dose } }); } - 将Webhook服务部署后,把服务地址填入Dialogflow的Fulfillment配置中。
方式2:控制台直接配置响应(简单场景)
在意图的**响应(Responses)**模块,开启「启用参数值的动态响应」,添加文本响应:
您需要注射#{$parameters.carbohydrate_intake / $parameters.carbohydrate_ratio}单位胰岛素
(注:此方式精度控制有限,仅适合基础计算)
四、将计算结果传递到页面
通过Dialogflow前端集成库监听对话结果,提取计算值并渲染到页面:
// 网页前端示例代码 const client = new window.Dialogflow.WebhookClient({ sessionId: 'unique-session-id', languageCode: 'zh-CN' }); client.on('response', (response) => { const queryResult = response.queryResult; // 从上下文或参数中获取计算结果 const insulinDose = queryResult.outputContexts.find(ctx => ctx.name.includes('insulin_calculation_result'))?.parameters.insulin_dose || (parseFloat(queryResult.parameters.carbohydrate_intake) / parseFloat(queryResult.parameters.carbohydrate_ratio)).toFixed(1); // 将结果插入页面指定元素 document.getElementById('result-container').innerText = `推荐注射剂量:${insulinDose}单位`; });
内容的提问来源于stack exchange,提问作者Константин Вихованець
相关产品推荐
相关产品推荐

