[Dialogflow]通过Webhook格式更新权限(用于推送通知)

时间:2018-06-06 17:00:20

标签: php webhooks dialogflow

原始请求:我正在尝试按照文档实施推送通知:https://developers.google.com/actions/assistant/updates/notifications

我正在使用带有webhooks的Dialogflow(在PHP中),文档在nodeJS中给出了示例

现在,我因为更新权限而被阻止,这是我的Webhook回复:

{
"source": "webhook",
"payload": {
    "google": {
        "expectUserResponse": true,
        "systemIntent": {
            "intent": "actions.intent.PERMISSION",
            "data": {
                "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec",
                "permissions": [
                    "UPDATE"
                ]
            },
            "updatePermission": {
                "intent": "notification.simple.text"
            }
        }
    }
}
}

当我进行模拟时,会询问我对推送的许可,但不是我指定的意图。

我很确定问题是updatePermission,有些问题一定是错的:  这是字段名称吗? 在意图中,我把我填写的对话流的意图名称,也许我必须使用一个使用行动?它的格式是好吗?

如果有人可以帮助我,或者只是给我一个关于更新权限的干净响应的示例。

谢谢!

解决方案

我刚刚发现原因,我的json不好,updatePermissionValueSpec必须是数据对象。

{
"source": "webhook",
"payload": {
    "google": {
        "expectUserResponse": true,
        "systemIntent": {
            "intent": "actions.intent.PERMISSION",
            "data": {
                "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec",
                "permissions": [
                    "UPDATE"
                ],
                "updatePermissionValueSpec": {
                    "intent": "notification_simple_text"
                }
            }
        }
    }
}
}

1 个答案:

答案 0 :(得分:2)

我认为updatePermission应该命名为updatePermissionValueSpec

回复示例:

"payload": {
  "google": {
    "expectUserResponse": true,
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "PLACEHOLDER"
          }
        }
      ]
    },
    "systemIntent": {
      "intent": "actions.intent.PERMISSION",
      "data": {
        "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec",
        "permissions": [
          "UPDATE"
        ],
        "updatePermissionValueSpec": {
          "intent": "intent_name"
        }
      }
    }
  }
}