LoginSignup
0
0

More than 3 years have passed since last update.

Bot Builder v4 でボット開発 : スキルを開発する - その 7 スキルのデバッグ

Last updated at Posted at 2020-03-22

前回 の記事ではテンプレートで作成されるユニットテストを見ました。今回はスキルのデバッグについて考えてみます。

メッセージタイプアクションのデバッグ

メッセージタイプのスキルは通常のボットと同じであるため、Bot Framework エミュレーターでデバッグが可能です。よって特別な対応は必要がありません。

イベントタイプアクションのデバッグ

イベントタイプのデバッグは 2 つの種類があります。

  • ローカルデバッグ
  • リモートデバッグ

ローカルデバッグ

まずは Bot Framework エミュレーターを使ったローカルデバッグを見ていきます。イベントタイプのアクションは ActivityType が Event である必要ですが、現在のバージョンのエミュレーターでは、アクション用のイベントタイプを送ることができません。

しかし、シリーズのその 5 でも紹介した通り、EventDebuggerMiddleware/event: で始まる文字列が来た場合はイベントとして処理してくれるため、以下の情報を送ることで任意のアクションをトリガーできます。

/event:{name:"アクション名",value:"<入力パラメーター>"}

さらにもう 1 点、ITurnContextEx.cs の IsSkill 拡張メソッドでスキル呼び出しかを確認していますが、このチェックをパスするためには、リクエストが他のボットから呼び出されたものである必要があるため、スキルとみなされません。そこでコードを以下のように書き換えます。

public static class ITurnContextEx
{
    public static bool IsSkill(this ITurnContext turnContext)
    {
        if (turnContext.Activity.Type == ActivityTypes.Event && turnContext.Activity.ChannelId == "emulator")
            return true;

        return turnContext.TurnState.Get<ClaimsIdentity>("BotIdentity") is ClaimsIdentity botIdentity && SkillValidation.IsSkillClaim(botIdentity.Claims) ? true : false;
    }
}

これでエミュレーターから実行すると、イベントをデバッグすることができます。

SampleAction
image.png

GetTimeAction
image.png

リモートデバッグ

アシスタントボットや Power Virtual Agent から呼び出した際のデバッグをしたい場合、マニフェストを変更して対応します。以下に PVA の例を紹介します。

1. ngrok でローカルサーバーを立てる。

ngrok http --host-header=localhost:3987 3978

2. manifest-1.0.json を ngrok のアドレスで更新。
image.png

3. Azure AD 上のアプリケーションの Homepage アドレスを更新。
image.png

4. PVA のスキルを読み込み直し。
image.png

5. ブレークポイントを設定して、PVA より呼び出し。
image.png

まとめ

ライブデバッグも無事できました。これで開発もはかどりそうです。

目次に戻る

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0