プログラミング

PHPでMattermostへメッセージ送信

hebishima.shogo

はい、hebiです。

PHPでMattermostへメッセージを送信する方法を記事にしたいと思います。

今回は、定期的なタスクの実行を行うcronを使ってMattermostへメッセージを送信してみます。

例えば、指定した時間に社員に向けて情報を発信したい場合などに有効です。

スポンサーリンク

前提

以下の環境で動作確認を行います。

あわせて読みたい
【crontab】Linuxで定期的にタスクを自動実行する方法
【crontab】Linuxで定期的にタスクを自動実行する方法
あわせて読みたい
Mattermostのインストール方法
Mattermostのインストール方法

Mattermostの設定

Mattermostへメッセージを送信可能にするための設定を行います。

システムコンソールの表示

以下の操作でシステムコンソールを表示します。

パーソナルアクセストークンを有効にする

「統合機能」を選択し、パーソナルアクセストークンを有効にします。

アクセストークンの設定

プロフィールのセキュリティからアクセストークンを生成します。

Mattermostのバージョンによって操作が異なる可能性があります。

セキュリティーを見つけるのに一苦労でした(;’∀’)

アクセストークンをコピーしておきましょう。

送信するチャンネルのIDを取得

送信するチャンネルのIDを取得します。

コピーしておきましょう。

以上で設定完了です。

メッセージ送信処理実装

メッセージを送信する関数を実装します。

public function sendMessage()
{
    $mattermostUrl = "http://your-mattermost-server:8065";
    // ここに生成したアクセストークンを指定
    $apiToken = "9bb4owrd4t8dxcs5aooo4ezhrw";
    // ここに送信したいチャンネルのIDを指定
    $channelId = "4cki6gqt3fg1pepfzc86be8qaa";
    
    // 送信したいメッセージを指定
    $message = "Hello";

    $url = "$mattermostUrl/api/v4/posts";

    $data = [
        'channel_id' => $channelId,
        'message' => $message
    ];

    // cURLセッションの初期化
    $ch = curl_init($url);

    // cURLオプションの設定
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer $apiToken",
        'Content-Type: application/json'
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

    // cURLリクエストの実行
    $response = curl_exec($ch);

    // HTTPステータスコードの取得
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    // cURLセッションのクローズ
    curl_close($ch);

    // レスポンスの確認
    if ($httpCode == 201) {
        return true;
    } else {
        return false;
    }
}

作成したsendMessageをcronのrunで呼び出します。

public function run(array $params)
{
    if ($this->sendMessage()){
        CLI::write('successfully.', 'green');
    }else{
        CLI::error('error');
    } 
}

以上で実装完了です。

実行してみましょう!

cronの実行

Tera Termからcommand:testを実行してみます!

sudo php spark command:test

成功することを確認!

Mattermostへメッセージ送信確認

Helloが指定したチャンネルに送信されました!!

最後に

簡単にメッセージを送信することができましたね!
今まで手動で送っていたメッセージ送信を自動化することで時短になること間違いなしです( `ー´)ノ

ぜひ利用してみてください(;’∀’)

次回はファイルの送信方法を記事にしたいと思います。

最後までお読みいただきありがとうございました(^^♪

スポンサーリンク
ABOUT ME
hebi
hebi
エンジニア
フルスタックエンジニアとして活躍中。
HTML5プロフェッショナル認定Level1、Level2所持者です。

未経験の方でも簡単にプログラミングを学べるようにと情報を発信しております。
記事URLをコピーしました