Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8949

Microsoft Bot FrameworkをMicrosoft Azureにデプロイするチュートリアルをかみ砕いてみた

$
0
0

はじめに

タイトルの通りです。Microsoft Bot Frameworkのチュートリアルで詰まりまくって具体的なパラメータをどう与えればいいのかわからなかったので、具体的な例を作って整理してみました。CMD上からのAzureログインからデプロイまで。

参考資料・前提条件

これの「ボットをデプロイする」の直前までが終わっていることが前提です。
基本的なボットの作成とデプロイに関するチュートリアル - Bot Service | Microsoft Docs

作業

1. Microsoft Azureにログインする。

Microsoft Azureにログインします。cmdでコマンドを叩くとそのままブラウザが立ち上がり、ブラウザ上でログインすることができます。

cmd
az login

2. アカウントリストを取得する

下記のコマンドを入力し、アカウントリストを取得します。

cmd
az account list

すると、このような感じでサブスクリプションのデータが出てきます。

cmd-こんなサブスクリプションデータだったとする
[
  {
    "cloudName": "AzureCloud",
    "id": "piyopiyo-piyo-nyan-nyan-hogehogehoge",
    "isDefault": true,
    "name": "無料試用版",
    "state": "Enabled",
    "tenantId": "hoge-hoge-fuga-fuga-piyopiyo",
    "user": {
      "name": "*****@hogehoge.com",
      "type": "user"
    }
  }
]

以降、これを使って説明していきます。

3. Azureのサブスクリプションにアクセスする

サブスクリプションの指定はcmd上で次のように入れます。チュートリアルの<azure-subscription>とは、上でいうところの"id"が対応します。

cmd
az account set --subscription "piyopiyo-piyo-nyan-nyan-hogehogehoge"

4. アプリケーションを登録する

アプリを作ります。

cmd
az ad app create --display-name "samplebot_hoge2" --password "password_hogefuga1" --available-to-other-tenants

--display-name:名前です。サンプルは適当(samplebot_hoge2)です。
--password:パスワードです。サンプルは適当(password_hogefuga1)です。

これを実行して問題なく作成できると、JSON形式でいろいろと出てきますが、appIdというGUIDをそのまま使用するので、控えておきましょう。

出てくるもの
{
  "acceptMappedClaims": null,
  "addIns": [],
  "allowGuestsSignIn": null,
  "allowPassthroughUsers": null,
  "appId": "fugafuga-piyo-piyo-piyo-hogehogehoge",
  "appLogoUrl": null,
...
控えておくべき情報
  "appId": "fugafuga-piyo-piyo-piyo-hogehogehoge",

5. ARM テンプレートを使用してデプロイする

ここからがめちゃくちゃ詰まりました。値のそれぞれの意味を整理しています。

そもそもARMテンプレートってなに

ARMはAzure Resource Managerの略であり、そのテンプレートをベースにすることでAzure内でうまくデプロイできるようです。すごい便利なんだなぁ、と思いました(小並感)
より詳しくは@t-tsurumiさんのAzureのARMテンプレートを理解する part1(基本編)が参考になるかと思います。

App Service Planがないとき

最初からやってみているときにはチュートリアルの「App Service Planがないとき」を実施しましょう。

cmd
az deployment create 
--name "samplebot-1gou" 
--template-file "./deploymentTemplates/template-with-new-rg.json" 
--location "centralus" 
--parameters 
appId="fugafuga-piyo-piyo-piyo-hogehogehoge" 
appSecret="password_hogefuga1" 
botId="samplebotkun03" 
botSku=F0 
newAppServicePlanName="new-sample-bot-plan-99" 
newWebAppName="newsamplebotkun-0X" 
groupName="atarashii-group" 
groupLocation="Central US" 
newAppServicePlanLocation="japaneast"

与える値の内容は下記

項目項目名任意備考
--name-任意わかりやすいボットの名称。適当につけてOK
--template-file-既存テンプレートファイルtemplate-with-new-rg.jsonが参照できるようにパスを入れてあげる。template-with-new-rg.jsonはボットの作成時に自動で生成される
--location-既存ロケーション。値はaz account list-locationsをcmd上で叩いて確認。jsonの形式で出力されるのでname項目を入れる
--parametersappId既存4で作成したappIdのGUID
--parametersappSecret既存4で作成した--passwordのパスワード
--parametersbotId任意自分が作ったボットの名称。任意
--parametersbotSku既定価格レベル。F0 (無料) または S1 (Standard) を指定できる
--parametersnewWebAppName任意Webアプリとして展開するための名称。任意
--parametersnewAppServicePlanName任意アプリサービスの名称。任意
--parametersnewWebAppName任意アプリサービスの名称。任意
--parametersnewAppServicePlanLocation既定リソースタイプに応じて決まったロケーションが定義されている。エラーの記載で詳しく教えてくれる。

6. デプロイ用のコードを準備する

ボットのルートディレクトリ上で、下記コマンドをそのまま実行します。
言語ごとに決まっていますが、下記の例はTypescriptです。成功するとweb.configができます。

cmd
az bot prepare-deploy --code-dir "." --lang Typescript

Kuduと呼ばれるAzure WebAppsで利用されているデプロイエンジンを用いてデプロイします。
そのために、まずは、フォルダの中身を下記のようにすべて選択してzip圧縮します。zipファイル名をcode.zipとします。

sample.png

その後、下記のようにコマンドを叩きます。

cmd
az webapp deployment source config-zip --resource-group "atarashii-group" --name "newsamplebotkun-0X" --src "code.zip" 
項目項目名任意備考
--resource-group-既存アプリケーションを作成したリソースグループ名
--name-既存5で定義したnewWebAppNameの値
--src-既存直前の手順で作成したzipファイル名

これが正常に終了して、結果のJSONが出力されればデプロイは完了です。

7.実際に動かしてみる

のこりはチュートリアルに従えばあまり詰まらずに実行することができます。
Web チャットでのテスト | 基本的なボットの作成とデプロイに関するチュートリアル - Bot Service | Microsoft Docs

エラー対応

Deployment failed. Correlation ID: ***

デプロイが失敗したことを示しています。Correlation ID(関連ID)に基づいて、ポータルなどでエラーの詳細を参照できます。

詳細はこちらを見ると結構わかりやすいと思います。
Azure Resource Manager でのデプロイ履歴の表示

The Microsoft App ID property was not recognized as a GUID and may be invalid.

原因

MicrosoftAppID が正しく選択されていないのが問題です。

解決策

アプリケーションを初回登録した際に発行されるJSONに含まれているappIdを参照してください。cmdに自分で打ち込んだアプリの名称ではないことに注意しましょう。

参考資料


Viewing all articles
Browse latest Browse all 8949

Trending Articles