Go to file
Jeff Leung 2442fb90bf Add a readme 2022-01-04 14:08:45 -08:00
TwilioSMSReceiver Switch back to sqlite 2022-01-04 12:06:43 -08:00
TwilioSMSReceiver.Common Dispose of it properly in an async context 2021-12-31 00:00:25 -08:00
TwilioSMSReceiver.Data Switch back to sqlite 2022-01-04 12:06:43 -08:00
TwilioSMSReceiver.Web Dump migrations 2021-12-31 00:12:38 -08:00
.gitattributes Add .gitignore and .gitattributes. 2021-12-26 22:45:42 -08:00
.gitignore ignore again 2021-12-26 22:47:46 -08:00
README.md Add a readme 2022-01-04 14:08:45 -08:00
TwilioSMSReceiver.sln Switch to MVC 2021-12-30 22:23:05 -08:00

README.md

Twilio SMS Receiver Web App

This app is designed to receive SMS messages from Twilio.

This app in theory will run on basically any platform that .NET 6.0 (previously known as .NET Core) will target. We can run this inside a Raspberry Pi it's accessible from the public internet.

Currently the following SMS Message handlers are implemented:

  • Microsoft Teams WebHook

The following message handlers will be implemented in a later release:

  • SMTP Messages

Requirements

  • A Public IP
  • A Reverse HTTP Proxy to direct traffic to if you don't want the code running without a reverse proxy. Kestrel is perfectly capable on serving HTTP requests without a reverse proxy in .NET 6.0
  • A TLS Certificate

Code Implementation

  • C# 6.0
  • .NET 6.0
  • EntityFramework Core 6.0
  • EF Core SQLite DB Provider 6.0 for data processing

API Endpoints

/api/SMSReceiver

This endpoint only takes in a POST request in Production mode. In Development mode it will also accept a GET request returning all SMS messages stored in the database

/api/MSTeamsWebHooks

This endpoint takes a GET or POST request to add or remove Microsoft Teams webhook endpoints.

Wishlist

  • MMS Message handling and storage - currently the code obtains all MMS media URL's sent from Twilio, but does not actively process them
  • Migrate away from SQLite to an actual multi-user SQL database - PGSql or MySQL will work as there are supported EF Core Providers for this
  • Route DID's to specific destinations
  • An actual admin UI with authentication provided by Azure AD

Building

Development Build or Debugging

  1. Ensure you have the .NET 6.0 SDK installed on your development station
  2. Clone the repository
  3. Navigate to the TwilioSMSReceiver directory
  4. Run dotnet run

Build for Production Deployments

Refer to the Microsoft RID Catalog for runtimes

A generic Linux Intel 64-bit machine is being used for this example.

  1. Ensure you have the .NET 6.0 SDK installed on your development station
  2. Clone the repository
  3. Navigate to the TwilioSMSReceiver directory
  4. Run dotnet publish -r linux-x64 --self-contained
  5. On the output directory, copy all of the files to the target machine and deploy accordingly