Skip to content

Files

Latest commit

c6c52ab · Nov 29, 2019

History

History
108 lines (80 loc) · 2.4 KB

twiliointegration-csharp.md

File metadata and controls

108 lines (80 loc) · 2.4 KB

Create Twilio SMS handler - C#

Create SmsController

Start with creating an empty ASP.NET Core app:

dotnet new web -o twiliosample

Inside the twilio folder, change Startup.cs to use controllers:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapDefaultControllerRoute();
    });
}

Next, let's install twilio-aspnet package:

dotnet add package Twilio.AspNet.Core

Finally, we can create SmsController.cs to receive SMS messages from Twilio:

using Microsoft.AspNetCore.Mvc;
using Twilio.AspNet.Common;
using Twilio.AspNet.Core;
using Twilio.TwiML;

namespace twiliosample
{

    public class SmsController : TwilioController
    {
        [HttpGet]
        public TwiMLResult Index(SmsRequest incomingMessage)
        {
            var messagingResponse = new MessagingResponse();
            messagingResponse.Message("The Knative copy cat says: " + incomingMessage.Body);
            return TwiML(messagingResponse);
        }
    }
}

SmsController.cs simply echoes back the received message.

Make sure the app has no compilation errors:

dotnet build

Create a Dockerfile

Create a Dockerfile for the image:

# Use Microsoft's official build .NET image.
# https://hub.docker.com/_/microsoft-dotnet-core-sdk/
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-alpine AS build
WORKDIR /app

# Install production dependencies.
# Copy csproj and restore as distinct layers.
COPY *.csproj ./
RUN dotnet restore

# Copy local code to the container image.
COPY . ./
WORKDIR /app

# Build a release artifact.
RUN dotnet publish -c Release -o out


# Use Microsoft's official runtime .NET image.
# https://hub.docker.com/_/microsoft-dotnet-core-aspnet/
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine AS runtime
WORKDIR /app
COPY --from=build /app/out ./

# Run the web service on container startup.
ENTRYPOINT ["dotnet", "twiliosample.dll"]

What's Next?

Back to Integrate with Twilio