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 交互 - 请参阅下面的评论以获取更多信息和解决方案
我有兴趣通过 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 交互 - 请参阅下面的评论以获取更多信息和解决方案