Azure Automation Runbook Python -Webhook数据

发布于 2025-01-21 05:45:29 字数 1312 浏览 4 评论 0原文

我正在准备Azure自动化,我正在使用Python SDK Automation Runbook,Runbook将由Webhook触发。我测试了Webhook,并且可以使用Webhook运行Python Runbook。 Automation Runbook作业状态完成,我可以看到输出数据。

输入数据

"WebhookName":"webhookname","RequestBody":"{\"name\": \"Mike\", \"Nazwisko\": \"Tyson\"}","RequestHeader":{"Connection":"keep-alive","Accept":"*/*","Accept-Encoding":"gzip","Host":"XXXzzzWWW.webhook.wus2.azure-automation.net","User-Agent":"python-requests/2.27.1","x-ms-request-id":"AAAbbbCCC"}}

输出数据

['C:\\Temp\\ce51on0d.0c4\\XXvvBB', '{WebhookName:webhookname,RequestBody:{"name":', '"Mike",', '"Nazwisko":', '"Tyson"},RequestHeader:{Connection:keep-alive,Accept:*/*,Accept-Encoding:gzip,Host:AAAbbbCCC.webhook.wus2.azure-automation.net,User-Agent:python-requests/2.27.1,x-ms-request-id:AAbbCC}}']

Python脚本用于发送Webhook

import requests
import json

url = 'webhookURL'
payload = {'name': 'Mike','Nazwisko': 'Tyson'}
requests.post(url, data=json.dumps(payload), headers={'Content-Type': 'application/json'})

我的问题是,我如何从Webhook数据中的自动化Python Runbook中获取特定值。像:

var1 = payload.name
var2 = payload.nazwisko

我正在尝试使用sys模块,但它无法正常工作。

import sys

test = str(sys.argv)
print(test)

I am preparing Azure automation, I am using Python SDK Automation runbook, runbook will be triggered by a webhook. I tested webhook, and I am able to run Python runbook using webhook. Automation Runbook Job status is Completed, I can see output data.

input data

"WebhookName":"webhookname","RequestBody":"{\"name\": \"Mike\", \"Nazwisko\": \"Tyson\"}","RequestHeader":{"Connection":"keep-alive","Accept":"*/*","Accept-Encoding":"gzip","Host":"XXXzzzWWW.webhook.wus2.azure-automation.net","User-Agent":"python-requests/2.27.1","x-ms-request-id":"AAAbbbCCC"}}

output data

['C:\\Temp\\ce51on0d.0c4\\XXvvBB', '{WebhookName:webhookname,RequestBody:{"name":', '"Mike",', '"Nazwisko":', '"Tyson"},RequestHeader:{Connection:keep-alive,Accept:*/*,Accept-Encoding:gzip,Host:AAAbbbCCC.webhook.wus2.azure-automation.net,User-Agent:python-requests/2.27.1,x-ms-request-id:AAbbCC}}']

Python script for sending webhook

import requests
import json

url = 'webhookURL'
payload = {'name': 'Mike','Nazwisko': 'Tyson'}
requests.post(url, data=json.dumps(payload), headers={'Content-Type': 'application/json'})

My question is how can I get, in my Automation Python runbook, specific values from Webhook data. like:

var1 = payload.name
var2 = payload.nazwisko

I was trying with sys module, but it does not work as expected.

import sys

test = str(sys.argv)
print(test)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

往日情怀 2025-01-28 05:45:29

感谢您的帮助。我以类似的方式解决了:

def webhookDataHandler(): 
    Dict = {}
    data = sys.argv[1]
    data = data.replace("{", ',').replace("}", "").replace("\"","")
    data = data.split(",")    
    for i in data:
      i = i.replace('\\', "")
      try:
        temp = i.split(":")
        Dict[temp[0]] = temp[1]
        print(temp[0], temp[1])
      except:
        pass
    return Dict

“尝试”语句可以帮助我克服嵌套列表中的错误。

我必须在ARGV提供的清单上进行手术。这只是删除了多余的语法并将事物重组为字典格式。希望这对下一个人有帮助!

Thanks for the help here. I solved in a similar manner:

def webhookDataHandler(): 
    Dict = {}
    data = sys.argv[1]
    data = data.replace("{", ',').replace("}", "").replace("\"","")
    data = data.split(",")    
    for i in data:
      i = i.replace('\\', "")
      try:
        temp = i.split(":")
        Dict[temp[0]] = temp[1]
        print(temp[0], temp[1])
      except:
        pass
    return Dict

The "try" statement helps me overcome errors from nested lists when pushing everything into a dict.

I had to do surgery on the list that argv provided. This just removed the excess syntax and reorganizes things into dictionary format. Hope this helps the next person!

若相惜即相离 2025-01-28 05:45:29

最后,我准备了我的Azure Automation Runbook,并按照预期的是Python Runbook代码。

import sys
import json

jsonStr = str(sys.argv)
split_RequestHeader = jsonStr.split('RequestHeader')
split_RequestBody = split_RequestHeader[0].split('RequestBody')
final_format = split_RequestBody[1]
final_format_2 = final_format.lstrip("':").rstrip(",'")
final_format_3 = final_format_2.replace("'",'')
final_format_4 = final_format_3.replace(":,",':')
final_format_5 = final_format_4.replace(",,", ",")
data_dict = json.loads(final_format_5)
print(data_dict)
print(data_dict["var1"])
print(data_dict["var2"])
print(data_dict["var3"])

Finally I prepared my Azure Automation runbook, and works as expected, below, Python runbook code.

import sys
import json

jsonStr = str(sys.argv)
split_RequestHeader = jsonStr.split('RequestHeader')
split_RequestBody = split_RequestHeader[0].split('RequestBody')
final_format = split_RequestBody[1]
final_format_2 = final_format.lstrip("':").rstrip(",'")
final_format_3 = final_format_2.replace("'",'')
final_format_4 = final_format_3.replace(":,",':')
final_format_5 = final_format_4.replace(",,", ",")
data_dict = json.loads(final_format_5)
print(data_dict)
print(data_dict["var1"])
print(data_dict["var2"])
print(data_dict["var3"])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文