【问题标题】:google actions sdk: get project id of requesting webhookgoogle actions sdk:获取请求 webhook 的项目 id
【发布时间】:2019-02-27 09:41:02
【问题描述】:

我正在使用操作 sdk 创建一个操作,并且实现 URL 是一个谷歌云功能。我计划通过发送一些参数来为不同的操作使用相同的实现 webhook。例如一个动作可能是:https:// .../action1,而第二个动作可能是:https://.../action2。有没有办法可以在 NodeJS webhook 中获取 url。

NodeJS 函数具有以下形式的导出: exports.funcname = functions.https.onRequest(app); 其中 app 是一个 actionssdk 对象

我知道有一种方法可以使用以下方法验证请求是否来自特定的 google 操作项目:

const app = actionssdk({verification: 'nodejs-cloud-test-project-1234'});

(来源:https://developers.google.com/actions/reference/rest/verify-requests

但是,对于我的用例,我需要知道哪个操作项目发出了请求或访问了调用的 url,以便我可以自定义响应。谢谢。

【问题讨论】:

    标签: actions-on-google


    【解决方案1】:

    project_id 包含在每个 webhook 请求的 session 字符串中,您可以使用简单的正则表达式对其进行解析。

    【讨论】:

    • 谢谢@gmoulau。该链接指向 DialogFlow API。 actionsdk 支持这个吗?
    • 我尝试使用 actions-on-google-nodejs 库获取请求,但似乎无法获取 webhook URL 或会话。您能否建议 conv 中具有 url 或项目的对象。我询问 URL 的原因是我可以将项目 ID 作为 webhook 请求中的参数发送,然后使用它来验证是否需要。谢谢
    • 抱歉,这是我的误解,我以为您使用的是 Dialogflow。 Conversation Webhook 协议似乎在其请求中的任何地方都没有包含 project_id,所以恐怕你在这里不走运。
    • 我确实想出了一种使用授权字符串的方法,它通过快速中间件传递。我在 github 存储库问题 (github.com/actions-on-google/actions-on-google-nodejs/issues/…) 中分享了它作为暂时的解决方法。谢谢@gmolau。如果我在某些项目中使用对话框流,您的建议会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多