For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/it/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/it/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/it/guides/web-cloud/messaging/sms/sending-via-api-c.md.
Scopri come inviare SMS con l'API RESTful di OVHcloud in C#: crea le tue credenziali API, connettiti e invia il tuo primo SMS
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.).
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: .
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)
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:
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.
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.
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()); } } }
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 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.