span8
span4
我正在尝试创建一个webhook的工作表在Smartsheet (https://www.smartsheet.com/)。关于webhook的API文档可以在这里找到:https://smartsheet-platform.github.io/api-docs/?shell#creating-a-webhook
从创建webhook的图中可以看出,创建后需要启用webhook:这就是我遇到问题的地方,需要一些帮助!“用户”(回调URL,这为我的测试用例FME云)我使用主题发布:与200状态和反应也附和“挑战”随机数来响应头中包括的响应头“Smartsheet-Hook-Response”。或者它可以用一个json响应,其中包含“smartsheetHookResponse”属性中的这个值。
正如您在上面看到的,当我试图启用webhook时,回调URL触发了主题(在这里都很好;上面显示了两次尝试)。高亮显示的字符串是我需要返回的(上面链接的API文档中图像的第5步)。如果Smartsheet没有收到这个,webhook就没有被激活。
我的问题有两个方面:
我如何让主题发送适当的响应回来,使webhook可以启用?谢谢你的帮助!PS:下面是我在FME中试图通过HTTPcaller启用webhook时得到的响应体)。
大家好,我想结束这个循环。看起来我们暂时不会使用webhook,但是感谢@stewartharper我们确实做到了这一点(谢谢@gerhardat亚搏在线safe!)。因此,问题是Smartsheet API需要返回200个响应,因此不能使用主题(它们返回一个202)。使用带有数据流的工作空间,通过SmartSheet API返回预期的JSON响应,就可以做到这一点。由于webhook要求每100个请求重新验证一次,所以必须在端点上使用相同的工作空间,并添加一些逻辑(例如:Tester)来决定是否执行其他的逻辑或者是否重新批准webhook。
目前,我们正按计划将数据从Trimble ProjectSight(没有webhook功能)更新到SmartSheet,它似乎工作得很好。
Stewart的注册为作业提交者服务的示例工作区应该可以达到这个目的。你也可以看看这两个例子:
https://hub.亚搏在线safe.com/manage/publishers/gerhardatsafe/fme-projects/azurestorageevents
https://hub.亚搏在线safe.com/manage/publishers/gerhardatsafe/fme-projects/microsoft-graphsubscription
这两个项目都包含一个工作空间,用于处理两个不同服务的webhook验证(Azure Event Grid & Microsoft Graph)。
你可以尝试的一件事是处理行终止。有些服务可能会对此很挑剔,所以我肯定会尝试将行终止设置为没有一个并写入最后一行结束符不。我记得有一个服务,我做了webhook验证拒绝响应,如果有最后一行结束符写。
希望这可以帮助!
谢谢@gerhardat亚搏在线safe,一定会尝试这个。您是否建议使用文本阅读器/写入器而不是JSON来处理这类事情?我最初的工作空间在使用数据流或下载服务时没有接收数据,但在订阅时接收数据。我会把我的发现发回去。
好的,我认为我已经取得了一些进步。我创建了一个订阅来运行一个简单的FME工作空间来格式化所需的JSON响应。读取器读取$(FME_TOPIC_MESSAGE)并将一个新的JSON写入$(FME_SHAREDRESOURCE_DATA)。发布时检查通知服务,并分配主题。我不明白为什么“获取主题消息的参数”下拉框是空的,因为有发布的参数可供选择…他们需要是什么类型的?无论如何,当工作空间正在处理数据时,这似乎无关紧要(向其添加一个日志记录器并在作业日志中查看数据;此外,新的JSON正在编写中)。
我一直存在的问题是,响应是202,SmartSheet的API期望200才能启用webhook。我也不知道我正在编写的新JSON是否被发回。我如何检查FME云发送回的响应?是否有办法将状态从202更改为200?
我确实有一个新问题:我使用主题的“Message as Subscriber Content”URL作为webhook的回调URL,其中包括一个FME令牌。但是这个过期了,所以webhook是无效的,除非我不断更新它一个新的回调URL,其中包含一个新的FME令牌。我真的不想一直更新webhook,而且我对这个主题的了解还不够,不知道这是不是必须的方式!如果有人能就此事发表意见,我将不胜感激。回调URL(主题URL)可以是常量,还是必须刷新它?提到一些安全措施:)亚搏在线@gerhardat亚搏在线safe@jlutherthomas。谢谢。
非常感谢@stewartharper(我认为得到202的回复是一场表演的终止,除非Smartsheet在他们那边做出改变,这是极不可能的。我希望有一种方法来定制响应,因为我相信没有人遵循相同的标准。
如果现在的主题是一个死胡同,我将看看你的第二个选择。webhook在报头和JSON中都发送“随机数”(更像是一个标记)。后者是我在工作空间中解析出来的,并使用属性“smartsheetHookResponse”重新编写了一个响应JSON。至于令牌和主题,我想知道您是否可以使一个主题“公开”,从而不需要一个FME令牌作为URL的一部分?
如果你有任何其他的想法,我们可以触发FME运行工作空间,当某些事件发生时,不需要一个webhook,我洗耳恭听:)再次感谢查看它。
我会给你我目前的工作空间。它看起来不错,所以我不确定我做错了什么。我仍然得到错误:“响应是缺少验证响应的头和身体,或身体JSON可能是无效的。(ref id: z9jdx0a1q9qz)”。我注册了数据下载服务,然后设置了以下上传:
©2020安全亚搏在线软件公司|法律