首页 > 解决方案 > 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 年前更新但没有使用它的示例。

标签: c#json.netslackslack-api

解决方案


我想这就是答案,但我询问了 Slack 的支持。他们回答说:

听起来您可能会询问是否允许应用程序发送包含斜杠命令的消息,以触发斜杠命令。如果是这样,恐怕这是不可能的。相反,由于所有斜杠命令本质上都会触发特定的 API 端点,因此您需要联系该斜杠命令的开发人员以查看他们是否使该端点可公开访问,以便您可以创建自己的应用程序机制来尝试并触发对这些端点的命令端点。很抱歉,在这方面我没有更好的消息告诉你。我希望这些信息可以帮助您继续前进。感谢您对此进行检查。

所以我认为答案是我正在使用的应用程序不支持该功能,而 Slack 也不/不会。无论如何感谢您的帮助。


推荐阅读