0

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

1 回答 1

1

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

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

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

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

希望有帮助

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

于 2020-01-01T05:16:06.770 回答