如何通过 dialogflow API 服务将请求 headers 从集成传递到我的 webhook 服务?

How to pass request headers from integration to my webhook service through dialogflow API service?

下面是来自https://cloud.google.com/dialogflow/docs/fulfillment-overview

的流程图

如何通过 dialogflow API 服务 [4].

将请求 headers 从自定义聊天机器人客户端(集成 [2])传递到我的 webhook 服务[5]

我使用 RPC 调用将用户查询(用户在聊天机器人中输入的文本)发送到 DF API 服务:

      const dfResponses = await sessionsClient.detectIntent(queryRequest);
      responseBody = dfResponses[0].queryResult;

queryRequest 具有以下结构:

  const queryRequest = {
    session: sessionPath,
    queryInput: {
      text: {
        text: queryText,
        languageCode,
      },
    },
  };

我没有看到可以通过聊天机器人小部件将 headers 传递到我的 webhook 服务的方法。

提前致谢! :)

更新: 根据@Prissoner 的以下评论,我现在正尝试通过 queryParams.payload 将我的身份验证令牌传递给我的 webhook 所以现在我的 queryRequest 如下所示:

    session: sessionPath,
    queryInput: {
      text: {
        text: queryText,
        languageCode,
      },
    },
    queryParams: {
      payload: {
        authToken
      }
    },
  };

调用 sessionsClient.detectIntent(queryRequest) 时,我希望 request.originalDetectIntentRequest.payload 在 webhook 请求中包含 authToken。但是 request.originalDetectIntentRequest.payload 是空的 object.

您不能将此作为 header 从 Dialogflow 到您的 webhook 的一部分。

但是,您可以将此数据包含在作为检测意图调用的一部分包含的 queryParameters 中。您有几个选择将它们放在哪里:

  1. payload 字段包含任意 object 结构,因此您可以在此处以几乎任何格式放置您想要的任何内容。
  2. 作为 contexts 之一(特别是作为上下文参数)。这有点严格,但在某些情况下可能更容易管理和获取值。

您可以使用 queryParams object 的 webhookHeaders() 设置 webhook headers。

"queryParams": {   
        "webhookHeaders":{
            "Authorization": "Bearer {{access_token}}"
        }
    }

您可以使用 originalDetectIntentRequest

传递自定义负载