母婴通知服务

一个结合Streamlit仪表板和FastAPI后端的母婴通知服务,支持Twilio短信和语音通知。

  • by manjilrawal007
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 manjilrawal007/mothers-friend-mcp

使用说明

母亲伴侣MVP

该项目将用于分流和路由的Streamlit仪表板与包装Twilio短信和语音通知的最小FastAPI后端捆绑在一起。

先决条件

  • Python 3.10+
  • 具有经过验证的电话号码或消息服务的Twilio帐户

设置

cd maternal-companion
python -m venv .venv
source .venv/bin/activate        # On Windows: .venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt

复制 .env.example 到 .env (或以其他方式导出变量)并填写您的Twilio凭据:

cp .env.example .env

最小环境变量:

  • TWILIO_ACCOUNT_SID
  • TWILIO_AUTH_TOKEN

对于短信,您还需要:

  • TWILIO_SMS_FROM (E.164验证号),或
  • TWILIO_MESSAGING_SERVICE_SID

对于语音通话,请提供以下选项之一:

  • TWILIO_VOICE_CALLER_ID (默认为 TWILIO_SMS_FROM),以及
  • TWILIO_VOICE_TWIML_URL (发送内联TwiML时可选)。

Streamlit应用程序

Streamlit UI允许您从右侧面板探索分流、路由和触发Twilio通知。

streamlit run app.py

编辑 data/mothers.csv 查看分流表和路由如何响应。设置凭据后,使用Twilio表单对短信或语音通话进行排队。

FastAPI后端

后端暴露 /notify/sms 和 /notify/voice 端点,以便其他服务(LLM、任务自动化)可以重用通知帮助程序。

uvicorn backend.api:app --reload --port 8080

短信请求示例:

curl -X POST http://localhost:8080/notify/sms \
  -H "Content-Type: application/json" \
  -d '{"to": "+15551230123", "body": "Postnatal visit scheduled for 4pm."}'

语音请求示例(使用托管的TwiML URL):

curl -X POST http://localhost:8080/notify/voice \
  -H "Content-Type: application/json" \
  -d '{"to": "+15551230123", "twiml_url": "https://handler.twilio.com/twiml/EH123..."}'

响应包括排队消息或呼叫的Twilio SID。