今回はCopilot Studioで作成するボット(Copilot)のログをApplication Insightsに送信する方法について確認します。
参考にしたサイトは下記となります。
事前準備
ボットのログの設定前に送信先のApplication Insightsを作成しておく必要があります。
本題ではないので、作成手順に関しては、下記をご参考ください。
Application Insightsの作成ができたら、プロパティから接続文字列を取得してください。
ボットのログ送信設定
設定手順
ボットの左サイドメニューの「設定」>「コパイロットの詳細」>「詳細」を押下すると、Application Insightsの接続文字列を設定する項目が表示されます。
この項目に事前準備でコピーした接続文字列を貼り付けて保存します。
また、出力するログには3種類あり、ON/OFFを選ぶことができます。
- 活動のログを記憶する
- 送受信メッセージとイベントの詳細を記録します。
- 機密活動プロパティのログを記録する
- 送受信活動のユーザー ID、名前、およびテキスト (メッセージ活動にのみ適用) を含めます。
- ノードアクションをログに記録する
- トピック内のノードが実行されるたびにイベントをログに記録します。
機密活動プロパティのログに関しては、個人情報が含まれるため、取り扱いに関しては注意が必要となります。
※ボットを使用する際に認証を必要としない場合は、ユーザーIDなどはランダム生成された値となるため、個人情報は含まれません。
動作確認
実際にCopilotに質問して、Application Insightsに送信されるログを確認しましょう。
まずはCopilotのテストから質問してみます。
続いて、Application Insightsへ送信されたログを確認してみます。
BotMessageReceivedイベントがメッセージの受信ログとなります。
TopicStartイベント、TopicActionイベント、TopicEndイベントがConversational boostingトピックの一連の開始、各アクション、終了のログとなります。
GenerativeAnswersイベントは生成型の回答するアクションのログとなります。
BotMessageSendイベントがボットのメッセージ送信ログとなります。
各イベントの中身を見ていきます。
- BotMessageReceivedイベント
- TopicStartイベント
- TopicActionイベント
- TopicEndイベント
- GenerativeAnswersイベント
- BotMessageSendイベント
参考サイトにログのプロパティの説明があります。
ログを確認してみると、ボットの送信、受信のメッセージ内容やフローの経路がわかるだけでなく、使用されたチャネルやユーザーIDも確認することができることがわかります。
Kustoクエリを駆使すれば、特定のユーザーのログの抽出、ボットへの質問内容の傾向調査などに活用できそうです。
※ユーザーIDに関しては、認証なしの場合はランダム値になるため、あまり役に立たないようです。
カスタムイベントログの送信
Copilot Studioには、独自のカスタムイベントログを送信すためのアクションが用意されています。標準機能では出力できない情報をApplication Insightsに送信することができます。
設定手順
Copilot Studioから適当なトピックの編集画面を表示します。
今回は「Conversational boosting」トピックを開きます。
ログを送信したい箇所で「ノードの追加」>「詳細」>「カスタムテレメントリイベントのログ」を押下します。
次に追加したアクションのプロパティを開き、イベント名とプロパティを設定します。
今回は直接文字を入力しましたが、変数を設定することも可能です。
最後に保存して完了となります。
動作確認
Copilotのテストから質問して、ログの出力内容を確認します。
当たり前ですが、見た目の変化はありません。
続いて、Application Insightsを確認します。
他のログに混ざって、指定したイベント名でカスタムログが出力されています。
詳細を確認すると下記の通りなっていました。
イベント名は「Event name」、プロパティは「SerializedData」に出力されていることがわかりました。その他のプロパティに関しては、標準のログと同じですね。
まとめ
今回はボット(Copilot)のログをApplication Insightsに送信する方法を紹介しました。
設定自体はApplication Insightsの接続文字列を設定するのみのため、とても簡単でした。Application Insightsにログが蓄積されるので、監視も簡単にできるのがいいですね。