0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【パブリッシャー】簡単! Microsoft Teamsにメッセージを送ってみる

Last updated at Posted at 2022-10-27

今回は、クエリビルダのExpression:拡張表現の関数群の中から、MS Teamsにメッセージを送る関数を使用して、簡単にWebインターフェースからメッセージを送ってみようと思います。

前準備

ChannelLink使用時の認証設定

Expression:拡張表現でChannelLinkを利用してメッセージを送信する場合は、使用する関数にMicrosoft Graph API認証情報を直接渡すことができます。しかし、クエリの中にその都度設定していると、変更があった場合等の管理が煩雑になってしまいます。通常はSharperlightをインストールするアプリケーションサーバーに対し、ひとつの専用認証アカウントを準備すると思うので、Sharperlight内のどこか一か所に設定できれば管理も簡単になります。これはSharperlightのサイトセットアップで実現することができます。

Sharperlightアプリケーションメニューからサイトセットアップを起動します。
サイトセットアップが起動したら、プロダクトの設定 -> システムを選択します。右側にMicorosoft Graph API用のプロパティが表示されるので必要な情報を記入します。'閉じる'ボタンで設定を保存し、Sharperlightサービスを再起動しておきます。
image.png
image.png

Webインターフェースの作成

WebインターフェースはSharperlightパブリッシャーで作成するWebレポートを使用します。
Sharperlightアプリケーションメニューからパブリッシャーを起動します。
image.png
パブリッシャーが起動したら新規ボタンでWebレポートの作成を開始します。
レポートのダイアログが開いたら一意のコードグループタイトルレポートのタイトルを記入します。
image.png
クエリを編集ボタンでクエリビルダを開きます。
今回はメッセージを送るためだけなのでクエリ結果は1行だけ表示されればいいです。これは送信後のメッセージを出すためだけです。
フィルター領域製品システムテーブルには製品を選択します。テーブルフィルターのオプションでトップn行1に設定。これで1行しか結果は戻ってきません。
image.png
出力領域にプロダクトId列を設定して、プレビューで結果を見てみます。よさそうです。
image.png
次にメッセージを記入させるフィールドを作成します。これはテキスト型のフィルタとしてWebレポートのプロンプトに表示させるようにします。
フィルター領域の右クリックメニューからその他 -> テキストを選択しテキスト列を追加します。
image.png
このフィルター列には範囲入力は必要ないので入力フィールドを1つにします。それには追加したフィルター列のオプションを開き、1つの値のみオプションを設定します。また、説明メッセージに、フィルター名Messageにします。
image.png
これでクエリの母体は完成です。'OK'ボタンで保存します。
image.png
レポートも適用ボタンで保存し、ビューボタンで実際のレポートがどのように表示されるか見てみます。少しお化粧直しが必要そうですが、ここまではこれで良しとします。
image.png

ChannelLinkを利用した例

ChannelLinkの使用では、Microsoft Teams側でメッセージを受け取るチャンネルのURLリンクを取得し、そのURLを使用する必要があります。今回は数チャンネルのURLを準備しておいて、Webレポートのプロンプトでどのチャンネルを利用するか選択できるようにしたいと思います。 
では先ほどのクエリを再度開き、編集を開始します。
送信先チャンネル選択フィルターを作成します。フィルター領域の右クリックメニューからその他 -> テキストを選択しテキスト列を追加します。追加されたフィルター列のオプションを開きます。
image.png
フィルター名channelにします。
説明チャンネル
1つの値のみオプションを選択。
ドロップダウンリストの使用および説明を表示オプションを指定。
更にサブクエリーを利用して検索データを準備します。サブクエリーを編集ボタンでクエリビルダを開きます。
Microsoft Teamsで取得した数個のチャンネルURLをカスタムデータとしてこのように定義します。
image.png
URL列名称列を出力します。フィルターとして選択された場合、最初の列が選択値となるので、今回はURLが必要なのでURL列が一番上になっています。OKボタンでチャンネルフィルター用のサブクエリを保存します。
image.png
検索リストに使用オプションをONにします。
以上でチャンネルフィルターのオプション設定は完了です。OKボタンでオプション設定を保存します。
これでフィルターの設定は終了です。
image.png
では次にExpression:拡張表現を使用して実際にメッセージを送る機能を作成します。
出力領域の右クリックメニューから拡張表現を追加を選びます。関数群の中からMicrosoft Teams - Create Message using Channel Link - MsTeamsCreateMessage(....)を選びます。テンプレートが編集フィールドにコピーされます。
image.png
この部分は上記で述べたようにサイトセットアップで既に定義済みなのでそれを利用します。
image.png
なのでこの関数AzureGraphAccessTokenSiteSetupに置き換えます。
image.png
2番目の引数はチャンネルのURLなので、プロンプトとして設定したチャンネル列の参照名をこのように指定します。
image.png
3番目はSubject、送信タイトルみたいなものでしょうか。今回は直接記入します。
4番目がメッセージなので、プロンプトとして設定したメッセージ列の参照名を指定します。
image.png
5番目は送信するメッセージがHTML形式の場合はTrue、そうでない場合はFalseをしていします。
6番目は重要度を指定する引数です。
image.png
最後にデータ型Textに指定して、OKボタンでExpression:拡張表現を保存します。
image.png
追加したExpression:拡張表現の説明をメッセージの送信と改名します。
image.png
これでプロンプトとして選択されたチャンネル、及び入力されたメッセージがこのExpression:拡張表現に渡され、送信関数によって送信されるといった機能が完成しました。
image.png
あとは送信結果を表示するために新たにExpression:拡張表現を追加します。
以下の構文は、メッセージを送信する関数を定義したExpression:拡張表現列に、errorという文字列を含んだ返却値が返されるかどうかで送信結果を判断しています。
image.png

IIF(Instr({%メッセージの送信}, "error",0)
,"送信エラー"
,"メッセージは正常に送信されました"
)

OKボタンで保存します。名称を結果とします。プロダクトId列は意味を持たないので出力領域から削除して完成です。またメッセージの送信列は表示する必要が無いので非表示にします。
image.png
OKボタンでクエリを保存します。レポートも適用ボタンで保存し、ビューボタンでレポートを拝見してみます。ちょっと化粧直しが必要そうですね。
image.png
でも機能は良さそうです。きちんと送信されていました。
image.png
それでは少し化粧直しをします。
レポートの定義を再度開き、オプションタブのフィルターの複数行表示オンにして、1行の項目1にします。
image.png
次に以下のCSS定義をユーザー設定のスタイルオプションに設定します。
image.png

<style type="text/css">
#promptFieldSet > div.dataEntryItem{
    width: 620px;
}
#pi2{
    width: 600px !important;
}
input.promptButton.k-button{
	display:none !important;
	visibility:hidden !important;
}
</style>

これで化粧直しが済みました。
image.png

Webhookを利用した例

今度はIncoming Webhookを利用した機能を作成していきます。先ほどのChannelLinkを利用した機能で作成したレポートを複製して、その複製されたレポートを編集していきましょう。時間の大幅な短縮になります。
パブリッシャーで先ほどのレポートを選択し、右クリックメニューから複製を選択します。
image.png
複製されたレポートを開きます。先ずクエリを編集ボタンでクエリの編集を開始します。
Webhook方式ではチャンネルが必要ないので、チャンネルフィルターを削除します。
image.png
出力領域に移動しメッセージを送信する関数が定義されているメッセージの送信列を開きます。前の構文をクリアします。関数群からMicrosoft Teams - Create Message using Webhook Link - MsTeamsCreateMessageWithWebhook(...)を探し出し、テンプレートを表示します。
image.png
一度ここでこの拡張表現は保存します。
新たに拡張表現を追加して、構文欄にTeamsから取得したWebhook URLを貼り付けます。参照名をwebhookURLとします。
image.png
image.png
もう一度メッセージの送信列を開きます。関数の最初の引数をWebhook URL列の参照名に置き換えます。
image.png
残りの引数もこのように変更します。メッセージはフィルターのmessageを参照しています。
image.png
これでこの送信関数は完成です。
最後に結果列の構文を編集します。このような構文を使用します。メッセージが正常に送信されると数字が戻ってくるので、IIF文を利用して正常な場合は緑のアイコン、異常があった場合は赤のアイコンを表示するようにします。
image.png

IIF( IsNumeric({%メッセージの送信})
	, "_icon:RadioOptionOn" 
	,"_icon:RadioOptionOff"
)

最終的に、出力領域はこのようになります。
image.png
OKボタンでクエリを保存します。
レポートを保存する前に少しCSS定義を編集します。チャンネルフィルターを消したので少し修正が必要です。
この箇所をpi2からpi1に変更します。
image.png
適用ボタンでレポートも保存し、ビューボタンでレポートをチェックします。
メッセージを空白のまま送信すると異常が発生し、赤のアイコンが表示されました。
image.png
正常終了の場合はこのようになります。
image.png
届いたメッセージは、ほら!この通り。:thumbsup:
image.png
以上で、Webレポートを利用したMicrosoft Teamsにメッセージを送る機能の検証を終わります。

では、失礼します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?