C#初心者がSlackBotを召喚して見つけた知見。
2023-06-26
azblob://2023/06/26/eyecatch/2023-06-26-make-SlackBot-potipoti-000.jpg

どうも花田です~

今回はBlender ではなく C# 歴ついこないだ の 初心者としてブログを書き書きしましたので、ぜひご覧ください。

召喚までの手順ではなく、Slackに召喚した後、苦労した点を紹介します。

まずは、使用環境

AzureのBot ServiceでSlackに召喚している

Botの設定は 1. の参考文献 通りにAzureのApp Serviceにデプロイする

SlackAPIでBotに👀✨の絵文字の操作やスレッドに返信する操作を行っている

苦労した点

ここから本題です。

例えば、今回の 2.の参考文献 のこんなコード

C#turnContext.SendActivityAsync(MessageFactory.Text(welcomeText, welcomeText));

上記のコードでは welcomeText の文をBotが話してくれるだけのコードです。

これだけでは、Slackのスレッドでメンションすれば、スレッドにBotが返信してくれたり、チャンネルで、メンションすればチャンネルに返信してくれるだけです。これでは、チャンネルでメンションしても、新たにスレッドを作成し、返信してくれることはできませんでした。

このようにApp Serviceでデプロイすれば、Slackでも3.の参考文献で使用されるBot Framework Emulatorでも  welcomeText は出してくれます。

そう。同じような挙動で、デバッグができてしまうのが苦労した点なのです。

チャンネルでBotにメンションし、スレッドで回答を教えてくれる機能を実装するには、SlackAPIを呼んでくる必要がありました。

そのため、PostMessageAsyncのメソッドでデバッグしてあげることで、無事にBotがスレッドで返信してくれるようになりました。

C#await _slackClient.PostMessageAsync(チャンネルID, welcomeText, thread_ts: スレッドts);

所感!!!

C#自体苦労したのですが、15分経って分からなければ聞くをモットーに、すでに作成しているチームに使用環境や参考文献を聞くことでシステムを理解できたので、凄く面白くチーム開発ができたと感じました。

今回、2週間の期間で一から実装するためにSlackBotをフロンドエンドの立ち位置で使ったことで、工数自体削減できたのかなぁと思ってたりします。さすがにVue.jsなどは使えないかなと。(チーム開発なので、Reactとか使って書いてもよかたかも)

デバッグの重要性はひしひしを感じました。←ここが一番勉強になった。

今回は、使ってなかったですが、[コピペでOK] C#でログを出力する - Qiitaというものがあるようで、App Serviceで、ログが見れるようになるそう、、

Bot自体作ることは、本当に簡単でした!細かい設定は、LINE,Slack,Discordなどで違うので、そこが今回、難しかったと思います。Slackならではのリアクション機能があったりして理解するのに苦労しますが、無事にBotが作る事ができてよかったです!

参考文献

  1. 世界一わかりみの深いAzure Bot Service 〜 基本編:オウム返しボットを作ろう 〜 | SIOS Tech. Lab
  2. Bot Framework SDK とは - Bot Service | Microsoft Learn