餐厅运营机器人

Toast Teams Bot是一款用于Toast餐厅运营的Microsoft Teams机器人,可查询菜单、检查订单、监控系统健康状态并在Teams中接收运营警报。

  • by atthewm
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 atthewm/toast-teams-bot

使用说明

Toast团队机器人

用于Toast餐厅运营的Microsoft Teams机器人。查询菜单、检查订单、监控系统健康状况,并直接在Teams中接收操作警报。

建筑

[Teams User] <> [This Bot] <> [Toast MCP Server] <> [Toast API]
                    |
             MCP Client
         (Streamable HTTP)

此机器人充当MCP客户端,连接到单独部署的 Toast MCP服务器 处理Toast API身份验证和数据访问。该机器人处理团队特定的问题:消息路由、自适应卡、主动消息传递和用户交互。

特性

交互式命令

命令 描述
health 运行完整的系统健康检查
menus 显示菜单概述
menu search [term] 按关键字搜索菜单项
orders 列出今天的订单
order [guid] 获取特定订单的详细信息
config 显示餐厅配置
status 检查Toast API身份验证状态
capabilities 显示可用功能

自适应卡

所有响应均以Adaptive Cards v1.5呈现,其中包含:

  • 全宽布局,便于阅读
  • 结构化数据的FactSets
  • 颜色编码的健康状态指示器
  • 包含价格和类别的菜单项
  • 包含服务器名称和总计的订单列表

主动消息传递(基础)

该机器人存储对话参考,并包括一个主动信使模块,用于向Teams频道发送警报。当与MCP服务器端的事件摄取结合使用时,这将启用:

  • 健康检查失败警报
  • 订单量阈值通知
  • 菜单更改通知

先决条件

  1. Toast MCP服务器 已部署并可通过HTTP访问(请参见 吐司mcp服务器)
  2. Azure Bot注册 (单租户)
  3. Node.js 18+

设置

1.注册Azure Bot

  1. 去 Azure 门户
  2. 创建新的“Azure Bot”资源
  3. 为机器人类型选择“单一租户”
  4. 注意 应用ID, 应用程序密码,以及 租户ID

2.配置

cp .env.example .env

填写:

  • BOT_ID, BOT_PASSWORD, BOT_TENANT_ID 从Azure Bot注册
  • MCP_SERVER_URL 指向Toast MCP服务器HTTP端点
  • MCP_API_KEY 如果您的MCP服务器需要身份验证

3.安装和构建

npm install
npm run build

4.跑步

npm start

默认情况下,机器人监听端口3978(可通过以下方式配置 PORT).

5.本地测试

使用 Bot框架仿真器 或 Dev隧道 在部署之前进行本地测试。

6.部署到团队

  1. 更新 appPackage/manifest.json 使用您的Bot ID
  2. 添加图标文件(color.png 192x192, outline.png 32x32)至 appPackage/
  3. 压缩内容 appPackage/ 进入一个 .zip 文件
  4. 上传到Teams管理中心或侧面加载进行测试

环境变量

变量 必填 默认 描述
BOT_ID 是 Azure BOT应用程序ID
BOT_PASSWORD 是 Azure BOT应用程序密码
BOT_TENNT_ID 是 Azure AD租户ID
BOT_TYPE 否 单租户 机器人类型
MCP_SERVER_URL 是 Toast MCP服务器HTTP端点
MCP_API_KEY 否 MCP服务器身份验证的API密钥
端口 否 3978 HTTP服务器端口
ALERT_CHANNEL_ID 否 警报的团队通道ID
LOGLEVEL 否 信息 日志详细程度

部署

码头工人

docker build -t toast-teams-bot .
docker run -p 3978:3978 --env-file .env toast-teams-bot

Azure容器应用

az containerapp create \
  --name toast-teams-bot \
  --resource-group your-rg \
  --environment your-env \
  --image your-registry/toast-teams-bot:latest \
  --target-port 3978 \
  --ingress external \
  --env-vars \
    BOT_ID=secretref:bot-id \
    BOT_PASSWORD=secretref:bot-password \
    BOT_TENANT_ID=your-tenant-id \
    MCP_SERVER_URL=https://your-mcp-server.com/mcp \
    MCP_API_KEY=secretref:mcp-api-key

将Azure Bot的消息传递终结点设置为: https://your-app.azurecontainerapps.io/api/messages

项目结构

src/
  bot/
    handler.ts      # Message routing and command handling
    proactive.ts    # Proactive messaging to Teams channels
  cards/
    templates.ts    # Adaptive Card v1.5 templates
  config/
    index.ts        # Environment configuration
  mcp/
    client.ts       # MCP client for Toast MCP Server
  index.ts          # Entry point (Express + Bot Framework)
appPackage/
  manifest.json     # Teams app manifest

路线图

  • 事件驱动的警报(健康故障、订单阈值)
  • 人工智能驱动的自然语言查询(LLM集成)
  • 带图表的仪表板摘要卡
  • 班次和劳动力数据视图
  • 多地点支持
  • Copilot Studio代理作为备选部署路径

许可证

麻省理工学院