Receive and Reply to a Twilio SMS in Azure C#
How to receive and reply to a Twilio SMS in Azure C#
Introduction
Neither Twilio nor Microsoft provide code samples to bind incoming SMS from Twilio to Azure function.
This tip is the equivalent of this post from Twilio, but related to Azure, not PHP.
The solution is as given below.
Background
- Having an Azure account and knowing how to implement an Azure function HTTP Trigger with C#
- Having a Twilio account with valid phone number and knowing how to hookup incoming SMS to an URL
Using the Code
- In Microsoft Azure, Copy/Paste function code in your project.
- In Microsoft Azure, copy function URL.
- In Twilio, paste URL into the Messaging Webhook section (keep all parameters with default value).
- Test: Send an SMS, you get it into variables
From
,To
, andBody
.
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
namespace TwilioToAzure
{
class TwilioAzure
{
[FunctionName("Twilio")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request. ");
var requestBody = await new StreamReader(req.Body).ReadToEndAsync();
var queryParams = HttpUtility.ParseQueryString(requestBody);
var To = queryParams["To"];
var From = queryParams["From"];
var Body = queryParams["Body"];
//return new OkObjectResult("OK"); <-Extra tip: Twilio will reply "OK" SMS
return new OkObjectResult(""); //Twilio will not reply
}
}
}
Points of Interest
I wrote this tip because both methods provided by Microsoft to access POST
parameters were not working. So I had to use HttpUtility
instead.
History
- 15th December, 2020: Initial version