首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定为什么Azure函数应用程序不是由web钩子触发的

如何确定为什么Azure函数应用程序不是由web钩子触发的
EN

Stack Overflow用户
提问于 2018-12-29 18:33:21
回答 1查看 592关注 0票数 0

我有:

  • HTTPweb钩子配置中的JavaScript Azure函数;该函数提供一个URL;该函数执行一个操作
  • 在我希望接收通知的软件中配置的web钩子
  • 带有HTTP/web钩子步骤的Azure Logic应用程序,该步骤为web钩子通知提供了一个可转到的URL

我的目标是Azure函数的URL接收来自软件的web钩子的通知并执行一个操作。Azure逻辑应用程序只用于测试。

什么起作用

  • 当Azure Logic的URL在软件的web钩子配置中使用时,将执行所需的操作。一切正常工作。
  • Azure Logic的日志显示了来自传入的web钩子的JSON输出。我希望(但相信这可能是我出错的地方),这是web钩子发送给Azure Logic的URL的JSON。当在Azure函数UI的"Test“选项卡> "Request”字段中使用此JSON时,将执行所需的操作。一切正常工作。
  • 当Azure函数的URL和JSON在Postman请求中时,将执行所需的操作。一切正常工作。

什么不起作用

  • 当Azure函数的URL在软件的web钩子配置中使用时,不执行任何操作。这当然是我的目标。从我所读到的所有内容来看,我理解这个作为web钩子端点的URL应该能工作。

Azure函数的URL

这是来自Get函数URL >默认值(函数键)。

代码语言:javascript
复制
https://<app_name>.azurewebsites.net/api/content?code=<api_key>

其他Azure函数配置设置

  • 允许的HTTP方法:GETPOST
  • 授权级别:功能

我相信这个JSON会通过网络钩子

代码语言:javascript
复制
{
  "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
      }
    }]
  }
}

对于相同的结果,我还尝试使用以下测试代码。它与软件公司提供的样本有效载荷数据更加一致:

我试过什么

代码语言:javascript
复制
{
  "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
    }
  }]
}

样本有效载荷数据

代码语言:javascript
复制
{
  "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函数不是由web钩子触发的。该软件的API文档似乎没有提供一种方法来查看通过web钩子发送的JSON,尽管在我缺乏经验的情况下,我可能错了。

Azure、Postman或其他工具中是否有一种机制可以让我看到在web钩子上发送了什么JSON?或者,是否有另一种方法来确定问题的原因?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-24 12:17:51

这就是我如何从Azure警报中获得JSON文件的方式。

  1. 在服务器上安装Ruby
  2. 使用以下命令gem install sinatra安装Sinatra
  3. 创建文件webhook.rb并粘贴下面的代码
代码语言:javascript
复制
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
  1. 使用命令ruby webhook.rb运行web服务
  2. JSON被写入文件events.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53972297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档