[当用户使用斜杠命令时,我仅向该用户发布临时消息。当他们单击按钮时,我希望该短消息删除或更新。现在,我只是想让删除部分正常工作。
在Slack API文档中,它说将HTTP POST发送到response_url。用户单击按钮时获得的唯一response_url如下所示:https://hooks.slack.com/actions/XXXXXXXXX/YYYYYYYYYYYY/ZZZZZZZZZZZZZZZZZZZZZZZZ
当我向该网址发送POST时,出现错误(我不确定错误是什么,我只知道我的代码在try / catch上失败)。
我发送到该URL的JSON看起来像这样:
{
"response_type" = "ephemeral",
"replace_original" = "true",
"delete_original" = "true",
"text" = ""
};
[我在Slack API文档中看到它说我应该将JSON发送到以https://hooks.slack.com/services/开头的URL,但是我没有收到任何带有/ services /的response_url。
这是我用来发送响应的C#代码:
var replaceMsg = new NameValueCollection();
replaceMsg["delete_original"] = "true";
replaceMsg["replace_original"] = "true";
replaceMsg["response_type"] = "ephemeral";
replaceMsg["text"] = "";
var responseReplace = client.UploadValues(button.response_url, "POST", replaceMsg);
编辑:尝试发送时似乎出现404错误
Exception: System.Net.WebException: The remote server returned an error: (404) Not Found.
但是,当我将确切的URL粘贴到浏览器中时,却没有看到404,但看到了JSON。
有人可以引导我朝正确的方向吗?谢谢。
不久前,我做了非常相似的事情,并且能够使它工作,尽管这很棘手。
这篇文章帮了我大忙:How to remove Ephemeral Messages
我会做两件事:
1)确保您知道POST响应失败是什么,因为它可能包含有用的信息。
2)似乎您正在发送字符串"true"
而不是布尔值,我猜您可能想改为发送布尔值:
{
"response_type" = "ephemeral",
"replace_original" = true,
"delete_original" = true,
"text" = ""
};
@@ MayMayer和@Aaron关于标题错误是正确的。
设置标题可以解决此问题,如下所示:
var client = new WebClient();
client.Headers.Add("Content-Type", "text/html");
var response = client.UploadData(button.response_url, "POST", Encoding.Default.GetBytes("{\"response_type\": \"ephemeral\",\"replace_original\": \"true\",\"delete_original\": \"true\",\"text\": \"\"}"));