#BotFramework #Composer で Application Insights でログ管理

今回は Bot Framework Composer のログを Application Insights で管理しましょうという話です。

Composer はよく出来ていて、詳細なログを Application Insights に出力します。(Composer の設定によります。後述)

設定を確認すれば、開発者が特にがんばらなくても詳細なログを残せます。素敵!


ログ出力について Composer で作成したプロジェクトの設定ファイルにあらかじめ設定項目が用意されています。

[Configure] で [Advanced Settings View (json)] を開くと “telemetry” セクションがそれです。
デフォルトでは “options” – “connectionString” の値が空文字列になっています。つまり Application Insights にログ (Telemetry) を出力しない設定になっています。

Azure ポータルで Application Insights リソースを作成して、接続文字列を確認します。

この値を Composer の connectionString に設定するだけです。
実行から数分待つ必要がありますが詳細なログが出力されます。Composer のログは “customEvents” に出力されます。

Azure ポータルで Application Insights のブレードで [ログ] を開き、適切な KQL を実行します。
例えば

customEvents
| order by timestamp desc 

とします。(ここで timestamp の逆順にしているのは単に新しいものを上に表示したいからです)

すべてのアクションが詳細に出力されているのが分かります。


これで完璧!かというと、場合にもよりますが、そうでもありません。

見やすいように、ユーザー入力およびボットからの応答に絞ってみてみます。
name 列が “BotMessageReceived” または “BotMessageSend” のものです。

customEvents
| where name == "BotMessageReceived" or name == "BotMessageSend"
| order by timestamp desc 

ユーザー入力、ボットからの応答の Text が出力されていません。対話ログが取れていないということです。

実はこれには理由があって、個人情報が含まれている可能性があるのでデフォルトでは取得していないようです。
Composer 独自の挙動ではなく Bot Framework の設定です。

アクティビティ イベントと個人情報のログ記録の有効化/無効化

個人情報を収集することのリスクを理解した上で対話ログを残したいということであればそれは可能です。

Composer の Configure で “logPersonalInfomation” を true にします。

これでユーザー入力、ボットからの応答もログに残るようになります。


最後にもう一つ。前の投稿で デバッグ情報をコンソールに出力 しましたが、これも Application Insights にも出力されます。
Composer のすべてのアクションが出力されるので当然です。

customEvents
| where name=="AdaptiveDialogAction" and customDimensions["Kind"] == "Microsoft.LogAction"
| order by timestamp desc 

ただし少し分かりづらいですね。

例えば上の例だと [ActionId] が “Microsoft.LogAction(TextTemplate(${LogAction_Text_xtqgqH()})” となっています。
“${LogAction_Text_xtqgqH()}” って何?という話です。

正解は Composer を見ると分かります。

“Log to console” で [Show code] をクリックすると lg ファイル (Language genelator) のコードが見られます。
ここに “${LogAction_Text_xtqgqH()}” が見つかるはず。

念のため、この値は Composer が自動生成するので同じ名前にはなりません。

Log to console アクションが一つ二つならば簡単ですが、数が増えると探すのが大変です。

そんな時は [Bot responses] – [Show code] するとダイアログに含まれるすべての関数が見られます。ここならば、探したい関数名も見つけやすいでしょう。


Application Insights に詳細なログが出力されることが分かりました。

運用まで考えられているので Bot Framework Composer で安心してボット開発ができると思います。

広告

#BotFramework #Composer で Application Insights でログ管理」への2件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中