Skip to content
Last updated

Note:

Before you can get started, you need to do the following:

Using the Conversation API, you can send messages to any channel you have configured. This tutorial shows you how to set up and send a message in a .Net Core application.

Steps:
  1. Set up your .Net Core application
  2. Send your first message

Set up your .Net Core application

  1. Create a new folder where you want to keep your app project. Then, open a terminal or command prompt to that location.

  2. Create a new .Net Core console app with the following command:

    dotnet new console
  3. Add the Newtonsoft.Json NuGet package.

    dotnet add package Newtonsoft.Json

Modify your application

Note:

This tutorial uses basic authentication for testing purposes. We recommend OAuth 2.0 authentication in a production environment. Read more about authentication methods.

  1. Open the Program.cs file in your project folder. Replace all of the code in the Main method with the following code:

    SendMessage sendMessage = new SendMessage("App_Id", "Channel", "Identity");
    sendMessage.send(sendMessage, "Access_Key", "Access_Secret", "Project_Id");
    Console.ReadLine();
  2. Assign your values to the following parameters:

    ParameterYour value
    App_IdFind your app ID on your Sinch [dashboard](https://dashboard.sinch.com/convapi/apps).
    Access_KeyFind your access key on your Sinch [dashboard](https://dashboard.sinch.com/settings/access-keys).
    Access_Secret Find your access secret on your Sinch [dashboard](https://dashboard.sinch.com/settings/access-keys).
    Note:Access secrets are only available during initial key creation.
    Project_IdFind your project ID on your Sinch [dashboard](https://dashboard.sinch.com/settings/project-management).
    ChannelThe channel you want to use to send the message. Available channels are configured for the app on your Sinch [dashboard](https://dashboard.sinch.com/settings/access-keys). This guide assumes you've started with an SMS channel, but you can use any channel configured for your app:
    • SMS
    • MESSENGER
    • MMS
    • RCS
    • WHATSAPP
    • VIBER
    • VIBERBM
    • INSTAGRAM
    • TELEGRAM
    • KAKAOTALK
    • APPLEBC
    • LINE
    IdentityThe ID of the contact to which you want to send the message.
  3. Save the file.

  4. Next, create a new file in the project folder named Message.cs. Populate that file with the "Message.cs" code found on this page and save the file. This code sends a text message.

    Message.cs
    // Find your App ID at dashboard.sinch.com/convapi/apps
    // Find your Project ID at dashboard.sinch.com/settings/project-management
    // Get your Access Key and Access Secret at dashboard.sinch.com/settings/access-keys
    using System;
    using System.Net.Http;
    using System.Text;
    using Newtonsoft.Json;
    
    public class Recipient
    {
        public Identified_By identified_by {get; set;}
    
        public Recipient(string channel, string identity)
        {
            identified_by = new Identified_By(channel, identity);
        }
    }
    public class Identified_By
    {
        public Channel_Identity[] channel_identities {get; set;}
    
        public Identified_By(string channel, string identity)
        {
            channel_identities = new Channel_Identity[] { new Channel_Identity(channel, identity) };
        }
    }
    public class Channel_Identity
    {
        public string channel {get; set;}
        public string identity {get; set;}
    
        public Channel_Identity(string channelVar, string idVar)
        {
            channel = channelVar;
            identity = idVar;
        }
    }
    public class Message
    {
        public Text_Message text_message {get; set;}
    
        public Message()
        {
            text_message = new Text_Message(); 
        }
    }
    public class Text_Message
    {
        public string text {get; set;}
    
        public Text_Message()
        {
            text = "Text message from Sinch Conversation API.";
        }
    }
    
    public class SendMessage
    {
        public string app_id {get; set;}
        public Recipient recipient {get; set;}
        public Message message {get; set;}
    
        public SendMessage(string appIdVar, string channel, string identity)
        {
            app_id = appIdVar;
            recipient = new Recipient(channel, identity);
            message = new Message();
        }   
        
        public string encodeAuth(string key, string secret)
        {
            var plainTextBytes = Encoding.UTF8.GetBytes(key + ":" + secret);
            return Convert.ToBase64String(plainTextBytes);
        }
    
        public async void send(SendMessage sendMessage, string key, string secret, string projectId)
        {
            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Add("Authorization", "Basic " + encodeAuth(key, secret));
                string json = JsonConvert.SerializeObject(sendMessage);
                var postData = new StringContent(json, Encoding.UTF8, "application/json");
                var request = await client.PostAsync("https://us.conversation.api.sinch.com/v1/projects/" + projectId + "/messages:send", postData);
                var response = await request.Content.ReadAsStringAsync();
    
                Console.WriteLine(response);
            }
        } 
    }
    Note:

    This sample code is configured for the US region. If your Conversation API app wasn't created in the US region, replace all instances of https://us.conversation.api.sinch.com with https://eu.conversation.api.sinch.com in the sample code.

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

    dotnet build

Send your first message

Now you can execute the code and send your test message. Run the following command:

dotnet run

You should receive a message in your configured messaging platform.

Next steps

Now that you know how to send a message, learn how to handle an incoming message.

Additional resources

Read the links below to learn more: