title: How to post a message via Slack-App from c#, as a user not App, with attachment, in a specific channel
body: <p>I can not for the life of me post a message to another channel than the one I webhooked. And I can not do it as myself(under my slackID), just as the App. </p>
  
  <p>Problem is I have to do this for my company, so we can integrate slack to our own Software. I just do not understand what the "payload" for JSON has to look like (actually I'm doing it exactly like it says on Slack's Website, but it doesn't work at all - it always ignores things like "token", "user", "channel" etc.).</p>
  
  <p>I also do not understand how to use the url-methods like "<a href="https://slack.com/api/chat.postMessage" rel="noreferrer">https://slack.com/api/chat.postMessage</a>" - where do they go? As you might see in my code I only have the webhookurl, and if I don't use that one I can not post to anything. Also I do not understand how to use arguments like a token, specific userId, a specific channel... - if I try to put them in the Payload they are just ignored, it seems.</p>
  
  <p>Okay, enough whining! I'll show you now what I got so far. This is from someone who posted this online! But I changed and added a few things:</p>
  
  <pre><code>public static void Main(string[] args)
          {
              Task.WaitAll(IntegrateWithSlackAsync());
          }
  
          private static async Task IntegrateWithSlackAsync()
          {
              var webhookUrl = new Uri("https://hooks.slack.com/services/TmyHook");  
              var slackClient = new SlackClient(webhookUrl);
              while (true)
              {
                  Console.Write("Type a message: ");
                  var message = Console.ReadLine();
                  Payload testMessage = new Payload(message);
                  var response = await slackClient.SendMessageAsync(testMessage);
                  var isValid = response.IsSuccessStatusCode ? "valid" : "invalid";
                  Console.WriteLine($"Received {isValid} response.");
                  Console.WriteLine(response);
              }
          }
      }
  }
  
  public class SlackClient
  {
          private readonly Uri _webhookUrl;
          private readonly HttpClient _httpClient = new HttpClient {};
  
          public SlackClient(Uri webhookUrl)
          {
              _webhookUrl = webhookUrl;
          }
  
          public async Task&lt;HttpResponseMessage&gt; SendMessageAsync(Payload payload)
          {
  
              var serializedPayload = JsonConvert.SerializeObject(payload);
  
              var stringCont = new StringContent(serializedPayload, Encoding.UTF8, "application/x-www-form-urlencoded");
  
              var response = await _httpClient.PostAsync(_webhookUrl, stringCont);
  
              return response;
          }
      }
  }
  </code></pre>
  
  <p>I made this class so I can handle the Payload as an Object:</p>
  
  <pre><code>    public class Payload
  {
      public string token = "my token stands here";
      public string user = "my userID";
      public string channel = "channelID";
      public string text = null;
  
      public bool as_user = true;
  
  
      public Payload(string message)
      {
          text = message;
      }
  }
  </code></pre>
  
  <p>I would be so appreciative for anyone who could post a complete bit of code that really shows how I would have to handle the payload. And/or what the actual URL would look like that gets send to slack... so I maybe can understand what the hell is going on :) </p>