如何在Dialogflow CX灵活Webhook中获取session_id与caller_id?
解决Dialogflow CX灵活Webhook传递session_id和caller_id的问题
问题原因与修正方案
1. session_id的正确获取方式
你当前用$session获取的是完整会话资源路径,而非纯session_id。Dialogflow CX提供了$session.id变量,直接返回会话的ID部分,替换配置里的$session即可。
2. caller_id的正确变量名
caller_id属于Dialogflow CX的系统参数,并非自定义的会话参数,所以不能用$session.params.caller_id,正确的变量是$sys.caller_id。
修正后的Webhook配置
{ "doctor_name": "$session.params.doctor_name", "patient_name": "$session.params.patient_name", "caller_id": "$sys.caller_id", "session_id": "$session.id" }
额外注意事项
$sys.caller_id仅在电话类渠道(如Google Voice、第三方电话网关集成)中存在值,若使用其他渠道(如网页、APP),该参数会为空,需确认你的集成渠道类型。- 可以在Flask接口中打印完整请求Payload,确认参数是否正确传入:
@app.route('/api/test', methods=['POST']) def test(): import json payload = json.loads(request.get_data()) print(f"Full Payload: {json.dumps(payload, indent=2)}") return make_fulfillment_message('some dummy response here'), 200
内容的提问来源于stack exchange,提问作者Dilip Badal
相关产品推荐
相关产品推荐

