かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Microsoft Teams にボットを追加したい

オレオレボット足したいじゃないですか。 Bot Framework を使って作るのが正攻法ですが、一応 Outgoing Webhook を使ってもボット作れます。

docs.microsoft.com

作ってみてる人もいます。お手軽でいいですね。

hkou.hatenablog.com

Bot Framework を使ったオレオレボットをデプロイするときは、manifest.json と指定のサイズのアイコン用画像を 1 つの zip にまとめたファイルを Teams にアップロードします。あ、もちろん Azure のボットチャンネル登録で Teams 連携は有効化しておきます。

マニフェストのスキーマは以下にあります。

docs.microsoft.com

実際のボットのみに絞った場合のマニフェストの例です。

{
    "$schema": " https://developer.microsoft.com/en-us/json-schemas/teams/v1.3/MicrosoftTeams.schema.json",
    "manifestVersion": "1.3",
    "version": "1.0.0",
    "id": "ボットチャンネル登録にあるボットのAppIdでいいのかな?",
    "packageName": "com.example.mysamplebot",
    "developer": {
        "name": "開発者名",
        "websiteUrl": "https://example.com/",
        "privacyUrl": "https://example.com/privacy",
        "termsOfUseUrl": "https://example.com/app-tos"
    },
    "name": {
        "short": "Sample",
        "full": "Sample"
    },
    "description": {
        "short": "サンプルのボット",
        "full": "サンプルのボットです。"
    },
    "icons": {
        "outline": "icon32x32.png",
        "color": "icon192x192.png"
    },
    "accentColor": "#ff0000",
    "bots": [
        {
            "botId": "ボットチャンネル登録にあるボットのAppId",
            "needsChannelSelector": false,
            "isNotificationOnly": false,
            "scopes": [
                "personal", "team", "groupchat"
            ],
            "supportsFiles": false,
            "commandLists": []
        }
    ]
}

bots の下の scopes は個人用なのかチーム用なのかグループチャット用なのかで変える感じですかね。 上記の manifest.json の場合は icon32x32.png という名前で 32x32 のサイズの PNG ファイルと icon192x192.png という名前で 192x192 のサイズの PNG ファイルを一緒に zip に固めます。

アップロードは Teams クライアントのチーム名の横の ... からチームの管理画面の Apps タブで Upload a custom app という項目(英語表示時の表記)があるので、そこから zip をアップロードすれば OK です。