---
title: "Wysyłanie wiadomości SMS za pomocą API OVHcloud w języku C#"
description: "Dowiedz się, jak wysyłać wiadomości SMS za pomocą API RESTful OVHcloud w języku C#: utwórz dane uwierzytelniające API, połącz się i wyślij swój pierwszy SMS"
url: https://docs.ovhcloud.com/pl/guides/web-cloud/messaging/sms/sending-via-api-c
lang: pl
lastUpdated: 2026-06-15
---
# Wysyłanie wiadomości SMS za pomocą API OVHcloud w języku C#

## Wprowadzenie

Wiadomości SMS są powszechnie wykorzystywane do przekazywania praktycznych informacji, śledzenia statusu zamówienia lub procesu transakcyjnego, otrzymywania alertów o nietypowych zdarzeniach czy przypominania o spotkaniach. Ten przewodnik szczegółowo opisuje metodę wysyłania pierwszego SMS za pomocą API OVHcloud w języku C#.

**Dowiedz się, jak wysyłać wiadomości SMS za pomocą API RESTful OVHcloud w języku C#.**

## Wymagania początkowe

- Środowisko programistyczne C#.
- Konto OVHcloud z zasileniami SMS.
- Zatwierdzony nadawca SMS.

## W praktyce

### Wywołania API

Wywołanie usługi sieciowej zaimplementujemy bezpośrednio w kodzie. Ze względu na czytelność i prostotę część dotycząca korzystania z API nie została wyodrębniona ani w pełni zaimplementowana (deserializacja JSON itp.).

Aby zaimplementować wywołanie usługi sieciowej, zalecamy zapoznanie się z naszym przewodnikiem dotyczącym [pierwszych kroków z API OVHcloud](/pl/guides/manage-and-operate/api/first-steps.md).

W tym przewodniku wywołamy dwie metody:

- Lista aktywnych usług SMS:


[🇪🇺GET/sms](https://eu.api.ovh.com/console/?section=/sms&branch=v1#get-/sms)

- Wysyłanie SMS:


[🇪🇺POST/sms/{serviceName}/jobs](https://eu.api.ovh.com/console/?section=/sms&branch=v1#post-/sms/-serviceName-/jobs)

### Tworzenie danych uwierzytelniających

Dane uwierzytelniające API są niezbędne do korzystania z API SMS; tworzy się je pojedynczo, aby zidentyfikować aplikację, która będzie wysyłać wiadomości SMS. Czas życia tych danych uwierzytelniających można konfigurować.

Utwórz dane uwierzytelniające skryptu (wszystkie klucze naraz) na tej stronie: [https://auth.eu.ovhcloud.com/api/createToken](https://auth.eu.ovhcloud.com/api/createToken).

:::info
Poniższy adres URL umożliwia automatyczne uzyskanie odpowiednich uprawnień dla tego przewodnika: [https://auth.eu.ovhcloud.com/api/createToken?GET=/sms/\&GET=/sms/_/jobs\&POST=/sms/_/jobs](https://auth.eu.ovhcloud.com/api/createToken?GET=/sms/\&GET=/sms/*/jobs\&POST=/sms/*/jobs).
:::

![tworzenie tokenów](/images/web-cloud/messaging/sms/envoyer-des-sms-avec-lapi-ovh-en-c/sms-tokens-01.png)
W tym prostym przykładzie pobieramy uprawnienia umożliwiające dostęp do informacji o koncie, możliwość wyświetlania oczekujących wysyłek oraz możliwość wysyłania wiadomości SMS.

- GET /sms/
- GET/sms/\*/jobs
- POST /sms/\*/jobs

Gwiazdka (\*) aktywuje wywołania tych metod dla wszystkich Twoich kont SMS; możesz ograniczyć wywołania do jednego konta, jeśli zarządzasz kilkoma kontami SMS w ramach swojego konta OVHcloud.

Kliknij `Create
`, aby pobrać dane uwierzytelniające dla swojego skryptu:
- Application Key (identyfikuje Twoją aplikację)
- Application Secret (uwierzytelnia Twoją aplikację)
- Consumer Key (autoryzuje aplikację do uzyskania dostępu do wybranych metod)

![pobieranie tokenów](/images/web-cloud/messaging/sms/envoyer-des-sms-avec-lapi-ovh-en-c/sms-tokens-02.png)
Środowisko i dane uwierzytelniające są gotowe: możesz napisać kod swojego pierwszego wywołania API.

### Podstawowe połączenie z API: pobieranie konta SMS

Teraz przetestujemy prawidłowe połączenie z API, wyświetlając po prostu nazwę serviceName:

```bash
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Security.Cryptography;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            getSmsAccount();
        }

        //obliczanie SHA1
        public static string HashSHA1(string sInputString)
        {
            SHA1 sha = new SHA1.Create();
            byte[] bHash = sha.ComputeHash(Encoding.UTF8.GetBytes(sInputString));
            StringBuilder sBuilder = new StringBuilder();

            for (int i = 0; i < bHash.Length; i++)
            {
                sBuilder.Append(bHash[i].ToString("x2"));
            }

            return sBuilder.ToString();
        }

        private static void getSmsAccount()
        {
            String AK = "your_app_key";
            String AS = "your_app_secret";
            String CK = "your_consumer_key";
            
            //Parametry wywoływanej metody
            String METHOD = "GET";
            String QUERY = "https://eu.api.ovh.com/1.0/sms/";
            String BODY = "";

            Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
            String TSTAMP = (unixTimestamp).ToString();

            //obliczanie podpisu
            String signature = "$1$" + HashSHA1(AS + "+" + CK + "+" + METHOD + "+" + QUERY + "+" + BODY + "+" + TSTAMP);
            Console.WriteLine(signature);

            //Tworzenie żądania
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(QUERY);
            req.Method = METHOD;
            req.ContentType = "application/json";
            req.Headers.Add("X-Ovh-Application:" + AK);
            req.Headers.Add("X-Ovh-Consumer:" + CK);
            req.Headers.Add("X-Ovh-Signature:" + signature);
            req.Headers.Add("X-Ovh-Timestamp:" + TSTAMP);

            try
            {
                //Pobieranie wyniku wywołania
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)req.GetResponse();
                using (var respStream = myHttpWebResponse.GetResponseStream())
                {
                    var reader = new StreamReader(respStream);
                    String result = reader.ReadToEnd().Trim();
                    Console.WriteLine(result);

                }
                myHttpWebResponse.Close();

            }
            //Obsługa wyjątków
            catch (WebException e)
            {
                Console.WriteLine("Error : ");
                using (WebResponse response = e.Response)
                using (Stream data = ((HttpWebResponse)response).GetResponseStream())
                using (var reader = new StreamReader(data))
                {                
                     Console.WriteLine(reader.ReadToEnd());
                }
            }
        }
    }
}
```

Po uruchomieniu tej aplikacji C# powinieneś pobrać listę swoich kont SMS. Wyświetlamy również w pierwszej kolejności obliczony podpis żądania.

```bash
$1$c190e3e8d22399d11dcba599f782f9e11a016727
["sms-XX0000-1"]
```

### Wysłanie pierwszego SMS

Aby wysyłać wiadomości SMS, używamy metody POST jobs:


[🇪🇺POST/sms/{serviceName}/jobs](https://eu.api.ovh.com/console/?section=/sms&branch=v1#post-/sms/-serviceName-/jobs)

:::info
Odpowiedź SMS (numer skrócony za pomocą `senderForResponse`) jest dostępna wyłącznie we Francji.
:::

Parametr senderForResponse umożliwia użycie numeru skróconego, co pozwala wysyłać wiadomości SMS bezpośrednio, bez konieczności tworzenia nadawcy (np. Twojej nazwy).
Numery skrócone umożliwiają również odbieranie odpowiedzi od osób, które otrzymały SMS, co może być przydatne w przypadku ankiety satysfakcji, aplikacji do głosowania, gry itp.

```bash
private void sendSms()
        {
            String AK = "your_app_key";
            String AS = "your_app_secret";
            String CK = "your_consumer_key";

            //Parametry wywoływanej metody
            String ServiceName = "sms-XX00000-1";
            String METHOD = "POST";
            String QUERY = "https://eu.api.ovh.com/1.0/sms/"+ServiceName+"/jobs";
            String BODY =@"{ ""charset"": ""UTF-8"", ""receivers"": [ ""+33660000000"" ], ""message"": ""Test SMS OVH"", ""priority"": ""high"",  ""senderForResponse"": true, ""sender"": ""YOURSENDER""}";

            Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
            String TSTAMP = (unixTimestamp).ToString();
            

            String signature = "$1$" + HashSHA1(AS + "+" + CK + "+" + METHOD + "+" + QUERY + "+" + BODY + "+" + TSTAMP);
            Console.WriteLine(signature);

            //Tworzenie żądania
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(QUERY);
            req.Method = METHOD;
            req.ContentType = "application/json";
            req.Headers.Add("X-Ovh-Application:"+ AK);
            req.Headers.Add("X-Ovh-Consumer:" + CK);
            req.Headers.Add("X-Ovh-Signature:"+ signature);
            req.Headers.Add("X-Ovh-Timestamp:" + TSTAMP);
       
            //Zapisywanie parametrów BODY
            using (System.IO.Stream s = req.GetRequestStream())
            {
                using (System.IO.StreamWriter sw = new System.IO.StreamWriter(s))
                    sw.Write(BODY);
            }

            try
            {
                //Pobieranie wyniku wywołania
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)req.GetResponse();
                String[] l = null;
                using (var respStream = myHttpWebResponse.GetResponseStream())
                {
                    var reader = new StreamReader(respStream);
                    String result = reader.ReadToEnd().Trim();
                    Console.WriteLine(result);
                                  
                } 
                myHttpWebResponse.Close();
                
            }
            catch (WebException e)
            {
                Console.WriteLine("Error : ");
                Console.WriteLine("Error : ");
                using (WebResponse response = e.Response)
                using (Stream data = ((HttpWebResponse)response).GetResponseStream())
                using (var reader = new StreamReader(data))
                {                
                     Console.WriteLine(reader.ReadToEnd());
                }
            }
        }
```

Oto rodzaj oczekiwanej odpowiedzi:

```bash
$1$e591c367cebc15b1fe7f9a50d792602824a52e78
{"totalCreditsRemoved":1,"invalidReceivers":[],"ids":[27814656],"validReceivers":["+33600000000"]}
```

Otrzymujemy odpowiedź z 1 zużytym zasileniem dla prawidłowego numeru. Domyślna wiadomość zawiera komunikat STOP, który umożliwia odbiorcom rezygnację z subskrypcji.
Możesz wyłączyć STOP za pomocą parametru `noStopClause`. Pamiętaj, że przy włączonym STOP nie możesz wysyłać wiadomości SMS między 20:00 a 8:00 rano.

## Sprawdź również

[Konsola API](https://api.ovh.com/console/?section=%2Fsms\&branch=v1) umożliwi Ci odkrycie innych metod ułatwiających integrację usług takich jak: odpowiedzi SMS, wysyłka masowa z plikiem CSV, mailing, śledzenie potwierdzeń odbioru itp.

Dołącz do [grona naszych użytkowników](https://community.ovhcloud.com/).
