来自 webhook dialogflow cx 的按钮

buttons from webhook dialogflow cx

我有一个 diaglogflow cx 助手,我有自己的 Web 前端。我从 webhook 得到响应,文本没有问题,但我想添加按钮、卡片、图像……虽然在 dialogflow cx 中看不到它们,但我可以使用前面的信息。

问题是 dialogflow cx 没有在对调用它的前端的响应中重新发送它。我正在从 webhook 服务器发送此响应:

{
    "fulfillment_response": {
        "messages": [
            {
                "text": {
                    "text": [
                        "webhooktext"
                    ]}}],
        "richContent": [[
            {
                    "type": "buttons",
                    "options": [
                        {
                            "text": "button 1"
                        },
                        {
                            "text": "button 2"
                        }]}]]}}

我在前端应用程序中收到了这个:

    "responseId": "fc385ea7-6f8c-4828-9e25-5196916c4028",
    "queryResult": {
        "text": "hey",
        "languageCode": "es",
        "responseMessages": [
            {
                "text": {
                    "text": [
                        "dialogflow text"
                    ]
                }
            },
            {
                "payload": {
                    "kbID": "greeting"
                }
            },
            {
                "text": {
                    "text": [
                        "webhooktext"
                    ]
                }
            }
        ],
        "webhookPayloads": [
            {}
        ],
        "currentPage": {...},
        "intent": {...},
        "intentDetectionConfidence": 1.0,
        "diagnosticInfo": {...},
        "webhookStatuses": [...],
        "match": {...}
    },
    "responseType": "FINAL"
}

我期待在 responseMessages 数组甚至 webhookPayloads 中接收按钮数据。我试图管理 webhook 响应结构,但有时它会在前面的字典中给出一条错误消息,有时它会如上所示显示。 我应该更改 richContext 密钥吗?我应该把它放在哪里?

可以在 Dialogflow CX. You can refer to this documentation for response texts and parse them on your side as per your requirement. For adding visual elements , you can refer to this link 中解析文本以及图像和其他组件。

在Python中最常见的实现方法是根据这个使用pf.json_format.MessageToJson方法。