Company Commnicator v5.3 が出たのでアップデートしてみた
Microsoft Teams App Templates の中で個人的に一番よくつかわれているであろう Company Communicator ですが、先日 v5.3 がリリースされました。
.NET が更新されて LTS の 6 になったので、使ってる人は基本的にこれを選ぶ感じになると思います。
リリースノートはこちらになります。
新機能の Capture the sender info in the Author app. が良さそうですね。今まで誰が送信作業をしたのかがわからなかったと思うので。v5.3 のリリースにあわせ v5 のマイグレーションガイドも更新されていて既存の v5.x から v5.3 への更新手順が追加されています。
今回は、この更新手順に従って手元の Company Communicator v5.2 を v5.3 にアップデートしていこうと思います。
事前準備
アップデート作業を始める前に以下の情報を用意しておいてください。
- Company Communicator をデプロイした先の Azure サブスクリプションのサブスクリプション ID
- Company Communicator をデプロイしているリソースグループ名
- Company Communicator をデプロイしたときに入力したベースリソース名
- 実際にデプロイ先のリソースグループにある Azure ボットのリソース名がベースリソース名になります。
そして、更新時には Azure CLI を使ったスクリプトが実行されるので Azure CLI をインストールしてください。
アップデート作業開始
Company Communicator のリポジトリをまるごとダウンロード (もしくは git clone) します。普段から git を使ってない人は以下のように zip でダウンロードするのが一番簡単で早いです。git を普段から使っている場合も今回は最新のスナップショットだけあればいいので zip ダウンロードのほうが早いかもしれません。
公式手順では、あとでコマンドを使ってブロックの解除をやっているのですが、個人的に展開して使うファイル群は最初に zip をまとめてやるのが好みなので最初に zip ファイルごとブロック解除をします。ダウンロードした zip ファイルを右クリックしてプロパティを表示して、許可するにチェックを入れて適用をしてダイアログを閉じます。
ブロックを解除したら適当な場所に zip ファイルを解凍しましょう。私は C:\Labs\microsoft-teams-apps-company-communicator-main
というフォルダーに解凍したものを起きました。今後、この記事内でフルパスが出てきた場合は、自分の環境に置き換えて読んでください。
次の手順ではアップデート用の PowerShell スクリプトを実行します。これは C:\Labs\microsoft-teams-apps-company-communicator-main\Deployment
フォルダーにあります。Windows ターミナルや PowerShell などで、このフォルダーを開きます。PowerShell の実行ポリシーを RemoteSigned にしたことが無い人は管理者権限でターミナルを立ち上げて以下のコマンドを実行してください。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
そして以下の dotnet6-migration.ps1
を実行します。
.\dotnet6-migration.ps1
実行すると以下の情報が聞かれるので入力してください。
- Company Communicator をデプロイしている Azure のサブスクリプション ID
- Company Communicator をデプロイしているリソースグループ名
- Company Communicator をデプロイしたときに入力したベースリソース名
- 実際にデプロイ先のリソースグループにある Azure ボットのリソース名がベースリソース名になります。
実際の画面は以下のようになります。
情報を入力すると次は Azure サブスクリプションへのログインが求められるのでログインをしてください。ログインが終わるとアップデートが実行されます。以下のログが表示されたらアップデートのコマンドの実行は完了です。
Completed updating app service to .NET 6 ベースリソース名
アップデートが適用されているかの確認作業とランタイムのアップデート作業
コマンドが正常に実行されたかどうかを確認していきます。Azure ポータルを開いて Company Communicator をデプロイしているリソースグループを開きます。そして、以下のリソースの設定を確認します。
まずは App Service を開きます。ベースリソース名で指定した名前のリソースになります。そして構成の全般設定を開くと .NET 6 になっていることを確認するのですがなっていませんでした。
リソースの定義の細かいところを見ると netFrameworkVersion に v6.0 が設定されているので正しく設定されているので恐らく表示が何かしらの理由でうまくいっていないだけに見えますが画面上からも以下のようにスタックと .NET バージョンを設定して保存をしました。
次に ベースリソース名-function
という名前の関数アプリを開きます。そして構成の関数のランタイムの設定を選んで、ランタイムバージョンを ~4
にして保存します。
この手順を以下の残りの関数アプリにも実施します。
- ベースリソース名-data-function
- ベースリソース名-prep-function
構成の更新
App Service の構成を開いて以下の 2 つの名前のアプリケーション設定を追加(ある場合は、そのままで OK)します。ここで設定したテキストと画像が Company Communicator の送信者の人の画面に設定されます。
- REACT_APP_HEADERTEXT : Company Communicator
- REACT_APP_HEADERIMAGE : https://raw.githubusercontent.com/OfficeDev/microsoft-teams-company-communicator-app/main/Source/CompanyCommunicator/ClientApp/src/assets/Images/mslogo.png
私の手元の環境は Company Communicator v5.2 だったのですが、この設定は最初から追加されていました。
そして WEBSITE_NODE_DEFAULT_VERSION
が 16.13.0 になっていることを確認します。これが無かったり違う値だった場合には 16.13.0 に変更してください。私の場合は最初から以下のように 16.13.0 になっていました。
そして最新の状態を反映するために App Service を再起動します。
WEBSITE_NODE_DEFAULT_VERSION
は以下の関数アプリ 3 つについても確認してください。
- ベースリソース名-function
- ベースリソース名-data-function
- ベースリソース名-prep-function
私の場合は 16.13.0 になっていました。確認したら 3 つの関数アプリに対しても再起動を行います。
動作確認のはずが壊れた
この状態でアップグレードガイドでは作業完了なのですが、Company Communicator が壊れてしまいました。具体的にはメッセージ送信者のための画面は出るのですが、メッセージ送信処理が動いていません。
試しに 1 つメッセージを送ってみたのですが、20名程度しか送信対象がいないにも関わらずいつまでたっても送信されませんでした。
何故?
恐らく最新版の Company Communicator 向けに Azure の環境は更新したのですが最新のソースコードがデプロイされていないのではないかと思います。実際に関数アプリを見ても以下のようにエラーが表示されています。これは関数アプリの設定と実際に、その上にデプロイされているアプリケーション間でバージョンの不整合が起きているというメッセージに見えます。
対処方法
アプリケーションを再デプロイしましょう。恐らくそれをしないと、アプリケーション自体はいつまでたってもバージョンアップ前のものが動いている状態になると思います。
ベースリソース名-function
の関数アプリを開いてデプロイセンターを開きます。そして同期を選択します。これで最新のソースコードが取得されてきてデプロイが実行されます。
残りのベースリソース名-data-function
と、ベースリソース名-prep-function
に対しても同様の手順で最新のソースコードをデプロイします。
そして、App Service についても同様の手順で最新のソースコードをデプロイしてください。
App Service 側のデプロイは 1 時間以上かかるので気長に待ちましょう。
動作確認
同期をしてアプリケーションのデプロイがすべて終わったら Company Communicator の動作を確認します。メッセージ送信が動いて送信したメッセージの状態を確認すると Created By の項目が増えていることが確認できます。これで Company Communicator v5.3 へのアップデートは完了です。
まとめ
アプリのデプロイが必要なのではないか?といった質問は本家の GitHub に Issue で聞いているので私の手順ミスではない場合は公式の手順が更新されると思います。
Discussion