Bonjour,
J'ai testé l'envoi en 7 ou bits et le résultat est le même.
Voici le code de ma méthode d'envoi
Code:
Public Function sendSms() As Boolean
Dim result As Boolean = True
Dim METHOD As String = "POST"
Dim QUERY As String = "https://eu.api.ovh.com/1.0/sms/" + ServiceName + "/jobs/"
Dim BODY As String = String.Empty
For Each num_tel As String In Me.num_mobile
If num_tel.StartsWith("06") Or num_tel.StartsWith("07") Or num_tel.StartsWith("+336") Or num_tel.StartsWith("+337") Then
BODY = "{ ""charset"": ""UTF-8"", ""receivers"": [ ""@TEL"" ], ""message"": ""@MESSAGE"", ""priority"": ""high"", ""senderForResponse"": false, ""noStopClause"": true , ""sender"":""espaceoiv""}"
BODY = BODY.Replace("@MESSAGE", message)
If Not num_tel.StartsWith("+33") Then num_tel = "+33" + num_tel.Substring(1, num_tel.Length - 1)
BODY = BODY.Replace("@TEL", num_tel)
BODY = BODY.Replace("@LF", " ")
Dim unixTimestamp As Int32 = 0
Dim TotalSeconds As Double = DateTime.UtcNow.Subtract(New DateTime(1970, 1, 1)).TotalSeconds
unixTimestamp = Convert.ToInt32(TotalSeconds)
Dim TSTAMP As String = (unixTimestamp).ToString()
Dim signature As String = "$1$" + HashSHA1(app_secret + "+" + consumer_key + "+" + METHOD + "+" + QUERY + "+" + BODY + "+" + TSTAMP)
Console.WriteLine(signature)
Dim req As HttpWebRequest = DirectCast(HttpWebRequest.Create(QUERY), HttpWebRequest)
req.Method = METHOD
req.ContentType = "application/json"
req.Headers.Add("X-Ovh-Application:" + app_key)
req.Headers.Add("X-Ovh-Consumer:" + consumer_key)
req.Headers.Add("X-Ovh-Signature:" + signature)
req.Headers.Add("X-Ovh-Timestamp:" + TSTAMP)
Using s As System.IO.Stream = req.GetRequestStream()
Using sw As New System.IO.StreamWriter(s)
sw.Write(BODY)
End Using
End Using
Try
Dim myHttpWebResponse As HttpWebResponse = DirectCast(req.GetResponse(), HttpWebResponse)
Dim l As String() = Nothing
Using respStream = myHttpWebResponse.GetResponseStream()
Dim reader = New StreamReader(respStream)
error_message = reader.ReadToEnd().Trim()
End Using
myHttpWebResponse.Close()
result = True
Catch e As WebException
result = False
Using response As WebResponse = e.Response
Using data As Stream = DirectCast(response, HttpWebResponse).GetResponseStream()
Using reader = New StreamReader(data)
error_message = "Error : " + reader.ReadToEnd()
End Using
End Using
End Using
End Try
End If
Next
Return result
End Function
le message envoyé est contenu dans un fichier texte contenant le texte suivant :
Bonjour @INTERLOCUTEUR,@LFVotre commande ref:@REFERENCE a été enregistrée sous le numero @ID_ECC.@LFUn mail de confirmation vous a été envoyé.@LFLe service Clients Ouest Isol & Ventil.
Je charge le contenu du txt dans une variable de type String et je remplace les balises @xxxx par les valeurs correspondantes
les balises @LF du message correspondent aux endroits où doivent apparaitre les retours chariots.
J
'ai tenté le replace :
- par crlf et le sms ne part pas erreur de signature
- par %0A%0D, je retrouve ces caractères dans le sms
- par \r\n, idem
Cordialement
Ludovic