PSI Notify Bot

Shared Teams bot identity for all PSI automation alerts and notifications. One bot, many consumers.


What it is

A single Teams Bot Framework identity that any PSI internal automation can use to post messages into a Teams chat. Currently powers beta-deploy notifications for the ProApps CI/CD pipeline and the IT Critical Notifications operational alert channel. Designed for additional consumers (scheduled tasks, web apps, ad-hoc scripts) without per-consumer bot setup.

The same repo and Function App also host the IT Helper — a separate user-facing Teams identity for opening IT support cases with our MSP (the single-bot philosophy below applies to automation senders; a user-facing product warrants its own name and icon).

The Teams-side app is named “PSI Notify Bot.” The underlying Azure resources still use the original “Deploy” names — those are internal-only and not worth churning.


Azure resources

ResourceNameGroupNotes
Azure BotPSIDeployNotifyBotPS-WEBAPPSF0 free tier
App RegistrationPSI.All Deploy NotificationsAzure ADApp ID 5f54d8fc-fca1-4c78-9894-c267018efadb, tenant a83ae943-0a50-49cc-83c3-479b7a44b7fb
Teams AppPSI Notify BotOrg app catalogCatalog ID eb9901e7-e87c-437d-803a-b766ec007a16, isNotificationOnly: true
Secrets vaultps-certificates-kvPS-RG-01All psi-notify--* secrets live here
Communication Servicepsi-notify-acsPS-WEBAPPS/PS-RG-01ACS for the voice/SMS wake-up tier; toll-free +1 833-639-2948
Voice/SMS listenerpsi-notify-listenerPS-WEBAPPSFlex Consumption Function App; /api/voice/* Call Automation flow

How to use it

See Teams Notifications for the full guide. Quick summary:

TaskWhere
Send a message to an existing chatSend-NotifyMessage -ChatId -BodyHtml (module: psi-notify-bot/src/PSI.Notify.psd1) — or Bot Framework POST /v3/conversations/{id}/activities
Bootstrap a new persistent alert chatC:\GIT\psi-notify-bot\scripts\Initialize-NotifyChat.ps1
List active persistent chatsTable in Teams Notifications → Active persistent chats
Fetch bot credentialsaz keyvault secret show --vault-name ps-certificates-kv --name psi-notify--<x>

Consumers

ConsumerPatternChat
Deploy ProAppsPer-event group chatOne per [Beta] AppName vX.X.X.X
egnyte-stp-syncPersistentIT Critical Notifications
PRGJSMES Get HelpPersistentPRGJSMES Help (operator-initiated; resolve flow posts a follow-up card in-thread)
csm-board Board Manager digestsPersistentCSM Board Manager — first Python (send-only) consumer

The live registry is the consumer table in the repo README.md + Teams Notifications → Consumers — check those before trusting this snapshot.


Voice & SMS wake-up tier (ACS)

For alerts that must wake someone up (e.g. mail to criticalalerts@progressivesurface.com), Teams isn’t enough — Teams mobile honors Do Not Disturb. A second path on Azure Communication Services adds an outbound voice call with TTS + press-1 acknowledgement (live) and SMS (pending toll-free verification). Full architecture, the Flex-Consumption Key Vault gotcha, and the iOS caller-screening caveat are in Teams Notifications → Voice & SMS.

What else lives in this repo

The repo hosts more than the Notify sender. The product roster (with owning docs for each) is CLAUDE_ONBOARDING.md §1 in the repo — in brief:

  • PSI Notify Bot — this page: the shared automation sender (src/PSI.Notify module).
  • IT Helper — user-facing IT support bot (separate Teams identity, same psi-notify-listener backend), including the HR new-user / position-change / termination intake flows.
  • AlertEngine — the critical-alert pipeline (criticalalerts@ / REST → rules → Teams + ACS voice call
    • SMS). Architecture: docs/alerting-system.md in the repo. Governed by the PSI Alerting Standard — what qualifies as an alert, the four severity tiers, and the required Alert Envelope. The platform design that closes the gap between the standard and the engine as built (envelope validation, the resolve path, per-group Teams routing, the @progressivesurface/notify client family, and the Alert Console) is docs/alert-platform-design.md.
  • HR provisioning (Tracks A/B) — internal execution of the HR new-user flow via Entra API-driven inbound provisioning. Cross-repo initiative: execution in psi-notify-bot (docs/hr-driven-provisioning-plan.md + docs/User Provisioning - on prem helper plan.md; GHE issue psi-notify-bot#42 is authoritative), policy in psi-portal (dbo.prov_* in alerts, editable at /admin/provisioning), plus tracking there (Onboarding Board / User Explorer / PC Store) and the on-prem post-task worker. The split is deliberate: the bot decides nothing about licences or groups, it reads the portal’s signed policy.

Status

Current state lives in living sources, not this page: the repo BUILD_LOG.md (authoritative change history), gh pr list / gh issue list on the repo, and the psi-notify-listener Function App settings for which feature flags are live.


See Also


Last updated: 2026-08-04 — added the repo product roster (IT Helper, AlertEngine, HR provisioning) and pointed status at living sources.