---
title: "Inviare SMS con l'API di OVHcloud in C#"
description: "Scopri come inviare SMS con l'API RESTful di OVHcloud in C#: crea le tue credenziali API, connettiti e invia il tuo primo SMS"
url: https://docs.ovhcloud.com/it/guides/web-cloud/messaging/sms/sending-via-api-c
lang: it
lastUpdated: 2026-06-15
---
# Inviare SMS con l'API di OVHcloud in C#

## Obiettivo

Gli SMS sono ampiamente utilizzati per diffondere informazioni pratiche, monitorare lo stato di un ordine o di un processo transazionale, ricevere avvisi in caso di evento insolito o ricordare appuntamenti. Questa guida illustra il metodo per inviare un primo SMS con l'API di OVHcloud in C#.

**Scopri come inviare SMS con l'API RESTful di OVHcloud in C#.**

## Prerequisiti

- Un ambiente di sviluppo C#.
- Un account OVHcloud con crediti SMS.
- Un mittente SMS convalidato.

## Procedura

### Chiamate verso l'API

Implementeremo la chiamata al servizio web direttamente nel codice. Per motivi di leggibilità e semplicità, la parte di consumo dell'API non è né fattorizzata né implementata completamente (deserializzazione JSON, ecc.).

Per l'implementazione della chiamata al servizio web, ti consigliamo di leggere la nostra guida sui [primi passi con le API di OVHcloud](/it/guides/manage-and-operate/api/first-steps.md).

In questa guida chiameremo due metodi:

- Elenco dei servizi SMS attivi:


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

- Inviare SMS:


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

### Creazione delle credenziali

Le credenziali API sono necessarie per utilizzare l'API SMS; vengono create singolarmente per identificare l'applicazione che invierà gli SMS. La durata di queste credenziali è configurabile.

Crea le tue credenziali di Script (tutte le chiavi in una volta) su questa pagina: [https://auth.eu.ovhcloud.com/api/createToken](https://auth.eu.ovhcloud.com/api/createToken).

:::info
Il seguente URL ti permette di ottenere automaticamente i permessi corretti per questa guida: [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).
:::

![creazione dei token](/images/web-cloud/messaging/sms/envoyer-des-sms-avec-lapi-ovh-en-c/sms-tokens-01.png)
In questo semplice esempio, recuperiamo i permessi per accedere alle informazioni sull'account, alla possibilità di vedere gli invii in attesa e alla possibilità di inviare SMS.

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

L'asterisco (\*) attiva le chiamate a questi metodi per tutti i tuoi account SMS; puoi limitare le chiamate a un solo account se gestisci più account SMS sul tuo account OVHcloud.

Clicca su `Create
` per recuperare le credenziali per il tuo script:
- Application Key (identifica la tua applicazione)
- Application Secret (autentica la tua applicazione)
- Consumer Key (autorizza l'applicazione ad accedere ai metodi scelti)

![recupero dei token](/images/web-cloud/messaging/sms/envoyer-des-sms-avec-lapi-ovh-en-c/sms-tokens-02.png)
L'ambiente e le credenziali sono pronti: puoi scrivere il codice della tua prima chiamata all'API.

### Connessione di base all'API: recupero dell'account SMS

Ora testeremo la corretta connessione all'API visualizzando semplicemente il nome del 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();
        }

        //calcolo dello 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";
            
            //Parametri del metodo chiamato
            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();

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

            //Creazione della richiesta
            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
            {
                //Recupero del risultato della chiamata
                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();

            }
            //Gestione delle eccezioni
            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());
                }
            }
        }
    }
}
```

All'avvio di questa applicazione C#, dovresti recuperare l'elenco dei tuoi account SMS. Visualizziamo inoltre, per prima cosa, la firma calcolata della richiesta.

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

### Invio del primo SMS

Per inviare SMS, utilizziamo il metodo POST jobs:


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

:::info
La risposta via SMS (numero breve tramite `senderForResponse`) è disponibile unicamente in Francia.
:::

Il parametro senderForResponse permette di utilizzare un numero breve, il che ti consente di inviare SMS direttamente senza dover creare un mittente (es.: il tuo nome).
I numeri brevi permettono anche di ricevere risposte dalle persone che hanno ricevuto l'SMS, il che può essere utile per un sondaggio di soddisfazione, un'applicazione di voto, un gioco, ecc.

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

            //Parametri del metodo chiamato
            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);

            //Creazione della richiesta
            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);
       
            //Scrittura dei parametri BODY
            using (System.IO.Stream s = req.GetRequestStream())
            {
                using (System.IO.StreamWriter sw = new System.IO.StreamWriter(s))
                    sw.Write(BODY);
            }

            try
            {
                //Recupero del risultato della chiamata
                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());
                }
            }
        }
```

Ecco il tipo di risposta prevista:

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

Si ottiene una risposta con 1 credito consumato per un numero valido. Il messaggio predefinito include il messaggio STOP che consente ai destinatari di annullare l'iscrizione.
Puoi disattivare lo STOP tramite il parametro `noStopClause`. Tieni presente che, con lo STOP, non puoi inviare SMS dalle 20:00 alle 8:00 del mattino.

## Per saperne di più

La [console API](https://api.ovh.com/console/?section=%2Fsms\&branch=v1) ti permetterà di scoprire altri metodi per facilitare l'integrazione di servizi come: risposte via SMS, invio massivo con file CSV, mailing, monitoraggio degli avvisi di ricezione, ecc.

Contatta la nostra [Community di utenti](https://community.ovhcloud.com/).
