ActionCard 是否有可用的 HTTP PUT 方法?

Is there an HTTP PUT Method available for an ActionCard?

我有兴趣通过 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}}'}"

[根据新信息更新答案] 因为这只是一个后端调用,没有 UI,所以用户无法知道调用是否成功,甚至根本没有调用(即他们可能会再次推送以查看)。因此,如果您在内部某处处理 PUT 确实会更好。如果你想要一个复杂的 input/output,你可以查看选项卡或任务 window,但实际上,最好的方法可能只是让按钮点击直接返回到机器人作为输入,有机器人发出呼叫,并适当地响应用户。

这实际上意味着让你的卡片行动从 "Action.Http" 变为 Action.Submit。您希望在单击按钮时让提交发送某种有效负载(例如 "sys_id" 或 ServiceNow 所需的任何内容),如示例所示(它只是在 "x" 中发送 link).这样一来,您就可以点击 "invoke" 按钮,以及您需要继续的信息,而无需在您的 Bot 中专门维护状态。

呼叫将作为正常转向您的机器人(就像一条普通消息),但不是在 Activity 上有一个 "text" 有效负载,它会有一个带有CommandId(基本上是标识特定按钮的 ID)以及您作为 "data".

发送的任何内容

您的机器人可以简单地检测到此 属性 已填充,调用 ServiceNow,并为用户提供适当的响应,例如 "ServiceNow Ticket Updated" 或其他内容。

希望对您有所帮助

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