【问题标题】:Is there an HTTP PUT Method available for an ActionCard?是否有可用于 ActionCard 的 HTTP PUT 方法?
【发布时间】:2020-04-20 06:04:21
【问题描述】:

我有兴趣通过 ActionCard 更新 ServiceNow 记录。 ServiceNow 中记录的更新只接受 PUT。是否有 HttpPUT 的操作类型来代替 HttpPOST? POST 被简单地拒绝了

The remote endpoint returned an error (HTTP MethodNotAllowed). Please try again later.

由于我使用的是 Microsoft Teams,因此我必须根据他们的文档使用消息卡格式:

However, if you are sending actionable messages via an Office 365 connector, or to a Microsoft Teams connector, you must continue to use the message card format

110       - "@type": ActionCard
111         name: Set Assignment Group
112         inputs:
113         - "@type": MultichoiceInput
114           id: list
115           title: Chose an assignment group
116           isMultiSelect: false
117           choices:
118             - display: IT Service Desk
119               value: 4546b6fg1r864z10wk42964pnh4bccpq
120         actions:
121         - "@type": HttpPOST
122           name: Save
123           target: https://servicenow_instance.service-now.com/api/now/table/incident/sys_id
124           headers:
125             - name: Authorization
126               value: Basic base64_encoded
127               body: "{'assignment_group': '{{list.value}}'}"

【问题讨论】:

  • Action Card 不支持 HttpPut 方法请看Actions in action card
  • 谢谢。我对这里的这些概念比较陌生。根据提供的链接,以及我将有效负载发布到我创建的 MS 连接器(传入 Webhook)并发布到提供的 URL outlook.office.com/webhook/blah 的目标。在这种情况下,似乎只支持消息卡格式,正如文档中所引用的那样“但是,如果您通过 Office 365 连接器或 Microsoft Teams 连接器发送可操作的消息,则必须继续使用该消息卡片格式。”。我没有创建自己的机器人,这里没有可用的选项吗?
  • 是的,Connectors 目前只支持消息卡,如果您仍然想发送自适应卡而不像您提到的那样设置自己的 Bot,您可以使用Microsoft Flow to send Adaptive Card
  • 感谢您的链接和建议!感谢您的帮助。

标签: microsoft-teams office365connectors


【解决方案1】:

[根据新信息更新答案] 因为这只是一个后端调用,没有 UI,所以用户无法知道调用是否成功,或者即使调用是否成功(即他们可能会再次推送查看)。因此,如果您在某处内部处理 PUT 确实会更好。如果您想要复杂的输入/输出,您可以查看选项卡或任务窗口,但实际上,最好的方法可能是让按钮单击直接返回到 Bot 作为输入,让 Bot 拨打电话,并适当地回应用户。

这实际上意味着将您的卡片操作从“Action.Http”更改为Action.Submit。您希望在单击按钮时让 Submit 发送某种有效负载(例如“sys_id”或 ServiceNow 所需的任何内容),如示例所示(它只是在链接中发送“x”)。这样,您可以点击“调用”按钮,以及您需要继续的信息,而无需专门在您的 Bot 中维护状态。

调用将作为一个普通的转向你的机器人(就像一条普通的消息),但不是在 Activity 上有一个“文本”有效负载,它会有一个带有 CommandId 的值(基本上是一个用于识别特定按钮)以及您作为“数据”发送的任何内容。

您的 Bot 可以简单地检测到此属性已填充,调用 ServiceNow,并向用户提供适当的响应,例如“ServiceNow Ticket Updated”或其他任何内容。

希望有帮助

[更新] 最后这根本不是 Bot 交互 - 请参阅下面的 cmets 了解更多信息和解决方案

【讨论】:

  • 这是一个后端 API 调用。 json 结果与 HTTP 状态 200 一起返回,如果其他 HTTP 方法是可用的操作类型,那将更加方便。否则,我喜欢代理的想法,而不必构建另一个组件。如果这是可以在 Flow 中完成的事情,那么也许它不会那么糟糕。总而言之,一个用户可能属于多个组,所以我想要一个多项选择下拉菜单让他们选择他们的相关组,单击保存按钮,该按钮使 HTTP PUT 到 ServiceNow 以分配用户在团队中选择的分配组卡。
  • 顺便说一句,我刚刚重新查看了您的原始问题,并且现在您正在使用 ActionCards。您是否查看过这些的更新版本,Adaptive Cards?概念是相同的,但当然有一些不同之处。据我所知,自适应卡片提供更多功能
  • 感谢希尔顿的帮助!我在这里对这些概念相对较新,正如我在上面对@Trinetra-MSFT 评论的那样,我正在使用一个传入 Webhook 连接器,仅支持消息卡格式,如文档所述 --> “但是,如果你正在通过 Office 365 连接器或 Microsoft Teams 连接器发送可操作的消息,您必须继续使用消息卡格式。”我试图在这里找到最好的方法,并试图了解我可以用开箱即用的功能做什么,而不必开发自己的机器人(我不是 MS 开发人员):)
  • 所以我可以看到我正在使用的连接器不支持自适应卡。 docs.microsoft.com/en-us/microsoftteams/platform/…关于如何通过 PowerApps 创建代理或其他可以接收 POST 并按照您的建议处理它的任何教程?
  • 所以经过几个小时的搜索和搜索,我想通了。简而言之(首先),我需要设置 Authorization 标头。其次,授权标头需要设置为空。参考:docs.microsoft.com/en-us/outlook/actionable-messages/…
猜你喜欢
  • 2012-08-03
  • 2018-08-26
  • 2014-12-23
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多