この記事でのバージョン
Unity 2017.2.0f3
はじめに
今回はタイトル通り、UnityからSlackにメッセージを送ってみよう!という記事です。
Unityで作ったゲームに組み込むというよりは、エディタ拡張等の開発中に使う感じになると思います。
アクセストークンの取得
まずはアクセストークンを取得していきます。
こちらにアクセスし、Create An Appから新たにアプリを作成します。
AppNameを適当に設定し、メッセージを送信したいワークスペースも設定します。
次に権限を設定します。
「OAuth & 権限」の「権限スコープの選択」から今回は「メッセージを送信」の権限を追加します。
権限を設定するとワークスペースへのインストールが可能になるので、インストールします。
インストール完了後、アクセストークンが取得出来るようになります。
メッセージの送信
アクセストークンが取得出来たら実際にメッセージを送って見ましょう。
Slackのチャットにメッセージを送るためのMethodはchat.postMessageというのですが、
これをUnityで簡単に使えるように、SlackNotifierというものを作ってみました。
| // SlackNotifier.cs | |
| // http://kan-kikuchi.hatenablog.com/entry/SlackNotifier | |
| // | |
| // Created by kan.kikuchi on 2017.12.12. | |
| using UnityEngine; | |
| using UnityEngine.Networking; | |
| using System.Collections; | |
| using System.Collections.Generic; | |
| /// <summary> | |
| /// UnityからSlackに通知を送るクラス | |
| /// </summary> | |
| public static class SlackNotifier { | |
| //アクセストークン | |
| private const string TOKEN = "ここにアクセストークンを設定してね!"; | |
| /// <summary> | |
| /// Slackに通知を送る | |
| /// </summary> | |
| public static IEnumerator Send(string channel, string text, Dictionary<string, string> paramDict = null) { | |
| //基本のURL作成 | |
| string url = string.Format( | |
| "https://slack.com/api/chat.postMessage?token={0}&channel={1}&text={2}", | |
| TOKEN, channel, WWW.EscapeURL(text) | |
| ); | |
| //パラメータの設定 | |
| if(paramDict != null){ | |
| foreach (KeyValuePair<string, string> param in paramDict) { | |
| url += "&" + param.Key + "=" + param.Value; | |
| } | |
| } | |
| //UnityWebRequestを生成し、送信 | |
| UnityWebRequest request = UnityWebRequest.Get(url); | |
| yield return request.SendWebRequest(); | |
| //通信エラー判定 | |
| bool isError = request.isNetworkError || request.isHttpError; | |
| //通信エラー内容の表示 | |
| if(isError) { | |
| Debug.LogWarning(request.url + "\n" + request.responseCode + "\n" + request.error + " \n" + request.downloadHandler.text); | |
| } | |
| //レスポンスの表示 | |
| else{ | |
| Debug.Log(request.responseCode + "\n" + request.downloadHandler.text); | |
| } | |
| } | |
| } |
UnityWebRequestの使い方については以下の記事を参照の事。
使い方は、SlackNotifierのTOKENにアクセストークンをコピペし、SlackNotifier.Sendを実行するだけ。
なお、チャンネル名と送信するテキストは必須で、他のパラメータはparamDictを使って指定します。
StartCoroutine(SlackNotifier.Send( channel : "unity", //チャンネル名の設定 text : "送信!" //テキストの設定 ));
StartCoroutine(SlackNotifier.Send( channel : "unity", //チャンネル名の設定 text : "送信!", //テキストの設定 //パラメータの設定 paramDict : new Dictionary<string, string>(){ {"username", "ボット"}//ユーザ名の設定 } ));