This is intended for first-time technical users unaffiliated with the University of Nottingham. Dominic Price maintains the local Cobot Maker Space deployment and Microsoft Azure app.
The system must be deployed using HTTPS, as modern browsers do not allow access to the
MediaDevices
interface over unencrypted HTTP.
Currently server.js is configured to serve HTTPS to your domain via Greenlock. If your usage complies with the Let's Encrypt Subscriber Agreement, you can reconfigure this for your requirements.
Simply set the constant at server.js#L2 to your email address, then use the following command from the root directory to add your domain(s).
npx greenlock add --subject example.com --altnames example.com
A full Greenlock start guide can be found here if the above is oversimplified.
Alternative HTTPS deployment methodologies would require server.js to be refactored.
In order to enable Microsoft Teams features, the system queries the Microsoft Graph API on behalf of an authenticated user via a Microsoft Azure app.
You must register an app within the Microsoft Organization intended for deployment and give the system its details. Full instructions for app registration are here.
Once registered, the constant at ms-queries.js#L1 must be set to the Application (client) ID and ms-queries.js#L2 must be set to a generated client secret. These can be found and generated respectively via the configuration page for the app on the Microsoft Azure website.
This system uses the Microsoft Identity Platform for account management, profile integration (e.g., display pictures), and to authenticate the associated Microsoft Azure app.
Currently, each deployment of the system will only work with one Microsoft Organization at a time (and its instantiated robots, smart actions, etc.).
If an Organization is not defined in db.json (the default), you must enter the Microsoft Tenant ID and your chosen display name of the intended Organization into the relevant object in db.json before deployment.
The easiest way to find this is to login to Microsoft Azure, and navigate to Azure Active Directory via the sidebar. The Tenant ID of the Organization associated with your account is listed here.
Admins can access an additional interface from the Robot Select screen, via the cog icon, which allows GUI configuration of much of the system.
If there are no admins defined in db.json (the default), the first user who logs in will be automatically set as an admin (as well as a driver).
Further admins can be defined by entering their Microsoft account GUID in the relevant array in db.json.
Any Microsoft account within the defined Organization can login and use the system to drive robots.
First-time users will be required to allow certain data access permissions, listed below, and explained here.
- User.ReadBasic.All
- Presence.Read.All
- Chat.Read
- Chat.ReadBasic
- Chat.ReadWrite
- ChatMessage.Send
Please note that non-admin users can allow these permissions in Microsoft Organizations by default, but Organization administrators can manually limit non-admin permissions, which would prevent access to the system in its current state.
Broadly speaking, the system consists of a NodeJS server serving Embedded JavaScript to the user (and robots), using ExpressJS for routing. Packages are managed via npm.
Using a standard npm workflow, you should simply be able to install NodeJS and npm, navigate to the directory, and run sudo npm start
to deploy.
Alternatively, run the following command for live development. This will restart the server whenever there are file changes.
sudo npm run dev
The project only has precedent on a Ubuntu server but it is, in principle, multi-platform.