You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP DialogFlow CX通过webhook返回门店选择列表/按钮的方案咨询

可行实现方案

方案1:直接在Webhook响应中返回完整富媒体选项列表(最推荐)

你对a方案的理解有误,DialogFlow CX的webhook响应fulfillment_response.messages支持返回payload类型的消息,不需要先存参数再二次渲染,直接在Python侧拼接好门店选项返回即可,修改后的响应结构示例如下:

bot_response = {
    "fulfillment_response":
        {
            "messages": [
                {
                    "text": {
                        "text": [
                            f'Thanks {first_name}! I\'ve located your account. Please select the nearest store below:'
                        ]
                    }
                },
                {
                    "payload": {
                        "richContent": [
                            [
                                {
                                    "event": {
                                        "name": "StoreSelected",
                                        "parameters": {
                                            "selected_store_id": locations[0].store_id,
                                            "selected_store_name": locations[0].store_name
                                        },
                                        "languageCode": ""
                                    },
                                    "subtitle": locations[0].store_id,
                                    "title": f"{locations[0].store_name}: {locations[0].address}",
                                    "type": "list"
                                },
                                {
                                    "event": {
                                        "name": "StoreSelected",
                                        "parameters": {
                                            "selected_store_id": locations[1].store_id,
                                            "selected_store_name": locations[1].store_name
                                        },
                                        "languageCode": ""
                                    },
                                    "subtitle": locations[1].store_id,
                                    "title": f"{locations[1].store_name}: {locations[1].address}",
                                    "type": "list"
                                },
                                {
                                    "event": {
                                        "name": "StoreSelected",
                                        "parameters": {
                                            "selected_store_id": locations[2].store_id,
                                            "selected_store_name": locations[2].store_name
                                        },
                                        "languageCode": ""
                                    },
                                    "subtitle": locations[2].store_id,
                                    "title": f"{locations[2].store_name}: {locations[2].address}",
                                    "type": "list"
                                }
                            ]
                        ]
                    }
                }
            ]
        },
    "session_info": {
        "session": session_name,
        "parameters": {
            "first_name": first_name,
            "email_address": email_address,
            "business_partner_id": business_partner_id,
            "address_line_1": c['response']['address_line_1'],
            "address_line_2": c['response']['address_line_2'],
            "suburb": c['response']['suburb'],
            "postcode": c['response']['postcode'],
            "region": c['response']['state']
        }
    }
}

这个方案不需要额外在控制台配置响应逻辑,所有选项动态生成,适配门店数量变化的场景。

方案2:使用会话参数在控制台配置自定义payload

如果你需要先存参数再渲染,b方案的参数插值是支持的,只是语法不是${参数名},而是使用$session.params.参数名的标准会话参数引用格式,你在DialogFlow CX对应页面的fulfillment自定义payload中填入如下结构即可:

{
  "richContent": [
    [
      {
        "event": {
          "name": "StoreSelected",
          "parameters": {
            "selected_store_id": "$session.params.store_1_id"
          },
          "languageCode": ""
        },
        "subtitle": "$session.params.store_1_id",
        "title": "$session.params.store_1_address",
        "type": "list"
      },
      {
        "event": {
          "name": "StoreSelected",
          "parameters": {
            "selected_store_id": "$session.params.store_2_id"
          },
          "languageCode": ""
        },
        "subtitle": "$session.params.store_2_id",
        "title": "$session.params.store_2_address",
        "type": "list"
      },
      {
        "event": {
          "name": "StoreSelected",
          "parameters": {
            "selected_store_id": "$session.params.store_3_id"
          },
          "languageCode": ""
        },
        "subtitle": "$session.params.store_3_id",
        "title": "$session.params.store_3_address",
        "type": "list"
      }
    ]
  ]
}

配置后触发对应页面时,DialogFlow CX会自动把参数占位符替换为实际存储的会话参数值。

后续选择处理

两种方案都可以给选项绑定StoreSelected事件,你只需要在控制台配置对应事件的路由,即可捕获用户选中的门店ID,进入后续业务流程。

内容的提问来源于stack exchange,提问作者JamesMatson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:36:04