安全 Dialogflow 实现

Security Dialogflow fulfillment

我为我的 Dialogflow 机器人编写了一个简单的 HTTPS 服务器。在我的代码中,我只信任 req 对象,如下所示:

快递路由:

app.post('/', Route);

Express调用的函数:

function Route(req, res) {
    if (req.body.status.errorType !== "success") {
        return ;
    }
    // do something really awesome here
}

我认为这不是个好主意。我应该检查请求的来源。你怎么看?也许我应该使用 basic-auth 模块或其他东西,但我不知道如何确保 req 对象已被 Dialogflow 处理。我该怎么做?

我找到了我自己问题的答案。 Dialogflow 让我们定义一些在本文档页面顶部解释的身份验证变量: https://dialogflow.com/docs/fulfillment

所以只需探索 req.headers.authorization,您就会发现一个身份验证变量,正如 HTTP 协议所描述的那样: https://en.wikipedia.org/wiki/Basic_access_authentication

(连接这三个东西:

  1. 您的 dialogflow 用户名
  2. 字符':'
  3. 您的 dialogflow 密码

并将其编码为 base64)

非常棒!