Приветствую.
Хочу сделать интеграцию с внешней системой, в частности мессенджером Slack, он позволяет сделать WebHook, и обращаться к нему посредством POST запроса, например:

curl -X POST --data-urlencode 'payload={"channel": "#general", "username": "BPM-bot", "text": "This is posted to #general and comes from a bot named webhookbot.", "icon_emoji": ":ghost:"}' https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXX

Это запостит в канал #general от имени BPM-bot сообщение text и смайл, https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXX уникальный адрес webhook`а для моего инстанса Slack.

Как в BPM реализовать отправку этого сообщения? Т.е. как сделать бизнес-процесс мне понятно, а вот с отправкой сложности...

Нравится

1 комментарий
public class RequestUtils: IDisposable {
 
    #region Methods: Private
 
    private async Task<HttpWebResponse> SendRequest(WebRequest request) {
        var response = await request.GetResponseAsync();
        return (HttpWebResponse)response;
    }
 
    #endregion
 
    #region Methods: Public
 
    public void Dispose() {
    }
 
    public void DoPostRequest(string requestUri, string user, string pwd, string text) {
       /* data sample
        {
            "userName": "user1",
            "password": "password",
            "data": "Hello"
        }
        */
        /* Преобразовываем в json */
        string jsonData = JsonConvert.SerializeObject(new {
            userName = user,
            paswword = pwd,
            data = text
        });
        /* uri sample: http://localhost/MyApp/bla.svc/Login */
        WebRequest request = WebRequest.Create(requestUri);
        byte[] dataArray = Encoding.UTF8.GetBytes(jsonData);
        request.Method = "POST";
        request.ContentType = "application/json";
        request.ContentLength = dataArray.Length;
        Stream stream = request.GetRequestStream();
        stream.Write(dataArray, 0, dataArray.Length);
        /* send request */
 
        /* async */
        var response = SendRequest(request);
 
        /* or sync*/
        var response = request.GetResponse();
    }
 
    #endregion
}
Показать все комментарии