Untuk menggunakan Method-method yang ada di API Slack, maka perlu integrasi dan authorization antara API Slack dan MVC Application, untuk mengintegerasikannya diperlukan sebuah penghubung antara keduanya, penghubung di sini berupa Slack Apps.
Berikut langkah-langkah untuk membuat Slack Apps
- klik link slack apps untuk membuat aplikasi slack.

- Isi bagian Basic Information

- Isi bagia Oauth & Permissions

isi field Redirect URL dengan Url web aplikasi kita, yang nantinya berfungsi sebagai penampung parameter code
isi field Permissions Scope dengan Scope sesuai dengan kebutuhan kita untuk mengkases method. - Selanjutnya masuk ke bagian Submit To App Directory, lengkapi field-field App Directory Submissions.

- Selanjutnya klik button Submit App.
- Setelah aplikasi ter-submit maka akan muncul tampilan seperti gambar di bawah

yang kita perlukan dari aplikasi ini adala Client Id dan Client Secret, untuk nantinya digunakan sebagai parameter dalam proses Authorization. - Approve aplikasi yang telah kita buat di team Slack,
contoh : https://ranzcrew.slack.com/apps/manage
Setelah kita selesai membuat Slack Apps dan mempunyai Client Id dan Client Secret, langkah selanjutnya adalah mengintegrasikan dengan aplikasi kita.
Berikut langkah-langkah untuk mengintegrasikannya :
1. Membuat Button Login Slack.
Untuk membuat button Login Slack bisa meng-copy nya dari sini.
contoh code nya :
[code languange=”html”]
<a href="https://slack.com/oauth/authorize?scope=client,identify,read,post,client_id=140389083489.144862954198">
<img alt="Add to Slack" height="40" width="139" src="https://platform.slack-edge.com/img/add_to_slack.png" srcset="https://platform.slack-edge.com/img/add_to_slack.png 1x, https://platform.slack-edge.com/img/add_to_slack@2x.png 2x">
</a>
[/code]
perhatikan pada code ada parameter yg harus di isi,
– pertama parameter scope di isi dengan client,identify,read,post agar kita bisa mengakses semua methode yang ada pada API Slack.
– kedua parameter client_id di isi dengan data client id yang kita dapatkan ketika membuat Slack Apps.
setelah kita mendapat kan html code untuk button login Slack, paste code tersebut dalam Login Page aplikasi kita.
berikut hasil nya.
2. Update MVC Controller
Membuat Mehode Authorization* sebagai penampung parameter code.
*disesuaikan dengan pengisian Redirect URL pada pembuatan Slack Apps.
[code language=”csharp”]
public ActionResult Authorization()
public ActionResult Authorization()
{
Session["code"] = Request.QueryString["code"];
if (Session["code"] != null)
{
HttpClient client = new HttpClient();
JavaScriptSerializer js = new JavaScriptSerializer();
string stateInfo = "";
string defaultPass = "123456";
string defaultQuestion = "Slack Real Name";
bool isSuccess = false;
string code = Session["code"].ToString();
HttpResponseMessage response = client.GetAsync("https://slack.com/api/oauth.access?client_id=140389083489.144862954198&amp;amp;amp;amp;client_secret=5b365bf5aded92a1173abc7e2e1c7eb3&amp;amp;amp;amp;code=" + code).Result;
if (response.IsSuccessStatusCode)
{
stateInfo = response.Content.ReadAsStringAsync().Result;
ApiResultModel apiResult = js.Deserialize&amp;amp;amp;lt;ApiResultModel&amp;amp;amp;gt;(stateInfo);
if (apiResult.ok)
{
response = client.GetAsync("https://slack.com/api/users.info?token=" + apiResult.access_token + "&amp;amp;amp;amp;user=" + apiResult.user_id).Result;
if (response.IsSuccessStatusCode)
{
stateInfo = response.Content.ReadAsStringAsync().Result;
SlackUserModel apiUser = js.Deserialize&amp;amp;amp;lt;SlackUserModel&amp;amp;amp;gt;(stateInfo);
if (apiUser.ok)
{
MembershipUser user;
MembershipCreateStatus status;
if (membershipService.FindUsersByEmail(apiUser.user.profile.email).Count == 0)
{
user = membershipService.CreateUser(apiUser.user.name, defaultPass, apiUser.user.profile.email, defaultQuestion, apiUser.user.real_name, true, out status);
}
if (authenticationService.LogOn(apiUser.user.name, defaultPass, false))
{
CreateAuthenticationTicket(apiUser.user.name);
}
Session["token"] = apiResult.access_token;
isSuccess = true;
}
}
}
}
if (isSuccess)
{
return RedirectToAction("Index", "Home");
}
else
return RedirectToAction("Login", "SGAccount");
}
else
return RedirectToAction("Login", "SGAccount");
}
[/code]
Contoh penggunaan method API Slack
- Method channels.list
method yang digunakan untuk menampilkan daftar channel yang tersedia.
[code language=”csharp”]
HttpResponseMessage response = client.GetAsync("https://slack.com/api/channels.list?token=" + token).Result;
if (response.IsSuccessStatusCode)
{
stateInfo = response.Content.ReadAsStringAsync().Result;
SlackChannelModel apiResult = js.Deserialize&amp;amp;lt;SlackChannelModel&amp;amp;gt;(stateInfo);
if (apiResult.ok)
{
listChannels = apiResult.channels;
}
}
[/code]
- Method chat.meMessage
method yang digunakan untuk mengirim message. - Method channels.history
method yang digunakan untuk menampilkan history chat pada channel tertentu.
[code language=”csharp”]
HttpResponseMessage response = client.GetAsync("https://slack.com/api/channels.join?token=" + token + "&name=" + id).Result;
if (response.IsSuccessStatusCode)
{
response = client.GetAsync("https://slack.com/api/channels.history?token=" + token + "&channel=" + id).Result;
if (response.IsSuccessStatusCode)
{
stateInfo = response.Content.ReadAsStringAsync().Result;
ChatRoomModel chatModel = js.Deserialize<ChatRoomModel>(stateInfo);
if (chatModel.ok)
{
chatModel.messages = chatModel.messages.Where(n=>n.subtype != "channel_join").OrderBy(n => double.Parse(n.ts.Split(‘.’).First())).ToList();
chatRooms = new SlackChatRoomPresentationStub().MapList(chatModel.messages, token);
chatRooms = chatRooms.OrderBy(n => n.ChatDateTime).ToList();
isSuccess = true;
}
}
}
[/code]
untuk method lainnya bisa klik method-method API Slack.
