如何确定 Azure Function App 未被 webhook 触发的原因
How to determine why an Azure Function App is not triggered by a webhook
我有:
- HTTP webhook 配置中的 JavaScript Azure 函数;该函数提供了一个 URL;函数执行一个动作
- 我希望收到来自
的通知的软件中配置的webhook
- 一个带有 HTTP/webhook 步骤的 Azure 逻辑应用程序,该步骤提供 URL 用于 webhook 通知转到
我的目标是 Azure Functions URL 从软件的 webhook 接收通知并执行操作。 Azure 逻辑应用仅用于测试。
什么有效
- 当在软件的 webhook 配置中使用 Azure 逻辑应用程序的 URL 时,将执行所需的操作。一切都按预期工作。
- Azure 逻辑应用程序的日志记录显示来自传入 webhook 的 JSON 输出。我预计(但相信这可能是我出错的地方)这是 Webhook 发送到 Azure Logic App 的 URL 的 JSON。当在 Azure 函数 UI 的 "Test" 选项卡 > "Request body" 字段中使用此 JSON 时,将执行所需的操作。一切都按预期工作。
- 当 Azure 函数的 URL 和 JSON 在 Postman 请求中时,将执行所需的操作。一切都按预期工作。
什么不起作用
- 当在软件的 webhook 配置中使用 Azure 函数的 URL 时,不会执行任何操作。这当然是我的目标。从我阅读的所有内容中,我了解到这个 URL 作为 webhook 端点 应该 工作。
Azure 函数的 URL
这来自获取函数URL > 默认(功能键).
https://<app_name>.azurewebsites.net/api/content?code=<api_key>
其他 Azure 函数配置设置
- 允许的 HTTP 方法:
GET
、POST
- 授权级别:功能
JSON 我相信会通过 webhook
{
"headers": {
"Expect": "100-continue",
"Host": "redacted",
"X-Telligent-Webhook-Sender": "redacted",
"Content-Length": "16908",
"Content-Type": "application/json; charset=utf-8"
},
"body": {
"events": [{
"TypeId": "ec9da4f4-0703-4029-b01e-7ca9c9ed6c85",
"DateOccurred": "2018-12-17T22:55:37.7846546Z",
"EventData": {
"ActorUserId": 9999,
"ContentId": "redacted",
"ContentTypeId": "redacted",
"ForumReplyId": 9999,
"ForumThreadId": 9999,
"ForumId": 9999
}
}]
}
}
我也尝试使用以下测试代码获得相同的结果。它与软件公司提供的示例负载数据更接近:
我试过的
{
"events": [{
"TypeId": "ec9da4f4-0703-4029-b01e-7ca9c9ed6c85",
"DateOccurred": "2018-12-17T22:55:37.7846546Z",
"EventData": {
"ActorUserId": 9999,
"ContentId": "redacted",
"ContentTypeId": "redacted",
"ForumReplyId": 9999,
"ForumThreadId": 9999,
"ForumId": 9999
}
}]
}
{
"events": [
{
"TypeId": "407ad3bc-8269-493e-ac56-9127656527df",
"DateOccurred": "2015-12-04T16:31:55.5383926Z",
"EventData": {
"ActorUserId": 2100,
"ContentId": "4c792b81-6f09-4a45-be8c-476198ba47be"
}
},
{
"TypeId": "3b75c5b9-4705-4a97-93f5-a4941dc69bc9",
"DateOccurred": "2015-12-04T16:48:03.7343926Z",
"EventData": {
"ActorUserId": 2100,
"ContentId": "4c792b81-6f09-4a45-be8c-476198ba47be"
}
}
]
}
我不知道如何确定为什么 Azure Function 没有被 webhook 触发。该软件的 API documentation 似乎没有提供查看通过 webhook 发送的 JSON 的方法,尽管以我的经验不足,我可能是错的。
Azure、Postman 或其他工具中是否有一种机制可以让我查看 JSON 通过 webhook 发送的内容?或者是否有其他方法可以确定问题的原因?
感谢您的帮助。
这就是我从 Azure 警报中获取 JSON 文件的方式。
- 在服务器上安装Ruby
- 使用以下命令安装 Sinatra
gem install sinatra
- 创建文件
webhook.rb
并粘贴下面的代码
require 'sinatra'
set :port, 80
set :bind, '0.0.0.0'
post '/event' do
status 204 #successful request with no body content
request.body.rewind
request_payload = JSON.parse(request.body.read)
#append the payload to a file
File.open("events.txt", "a") do |f|
f.puts(request_payload)
end
end
- 运行 使用命令
ruby webhook.rb
的 Web 服务
- JSON 填写写入文件
events.txt
我有:
- HTTP webhook 配置中的 JavaScript Azure 函数;该函数提供了一个 URL;函数执行一个动作
- 我希望收到来自 的通知的软件中配置的webhook
- 一个带有 HTTP/webhook 步骤的 Azure 逻辑应用程序,该步骤提供 URL 用于 webhook 通知转到
我的目标是 Azure Functions URL 从软件的 webhook 接收通知并执行操作。 Azure 逻辑应用仅用于测试。
什么有效
- 当在软件的 webhook 配置中使用 Azure 逻辑应用程序的 URL 时,将执行所需的操作。一切都按预期工作。
- Azure 逻辑应用程序的日志记录显示来自传入 webhook 的 JSON 输出。我预计(但相信这可能是我出错的地方)这是 Webhook 发送到 Azure Logic App 的 URL 的 JSON。当在 Azure 函数 UI 的 "Test" 选项卡 > "Request body" 字段中使用此 JSON 时,将执行所需的操作。一切都按预期工作。
- 当 Azure 函数的 URL 和 JSON 在 Postman 请求中时,将执行所需的操作。一切都按预期工作。
什么不起作用
- 当在软件的 webhook 配置中使用 Azure 函数的 URL 时,不会执行任何操作。这当然是我的目标。从我阅读的所有内容中,我了解到这个 URL 作为 webhook 端点 应该 工作。
Azure 函数的 URL
这来自获取函数URL > 默认(功能键).
https://<app_name>.azurewebsites.net/api/content?code=<api_key>
其他 Azure 函数配置设置
- 允许的 HTTP 方法:
GET
、POST
- 授权级别:功能
JSON 我相信会通过 webhook
{
"headers": {
"Expect": "100-continue",
"Host": "redacted",
"X-Telligent-Webhook-Sender": "redacted",
"Content-Length": "16908",
"Content-Type": "application/json; charset=utf-8"
},
"body": {
"events": [{
"TypeId": "ec9da4f4-0703-4029-b01e-7ca9c9ed6c85",
"DateOccurred": "2018-12-17T22:55:37.7846546Z",
"EventData": {
"ActorUserId": 9999,
"ContentId": "redacted",
"ContentTypeId": "redacted",
"ForumReplyId": 9999,
"ForumThreadId": 9999,
"ForumId": 9999
}
}]
}
}
我也尝试使用以下测试代码获得相同的结果。它与软件公司提供的示例负载数据更接近:
我试过的
{
"events": [{
"TypeId": "ec9da4f4-0703-4029-b01e-7ca9c9ed6c85",
"DateOccurred": "2018-12-17T22:55:37.7846546Z",
"EventData": {
"ActorUserId": 9999,
"ContentId": "redacted",
"ContentTypeId": "redacted",
"ForumReplyId": 9999,
"ForumThreadId": 9999,
"ForumId": 9999
}
}]
}
{
"events": [
{
"TypeId": "407ad3bc-8269-493e-ac56-9127656527df",
"DateOccurred": "2015-12-04T16:31:55.5383926Z",
"EventData": {
"ActorUserId": 2100,
"ContentId": "4c792b81-6f09-4a45-be8c-476198ba47be"
}
},
{
"TypeId": "3b75c5b9-4705-4a97-93f5-a4941dc69bc9",
"DateOccurred": "2015-12-04T16:48:03.7343926Z",
"EventData": {
"ActorUserId": 2100,
"ContentId": "4c792b81-6f09-4a45-be8c-476198ba47be"
}
}
]
}
我不知道如何确定为什么 Azure Function 没有被 webhook 触发。该软件的 API documentation 似乎没有提供查看通过 webhook 发送的 JSON 的方法,尽管以我的经验不足,我可能是错的。
Azure、Postman 或其他工具中是否有一种机制可以让我查看 JSON 通过 webhook 发送的内容?或者是否有其他方法可以确定问题的原因?
感谢您的帮助。
这就是我从 Azure 警报中获取 JSON 文件的方式。
- 在服务器上安装Ruby
- 使用以下命令安装 Sinatra
gem install sinatra
- 创建文件
webhook.rb
并粘贴下面的代码
require 'sinatra'
set :port, 80
set :bind, '0.0.0.0'
post '/event' do
status 204 #successful request with no body content
request.body.rewind
request_payload = JSON.parse(request.body.read)
#append the payload to a file
File.open("events.txt", "a") do |f|
f.puts(request_payload)
end
end
- 运行 使用命令
ruby webhook.rb
的 Web 服务
- JSON 填写写入文件
events.txt