コマンド メニューを作成する

注:

新しい世代の Teams 開発ツールを使用して JavaScript を使用してコマンド ボットを構築する手順ガイドに従って 、コマンド ボット を作成することをお勧めします。 Teams Toolkit の詳細については、「 Teams Toolkit Overview for Visual Studio Code」および「Visual Studio 用Teams Toolkit の概要」を参照してください。

重要

このセクションのコード サンプルは、バージョン 4.6 以降のバージョンの Bot Framework SDK に基づいています。 以前のバージョンのドキュメントをお探しの場合は、ドキュメントのレガシ SDK フォルダーの ボット - v3 SDK セクションを参照してください。

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

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

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

開発者ポータルを使用してボットのコマンド メニューを作成する

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

開発者ポータルを使用してボットのコマンド メニューを作成するには:

  1. Teams を開き、左側のウィンドウから [アプリ] を選択します。 [ アプリ ] ページで、 開発者ポータルを検索し、[ 開く] を選択します。

    Teams クライアントで開発者ポータルを追加する方法を示すスクリーンショット。

  2. 開発者ポータルで、[アプリ] タブを選択します。既存のアプリ パッケージがない場合は、既存のアプリを作成またはインポートできます。 詳細については、「 Teams 用開発者ポータル」を参照してください。

  3. [ アプリ ] タブを選択し、左側のウィンドウで [ アプリ機能 ] を選択し、[ ボット] を選択します。

  4. [コマンド] セクション の [コマンドの追加] 選択します。

    スクリーンショットは、開発者ポータルでボットのコマンドを追加する方法を示しています。

  5. ボットの コマンド メニューとして表示されるコマンドを入力します。

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

  7. [スコープ チェック] ボックスを選択し、[追加] を選択します。 これにより、コマンド メニューを表示する必要がある場所が定義されます。

    ボットのコマンド、説明、スコープを追加する方法を示すスクリーンショット。

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

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

  • 各メニューでは、最大 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"
            }
          ]
        }
      ]
    }
  ],
  ...
}

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

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

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

注:

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

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

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

// Remove recipient mention text from Text property.
// Use with caution because this function is altering the text on the Activity.
var modifiedText = turnContext.Activity.RemoveRecipientMention();

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

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

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

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

注:

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

次の手順

関連項目