使用集合变量将 Postman 响应值发布到 Flock

问题描述 投票:0回答:1

我正在设置概念验证,通过在 Postman 中执行以下 Azure DevOps API 命令来监视某些 Azure DevOps 构建代理的状态。

然后,我使用以下 Postman 命令提取每个代理的

Name
Hosted
状态,然后将结果输出设置为 Postman 集合变量,如下图所示。

let jsonData = pm.response.json().value
jsonData.forEach((item, index) => { 
   pm.collectionVariables.set(item["name"], item["isHosted"])      
})

最后,我接下来要做的就是使用 Postman 中的自定义 Webhook 将整个 Collection 变量集 POST 到即时消息服务,例如 Flock(甚至 Slack)。我已成功使用另一个 Postman API 命令来设置此自定义 Webhook,如下所示。

但是,如上所示,我只能通过注释掉除一个代理引用之外的所有代理引用,一次成功地将代理状态发布到 Flock 一个。我需要能够:

  1. 一次性将整套Agent状态值发送到Flock。
  2. 不需要显式输入每个 Collection 变量的名称来获取其对应的值。

关于如何实现这一目标有什么建议吗?

postman webhooks azure-devops-rest-api postman-collection-runner
1个回答
0
投票

根据您的要求,我建议您可以考虑将 postman.setNextRequest() 添加到 foreach 脚本中,以便在一次运行中多次发送请求。

步骤如下:

Step1:在Postman集合中创建Get Pools请求和Post Flock请求。

步骤2:在获取池请求中添加以下脚本示例:

let jsonData = pm.response.json().value
jsonData.forEach((item, index) => { 
   console.log(item["name"]);
   pm.collectionVariables.set("name", item["name"]);
   pm.collectionVariables.set(item["name"], item["isHosted"]);
   postman.setNextRequest('Post Flock');
})

此步骤将设置两个变量:基于代理池名称的池名称,并设置预期的池名称和 ishosted 值。

Step3:在Post Flock请求中使用该变量。

例如:

{
  "text": "Agent Status - {{{{name}}}}"
}

{{name}} 代表代理池名称。 {{{{name}}}} 代表代理池的 ishosted 值。

Step4:您可以使用Collection Runner来运行脚本。

更详细的信息,您可以参考此文档:自定义集合运行中的请求顺序

postman.setNextRequest() 旨在使用 Collection Runner、Postman CLI 或 Newman 运行集合时使用。当您使用发送运行请求时,它不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.