39 lines
1.5 KiB
Markdown
39 lines
1.5 KiB
Markdown
# Teams app package
|
||
|
||
The Teams app manifest + icons you sideload into Microsoft Teams to install the
|
||
bot. Build the `.zip` with one command, then upload it in **Teams → Apps →
|
||
Manage your apps → Upload a custom app**.
|
||
|
||
## Build it
|
||
|
||
From `examples/teams`:
|
||
|
||
```sh
|
||
pnpm package
|
||
```
|
||
|
||
This validates everything Teams needs and writes `appPackage/appPackage.zip`:
|
||
|
||
- **Bot id:** read from `MICROSOFT_APP_ID` / `CLIENT_ID` / `clientId` (env or
|
||
`examples/teams/.env`) and injected into `manifest.json`'s `bots[0].botId`, so
|
||
the committed manifest stays a placeholder and you never hardcode your id. Must
|
||
be the **Application (client) ID** (a GUID) of the Entra app bound to your
|
||
Azure Bot.
|
||
- **Icons:** `color.png` (192×192) and `outline.png` (32×32). Auto-generated as
|
||
CopilotKit-purple placeholders if missing; drop in your own PNGs of those exact
|
||
sizes to brand it.
|
||
- **Manifest:** checked for valid JSON and the required bot fields.
|
||
|
||
If something's missing the script tells you exactly what and how to fix it.
|
||
|
||
## What's here
|
||
|
||
- `manifest.json`: the app manifest template (`botId` is a placeholder; the
|
||
build injects the real one). Edit `developer` / `name` / `description` to taste.
|
||
- `color.png` / `outline.png`: placeholder icons (regenerated if deleted).
|
||
- `package.mjs`: the dependency-free build script (`pnpm package`).
|
||
- `appPackage.zip`: the build output (gitignored).
|
||
|
||
The bot only **replies** once your hosted endpoint is set as the Azure Bot
|
||
**messaging endpoint**. Installing the package just registers the bot in Teams.
|