Receive an incoming SMS Message

Note:

Before you can get started, you need the following already set up:

Learn how to handle incoming SMS messages in a .NET MVC application with the Sinch .NET SDK.

Steps:
  1. Set up your .NET application
  2. Start your web server and set up a tunnel
  3. Send your sms message

Set up your .NET application

  1. Create a new folder where you want your app project. Then, open a terminal or command prompt to that location.
  2. Create a new .NET MVC app with the following command:
    Copy
    Copied
    dotnet new mvc

The easiest way to install the SDK is using the dotnet CLI:

  1. Open a command prompt or terminal to the local repository folder.
  2. Execute the following command:
    Copy
    Copied
    dotnet add package Sinch --prerelease
Note:
Because the Sinch .NET SDK is in prerelease, you must include the --prerelease option to install it.

Add the Controller to your application

The controller does the work of handling the SMS. It receives the incoming SMS from Sinch's servers and performs an action in response. In this tutorial, it simply replies to your incoming message, but you can add any business logic you want.

  1. In the Controllers folder of your project, create a new file named InboundController.cs.
  2. Populate that file with the "InboundController.cs" code on the right-hand margin.

Modify your application

The code provided includes placeholder parameters. You'll need to update the parameters detailed in the following subsections with your values.

Initialize the client

Before initializing a client using this SDK, you'll need three pieces of information:

  • Your Project ID
  • An access key ID
  • An access key Secret
These values can be found on the Access Keys page of the Customer Dashboard. You can also create new access key IDs and Secrets, if required.
Note:
If you have trouble accessing the above link, ensure that you have gained access to the Conversation API by accepting the corresponding terms and conditions.

To start using the SDK, you need to initialize the main client class with your credentials from your Sinch dashboard.

Note:

For testing purposes on your local environment it's fine to use hardcoded values, but before deploying to production we strongly recommend using environment variables to store the credentials.

Copy
Copied
using Sinch;

var sinch = new SinchClient("YOUR_project_id",
                            "YOUR_access_key", 
                            "YOUR_access_secret");
You can also implement the client using ASP.NET dependency injection. SinchClient is thread safe, so it's fine to add it as a singleton:
Copy
Copied
builder.Services.AddSingleton<ISinchClient>(x => new SinchClient(
    builder.Configuration["YOUR_project_id"],
    builder.Configuration["YOUR_access_key"],
    builder.Configuration["YOUR_access_secret"]));

Note:
If the SmsRegion option is not supplied, SinchClient defaults to US region.

Ensure that you save the file.

Build your project

Before executing your code, you must first compile your application. Execute the following command:

Copy
Copied
dotnet build

Start your web server and set up a tunnel

  1. Start the server by executing the following command:
    Copy
    Copied
    dotnet run

    Take note of the port on which the server is running.

  2. Open a tunnel to the server you just set up. We are using ngrok for this. If you don't have ngrok installed already, install it with the following command:
    Copy
    Copied
    npm install ngrok -g
  3. Open a terminal or command prompt and enter:
    Copy
    Copied
    ngrok http https://localhost:<PORT>

    You will see a screen like the following. ngrok screenshot

  4. On the highlighed "Forwarding" line, copy the address ending in .ngrok.io and add /Inbound/ReplyToInbound to the end of it.

Configure your Callback URL

  1. To configure a callback URL for your Sinch account, login to your dashboard.
  2. Click on the service plan ID link and edit the Callback URL field with the ngrok.io domain URL from the previous section.

Send your SMS message

Now send an SMS message to your Sinch number from your mobile phone and you will get an automatic reply.

Next steps

The code you used in the Inbound.cs file sends a POST request to the Sinch API /batches endpoint to send the SMS message.

Additional resources

  • Click here to read more about the batches endpoint.
We'd love to hear from you!
Rate this content:
Still have a question?
 
Ask the community.