Bot コマンド メニュー

重要

このセクションのコード サンプルは、バージョン 4.6 以降のバージョンの Bot Framework SDK に基づいて作成されます。 以前のバージョンのドキュメントを探している場合は、ドキュメントの Resources フォルダーの 「bots - v3 SDK」 セクションを参照してください。

ボットが応答できる一連のコア コマンドを定義するには、ボットのコマンドのドロップダウン リストを含むコマンド メニューを追加します。 コマンドの一覧は、ボットと会話しているときに、メッセージ作成領域のユーザーに表示されます。 一覧からコマンドを選択して、メッセージの作成ボックスにコマンド文字列を挿入し、[ 送信] を選択します。

ボットのコマンド メニューを作成する

コマンド メニューは、アプリ マニフェストで定義されます。 App Studio を使用して作成するか、アプリ マニフェストに手動で追加できます。

App Studio を使用してボットのコマンド メニューを作成する

ボットのコマンド メニューを作成するための前提条件は、既存のアプリ マニフェストを編集する必要があるということです。 コマンド メニューを追加する手順は、新しいマニフェストを作成するか、既存のマニフェストを編集するかに関係なく、同じです。

App Studio を使用してボットのコマンド メニューを作成するには

  1. Teams開き、左側のウィンドウで [アプリ] を選択します。 [ アプリ] ページで App Studio を検索し、[ 開く] を選択します。

    注意

    App Studio をお持ちでない場合は、ダウンロードできます。 詳細については、 App Studio のインストールに関するページを参照してください。

    アプリ スタジオのインストール

  2. App Studio で、[マニフェスト エディター] タブを選択します。既存のアプリ パッケージがない場合は、既存のアプリを作成またはインポートできます。 詳細については、「 アプリ パッケージの更新」を参照してください。

  3. マニフェスト エディター の左側のウィンドウで、[機能] セクションで [ボット] を選択します。

  4. マニフェスト エディター の右側のウィンドウで、[コマンド] セクションで [追加] を選択します。 [新しいコマンド] 画面が表示されます。

    アプリ パッケージを選択する

  5. ボットの コマンド メニューとして表示する必要があるコマンド テキストを入力します。

  6. メニューのコマンド テキストの下に表示する必要がある ヘルプ テキストを入力します。 ヘルプ テキスト は、コマンドの目的を簡単に説明する必要があります。

  7. [ スコープ ] チェック ボックスをオンにして、このコマンド メニューを表示する必要がある場所を選択し、[保存] を選択 します

App Studio の [新しいコマンド] メニュー ボタン

Manifest.json を編集してボットのコマンド メニューを作成する

コマンド メニューを作成するもう 1 つの方法は、ボットのソース コードの開発中にマニフェスト ファイルに直接作成することです。 このメソッドを使用するには、次の点に従います。

  • 各メニューでは、最大 10 個のコマンドがサポートされます。
  • すべてのスコープで動作する 1 つのコマンド メニューを作成します。
  • スコープごとに異なるコマンド メニューを作成します。

両方のスコープの単一メニューのマニフェストの例

両方のスコープの単一メニューのマニフェストサンプル コードは次のとおりです。

{
  ⋮
  "bots":[
    {
      "botId":"[Microsoft App ID for your bot]",
      "scopes": [
        "personal",
        "team"
      ],
      "commandLists":[
        {
          "scopes":[
            "team",
            "personal"
          ],
          "commands":[
            {
              "title":"Help",
              "description":"Displays this help message"
            },
            {
              "title":"Search Flights",
              "description":"Search flights from Seattle to Phoenix May 2-5 departing after 3pm"
            },
            {
              "title":"Search Hotels",
              "description":"Search hotels in Portland tonight"
            },
            {
              "title":"Best Time to Fly",
              "description":"Best time to fly to London for a 5 day trip this summer"
            }
          ]
        }
      ]
    }
  ],
  ...
}

各スコープのメニューのマニフェストの例

各スコープのメニューのマニフェストコード例は次のとおりです。

{
  ...
  "bots":[
    {
      "botId":"<Microsoft app ID for your bot>",
      "scopes": [
        "groupChat",
        "team"
      ],
      "commandLists":[
        {
          "scopes":[
            "team"
          ],
          "commands":[
            {
            "title":"help",
            "description":"Displays this help message for channels"
            }
          ]
        },
        {
          "scopes":[
            "groupChat"
          ],
          "commands":[
            {
            "title":"help",
            "description":"Displays this help message for group chat"
            }
          ]
        }
      ]
    }
  ],
  ...
}

ユーザーからのメッセージを処理するときは、ボット コード内のメニュー コマンドを処理する必要があります。 メッセージ テキストのメンション部分を解析することで、@ ボット コード内のメニュー コマンドを処理できます。

ボット コードでメニュー コマンドを処理する

グループまたはチャネル内のボットは、メッセージに記載されている @botname 場合にのみ応答します。 グループスコープまたはチャネル スコープ内でボットによって受信されたすべてのメッセージには、メッセージ テキストにその名前が含まれています。 返されるコマンドを処理する前に、メッセージ解析でボットが受信したメッセージをその名前で処理する必要があります。

注意

コード内のコマンドを処理するために、通常のメッセージとしてボットに送信されます。 ユーザーからの他のメッセージを処理する場合と同様に、それらを処理する必要があります。 コード内のコマンドは、テキスト ボックスに事前構成されたテキストを挿入します。 その後、ユーザーはそのテキストを他のメッセージと同様に送信する必要があります。

Microsoft Bot Frameworkで提供される静的メソッドを使用して、メッセージ テキストのメンション部分を解析できます。@ という名前RemoveRecipientMentionのクラスのActivityメソッドです。

メッセージ テキストのメンション部分を @ 解析する C# コードは次のとおりです。

var modifiedText = turnContext.Activity.RemoveRecipientMention();

ボット コードの円滑な機能を有効にするには、従う必要があるベスト プラクティスがいくつかあります。

コマンド メニューのベスト プラクティス

コマンド メニューのベスト プラクティスを次に示します。

  • シンプルに保つ: ボット メニューは、ボットの主要な機能を示すために使用されます。
  • 短くしてください。メニュー オプションは長くすることはできません。複雑な自然言語ステートメントにすることはできません。 単純なコマンドである必要があります。
  • 呼び出し可能な状態に保つ: ボットのメニュー アクションまたはコマンドは、会話の状態やボットのダイアログに関係なく、常に使用できる必要があります。

注意

マニフェストからコマンドを削除する場合は、変更を実装するためにアプリを再デプロイする必要があります。 一般に、マニフェストに変更を加える場合は、アプリを再デプロイする必要があります。

次の手順