!const WORKSPACE_NAME "Chatbot" !const DOC_PATH "doc-bot-for-client" !const ACCESS_ROLE "access-role-public.c4.dsl" workspace ${WORKSPACE_NAME} "Teams and workplace integration" { !docs ${DOC_PATH} model { azureBot = softwareSystem "Azure Bot" "Azure Bot Channel" "dependency" chatbot = softwareSystem "chatbot application" "Bot application - Rest API using the BotFramework" "mainSystem" { botframework = container "the BotFramework" "Node" "mainContainer" { } wegrow_app = container "wegrow main API" "Java" "mainContainer" { } } azureBot -> botframework "send message or add app in a group" botframework -> wegrow_app "call api" azure = deploymentEnvironment "production" { deploymentNode "Azure" "Azure environment" "Subscriptions" "Microsoft Azure - Subscriptions" { deploymentNode "Wegrow-app group" "Azure resource group" "Resource Groups" "Microsoft Azure - Resource Groups" { deploymentNode "Plan app wegrow-chabot" "App service plan" "App Service Plans" "Microsoft Azure - App Service Plans" { deploymentNode "Wegrow chatbot" "chatbot application" "App services" "Microsoft Azure - App Services" { infraWegrowBot = infrastructureNode wegrowBot "Wegrow chatbot with the BotFramework" "Docker image" "" } deploymentNode "Wegrow-app" "App services for containers" "App services for containers" "Microsoft Azure - App Services" { infraDockerizeApp = infrastructureNode wegrowAppImage "Web-App + API + backoffice" "Docker Image" "" } } botServices = infrastructureNode "Azure Bot" "Bot Services from Azure" "Bot Services" "Microsoft Azure - Bot Services" } } deploymentNode "Teams App" "Manifest Teams App to install on client teams" "Microsoft" { teamsApp = infrastructureNode "Teams App" "Manifest Teams App to install on client teams" "dependency" } deploymentNode "AAD" "Azure Active Directory" "Azure Active Directory" "Microsoft Azure - Azure Active Directory" { botRegistration = infrastructureNode botRegistration "App registration in Azure Active Directory" "Microsoft Azure - App Registrations" graphAPI = infrastructureNode graphAPI "Microsoft Graph API" "" } teamsApp -> botServices "send messages (https query)" botServices -> infraWegrowBot "call bot API (https query)" botServices -> botRegistration "Authenticate and check permissions" infraWegrowBot -> infraDockerizeApp "call Wegrow API (https query)" infraWegrowBot -> graphAPI "get email from internal id (https query)" } localhost = deploymentEnvironment "development" { deploymentNode "Dev PC" "Developer Desktop" "" "" { localhostWegrowBot = infrastructureNode wegrowBot "Wegrow chatbot with the BotFramework" "Node Port 3978" "" localhostWegrowApp = infrastructureNode wegrowAppImage "API + backoffice" "Spring boot Port 8080" "" } deploymentNode "Azure" "Azure environment" "Subscriptions" "Microsoft Azure - Subscriptions" { deploymentNode "Wegrow-app group" "Azure resource group" "Resource Groups" "Microsoft Azure - Resource Groups" { localbotServices = infrastructureNode "Azure Bot" "Bot Services from Azure" "Bot Services" "Microsoft Azure - Bot Services" localteamsApp = infrastructureNode "Teams App" "Manifest Teams App to install on client teams" "dependency" } } deploymentNode "AAD" "Azure Active Directory" "Azure Active Directory" "Microsoft Azure - Azure Active Directory" { localbotRegistration = infrastructureNode botRegistration "App registration in Azure Active Directory" "Microsoft Azure - App Registrations" } localteamsApp -> localbotServices "send messages" localbotServices -> localhostWegrowBot "call bot API" localhostWegrowBot -> localhostWegrowApp "call Wegrow API" } softwareSystem "Display Pictures" { container = container "display pictures" "png" "png" { component1 = component "display pictures" "png" "png" } } } views { systemLandscape chatbot Wegrow_chatbot_context { include * autolayout } deployment * azure wegrow_chatbot_azure_deployment { include * } deployment * localhost wegrow_chatbot_localhost_deployment { include * } themes https://sawegrowstructurizr.blob.core.windows.net/blob-structurizr-public/theme.json https://static.structurizr.com/themes/microsoft-azure-2023.01.24/theme.json https://static.structurizr.com/themes/amazon-web-services-2023.01.31/theme.json styles { element "mainSystem" { background #04b4f6 color #ffffff } element "mainContainer" { background #04b4f6 color #ffffff } element "database" { shape Cylinder background #04b4f6 color #ffffff } element "mobile" { shape MobileDevicePortrait background #04b4f6 color #ffffff } element "browser" { shape WebBrowser background #04b4f6 color #ffffff } element "dependency" { background #dddddd color #333333 } element "client" { shape Person background #e3f7ff color #333333 } element "clientSI" { shape Folder background #e3f7ff color #333333 } element "admin" { shape person background #f60459 color #ffffff } element "adminComponent" { background #04b4f6 color #ffffff } element "adminExportComponent" { background #0390C4 color #ffffff } element "Azure HostedAI" { shape Robot background #04b4f6 color #ffffff } element "AIaaS" { shape Robot background #1C4966 color #ffffff } element "Microsoft Azure - Storage Azure Files" { stroke #007fff color #007fff } element "Microsoft Azure - Azure Database PostgreSQL Server" { stroke #007fff color #007fff } element "Microsoft Azure - Translator Text" { stroke #007fff color #007fff } element "Microsoft Azure - App Registrations" { stroke #007fff color #007fff } element "Microsoft Azure - App Services" { stroke #007fff color #007fff } element "Group" { stroke #0037A5 color #0037A5 strokeWidth 4 fontSize 35 } } branding { logo ../../config/wegrow-logo.png } } configuration { users { admin write user read } visibility public } }