開発情報・ナレッジ

投稿者:SPIRERS ナレッジ向上チーム 2022年10月12日 (水)

Teams に登録通知を行う方法

フォームからデータが登録された際に、Teams に通知を行いたい!という要望は多いかと思います。
通知する手順をまとめましたので、ぜひ参考にしてみてください。
SPIRAL ver.1 では、メールを利用して通知する方法とWebHookを利用して通知する方法から選ぶことができます。
利用用途に合わせて通知方法を選んでください。

通知方法の選び方

通知方法の選び方としては、プログラムによる処理の「あり」「なし」で選びます。
メール 通常のフォームにて登録が成功した場合に通知する場合
WebHook 登録データに対する処理(プログラム) が成功・失敗した際に通知させる場合

メールを利用する場合の設定

手順1
通知を飛ばすためのチャネルを追加いたします。
すでに通知したいチャネルがある場合は、追加不要です。
また、プライバシーは、標準/プライベート のいずれでも通知することが可能となります。

手順2
① を押下し、表示されたメニューから ② の「メールアドレスを取得」を押下します。

手順3
表示されたポップアップより、メールアドレスを取得
手順4
取得メールアドレスを通知したいフォームの通知メールに設定するだけで、完了となります。

Webhookを利用する場合の注意点

Teams への通知機能を作成するためには、Incoming Webhook が許可されている必要があります。
サードパーティ製アプリが禁止されている場合 や Incoming Webhookが許可されていない場合は、利用することができません。

Webhookを利用する場合のTeams側の設定

手順1
通知を飛ばすためのチャネルを追加いたします。
すでに通知したいチャネルがある場合は、追加不要です。
また、プライバシーは、標準/プライベート のいずれでも通知することが可能となります。

手順2
① を押下し、表示されたメニューから ② のコネクタを押下します。

手順3
「Incoming Webhook」の箇所で、③ の「構成」ボタンを押下します。
初回作成の場合は、「追加」が表示されるため追加後に「構成」ボタンを押下してください。

手順4
任意の名前をつけて、Incoming Webhookを作成します。

「イメージをアップロードします」にて通知時の名前やアイコンを変更することができます。

手順5
作成に成功すると Incoming Webhook のURLが生成されるので、④ のボタンを押下して保存します。
Incoming Webhook のURLを使用して、通知のプログラムを作成いたしますので、漏れてしまうと、第三者からメッセージの投稿ができてしまいます。取り扱いには、ご注意ください。
URLを保存しましたら、完了ボタンを押下し、設定が終了となります。

Webhookを利用する場合のプログラム

手順1
Webhookを利用するための共通モジュールをカスタムモジュールに設定します。
※カスタムモジュールについては、サポートサイト カスタムモジュールを参照ください。
設置するプログラムは、以下となります。
PHP
<?php
class Teams {
    /**
     * @param array $data
     */
    function postTeams($data){
        $header = array(
            "Content-Type:application/json",
        );
        // curl
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_URL, TEAMS_WEBHOOK_URL);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
        $response = curl_exec($curl);
        if (curl_errno($curl)) echo curl_error($curl);
        curl_close($curl);
        return json_decode($response, true);
        }
}
?>
こちらのプログラムは、変更の必要はありません。
また、ファイルパスは任意で設定していただけます。

手順2
通知を行うフォームのサンキューページに以下のプログラムを追加します。
プログラムは、ページ上部に設置してください。
PHP
<?php
// <!-- SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME=TESMS_PODY -->
// 設定値
define("TEAMS_WEBHOOK_URL", "");
// カスタムモジュール読込
include_once("");
// 通知文章
$data["title"] = "たいとる";
$data["text"] = <<<EOT
**太字**\n
_斜め文字_\n
**_太字斜め文字_**\n
~~取り消し線~~\n
- 中黒1 \n- 中黒2 \n- 中黒3 \n
1. 番号付き1\n
2. 番号付き2\n
3. 番号付き3\n
[テキスト](URL)\n
&#128512;&#128513;&#128513;\n
{$SPIRAL->getContextByFieldTitle("text")}
EOT;

//------------------------------
// 設定値用モジュール
//------------------------------
// 以下修正不要
$teams = new Teams();
$result = $teams->postTeams($data);
// print_r($result);
?>
設定値は下記の4ヶ所を設定してください。
TEAMS_WEBHOOK_URL
4行目
Webhookを利用する場合のTeams側の設定の手順5で取得したIncoming Webhook のURLを設定
include_once
6行目
Webhookを利用する場合のプログラムの手順1で設定したカスタムモジュールのファイルパス
$data["title"]
8行目
メッセージのタイトル
$data["text"]
9行目
メッセージの本文(10行目-20行目の間を修正)

メッセージの本文は、Markdown を使用した書式設定が可能となっています。
下記を参考に設定をしてみてください。
太字 **太字**
斜め文字 _斜め文字_
太斜め文字 **_太字斜め文字_**
取り消し線 ~~取り消し線~~
中黒 - 中黒
リスト 1. 番号付き
リンク [テキスト](URL)
改行 \n
登録データ {$SPIRAL->getContextByFieldTitle("差替キーワード")}
下記のようにリンクに埋め込むことも可能です
[https;//pi-pe.co.jp/?id={$SPIRAL->getContextByFieldTitle("差替キーワード")}]({$SPIRAL->getContextByFieldTitle("差替キーワード")})

最後に

設定後は動作確認を必ず行い、動作に問題がないか確認をしてください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。
コンテンツに関しての
要望はこちら