タイトルの通りです。
Web App版のAzure Bot Serviceではオンラインエディタで変更した内容がすぐ反映されるのに対して、Functions版のBotでは、オンラインエディタからJavaScriptコードを変更しても、変更内容が全く反映されませんでした。
サービスの再起動など色々試していたのですが、どうも自分でビルドしないと動かないらしいです。
node.js - Azure bot app doesn't updating after modifications - Stack Overflow
ビルドの事前準備
azure-functions-core-toolsインストール
開発やデプロイに利用するパッケージです。
私の開発環境がUbuntuなので、こちらの手順で必要なパッケージをインストールしました。
$ wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb $ sudo dpkg -i packages-microsoft-prod.deb $ sudo apt update $ sudo apt install azure-functions-core-tools
他のOS向けのものもREADMEに記載があります。
$ func version 2.0.1-beta.35
azure-functions-packインストール
パッケージングに使うパッケージです。
NPMでインストールします。
$ npm install -g azure-functions-pack
$ funcpack -V
1.0.0
azure-cliのbotservice拡張のインストール
azコマンドのサブコマンドでbotを使えるようにしておきます。
$ az extension add --name botservice The installed extension 'botservice' is in preview.
$ az --version | head azure-cli (2.0.44) #--省略 Extensions: botservice (0.0.3) #--省略
リファレンスはこの辺りです。
ソースコード変更作業
上記のstackoverflowではデバッグコンソールから作業するとありましたが、色々エラーが出たり、操作性悪いので、ローカルに落としてビルドして上げます。
ソースコードダウンロード
管理画面からもダウンロードできますが、コマンドからの方が簡単です。
azコマンドでダウンロードします。
$ az bot download -g your-bot-resource-group -n your-bot-name
コードの変更
関数のディレクトリ(ここではmessages関数)に入って、必要なパッケージをインストールして、修正やEmulatorを利用したデバッグを行います。
$ cd your-bot-name/bot-src $ cd messages $ npm i $ code . # or vim or something
パッケージングとデプロイ
your-bot-name/bot-src
直下に移動して以下のコマンドを実行します。.funcpack
というディレクトリが作成されて、ここにパッケージがデプロイされます。
$ funcpack pack -c .
info: Generating project files/metadata
info: Webpacking project
info: Complete!
.funcpack
が存在すること確認してから以下のコマンドでデプロイを実行します。ちなみに.funcpack
無しでデプロイするとソースコードが空の状態になりました。
$ az bot publish -g otomo-bot-func-rg -n otomo-bot-func
毎回コマンド打つの面倒なので、package.json準備作っておいてもいいかもしれません。
{ "scripts": { "build": "funcpack pack -c .", "deploy": "az bot publish -g otomo-bot-func-rg -n otomo-bot-func" } }