c# - C# Slack Bot 到 Slack Channel - 使用 Slash 命令而不是聊天
问题描述
我想向我选择的频道发送斜杠命令。
我正在使用 NuGet 的 Newtonsoft Json.NET 序列化程序。目前,我有以下代码:
string messageToSend = @"/Kyber test task here";
string channelToSendTo = "#general";
var urlWithAccessToken
= "https://hooks.slack.com/services/TOKEN/SPECIFIC/STUFF";
var client = new SlackClient(urlWithAccessToken);
client.PostMessage(username: "MyBot",
text: messageToSend,
channel: channelToSendTo);
和 SlackClient.cs
public SlackClient(string urlWithAccessToken)
{
_uri = new Uri(urlWithAccessToken);
}
public void PostMessage(string text, string username = null, string channel = null)
{
Payload payload = new Payload()
{
Channel = channel,
Username = username,
Text = text
};
PostMessage(payload);
}
public class Payload
{
[JsonProperty("channel")]
public string Channel { get; set; }
[JsonProperty("username")]
public string Username { get; set; }
[JsonProperty("text")]
public string Text { get; set; }
}
它目前只是说“/kyber test task here”,而不是调用 /kyber 斜杠命令。
我已经看到了未记录的chat.command命令,但它现在似乎不适用于 Slack API。我希望有另一种方法可以在不使用 Legacy App 功能的情况下做到这一点,因为令我惊讶的是,我找不到比大约 3-4 年前更新但没有使用它的示例。
解决方案
我想这就是答案,但我询问了 Slack 的支持。他们回答说:
听起来您可能会询问是否允许应用程序发送包含斜杠命令的消息,以触发斜杠命令。如果是这样,恐怕这是不可能的。相反,由于所有斜杠命令本质上都会触发特定的 API 端点,因此您需要联系该斜杠命令的开发人员以查看他们是否使该端点可公开访问,以便您可以创建自己的应用程序机制来尝试并触发对这些端点的命令端点。很抱歉,在这方面我没有更好的消息告诉你。我希望这些信息可以帮助您继续前进。感谢您对此进行检查。
所以我认为答案是我正在使用的应用程序不支持该功能,而 Slack 也不/不会。无论如何感谢您的帮助。
推荐阅读
- node.js - 有没有办法删除对交互的响应(discord.js)
- prolog - 对于日期时间转换的极端情况,正确的错误是什么?
- php - PHP:按可用日期和可用时间排序
- c# - ASP.NET Core 中基于角色的授权
- python - IndexError:Python 升级后布尔数组不再匹配
- javascript - 将画布图像从js提取到烧瓶,但图像的背景变成白色透明
- php - CodeIgniter 中的 SQL Server 2005 连接
- amazon-web-services - 使用无服务器脚本而不是 UI 将 API 网关作为触发器添加到 Lambda 函数
- jasper-reports - 表格 columnFooter 中的文本打印在每一页
- json - 在 Go 中解组类似表的 JSON