Mattermostの内向きWebhookをPHPのfile_get_contentsで叩く方法
目次
本エントリの概要
- Slackクローンとして頑張っているMattermostの統合機能「内向きウェブフック(Incoming WebHooks)」へPHPから送信するのをやってみたメモです
- PHPの環境の制約によりcURLが使えなかったので代わりにfile_get_contents()を使いました
- file_get_contents()を使うサンプルコードがあまり見当たらなかったので書きました
コード
// サーバーで作った内向きウェブフックのURL $url = "http://mattermost.server.path/hooks/xxxxxxxxxxxxxxxxxxxxxxxxxxx"; $body = '変なBlogに投稿がありました。 **[untitled.engineer No.20181 Mattermostの内向きWebhookをPHPのfile_get_contentsで叩く方法](http://path/to/blog/entry/20181)** + Slackクローンとして頑張っているMattermostの統機能「内向きウェブフック」へPHPから送信するのをやってみたメモです。 + PHPの環境の制約によりcURLが使えなかったので代わりにfile_get_contentsを使っています。 '; $content = array( "icon_url" => "/path/to/icon.png", "username" => "NoticeFromWebApplication", "text" => $body, ); $context = stream_context_create(array( "http" => array( "ignore_errors" => true, "method" => "POST", "header" => "Content-Type: application/json", "content" => json_encode($content), ) )); $response = file_get_contents($url, false, $context); // まずサーバーに届いて受け取られたかを確認します $pos = strpos($http_response_header[0], '200'); if ($pos === false) { // ここに適当な例外を } // 次に投稿に成功したかを確認します // 投稿成功した場合$responseには文字列"ok"が入ります。 // 投稿失敗の場合はエラー内容がjsonで返ります if($response != 'ok' ) { // ここに適当な例外を }
ポイント
- PHP5.3(!)(察してください)で動作確認しています
- 本文にMarkdown書けます。
- 本文に
@ユーザー名
を書けばメンションも送れます。
まとめ
- 簡単ですね
- ただ、本当はcURLを使った方がいいみたいですよ。