タイトルの通りです。
チャットワークには Web ベースのAPIが用意されており、それを使用することでプログラムからメッセージを投稿することができます。
今のところ認証は単一の API トークンによるもののみで、とてもシンプルです。
APIトークンはこちら https://www.chatwork.com/service/packages/chatwork/subpackages/api/token.php から確認できます。
投稿先(グループ)は、ルームID で指定します。URL で #!ridXXXXXXXXX となっている XXX… の数字部分がルームIDになります。
各エンドポイントについては公式ドキュメントに記載があります。メッセージを投稿する場合は /rooms/<ルームID>/messages です。
リクエストを作るところはこんな感じになります。
var req = (HttpWebRequest)WebRequest.Create("https://api.chatwork.com/v2/rooms/<ルームID>/messages"); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.Headers.Set("X-ChatWorkToken", <APIトークン>);
ここで、コンテントタイプを application/x-www-form-urlencoded にするのを忘れないようにします。
チャットワークの API は、レスポンスは JSON 形式ですが、POSTする内容はURLエンコード形式になります。
POSTする部分はこんな感じになります。
var message = "こんにちは\n世界"; var content = "body=" + Uri.EscapeDataString(message); var bytes = Encoding.ASCII.GetBytes(content); req.ContentLength = bytes.Length; new MemoryStream(bytes).CopyTo(req.GetRequestStream()); using (var resp = req.GetResponse() as HttpWebResponse) using (var reader = new StreamReader(resp.GetResponseStream())) { // レスポンスでは投稿したメッセージのIDが取れる reader.ReadToEnd(); }
メッセージに改行を入れれば、チャットワーク上でもちゃんと改行されます。
メッセージは body というパラメタで設定することになっているので、それを POST します。