curl
slack
экспорт
Технические вопросы
7.x

Отправка curl

Приветствую.
Хочу сделать интеграцию с внешней системой, в частности мессенджером 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 комментарий

[csharp]
public class RequestUtils: IDisposable {

#region Methods: Private

private async Task 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
}

[/csharp]

Показать все комментарии