OVH Community, votre nouvel espace communautaire.

Sms - retour à la ligne api c-sharp


Jean-Baptiste D
09/07/2015, 14h05
Bonjour Ludovic,

Je vous remercie pour ce retour, et suis satisfait que cette solution fonctionne convenablement.

Je reste à votre disposition pour tout autre besoin d'information sur cette fonctionnalité.

Cordialement,

Jean Baptiste D.

strikel
09/07/2015, 10h33
Bonjour,

Merci, en effet ça fonctionne avec le \n, je ne l'avais pas testé seul je mettais un \r avec.

Cordialement

Ludovic

Jean-Baptiste D
07/07/2015, 17h27
Bonjour Ludovic,

Nous avons fait des tests en interne avec l'API et le Manager. Depuis le manager, les retours chariots sont bien pris en compte.
Depuis l'API, avec une string avec \n, le retour à la ligne fonctionne bien.
Le \n est bien mis au milieu de la string. La string est limitée grâce au "".

A notre niveau, je confirme qu'il suffit juste de mettre un \n dans la string du message pour que cela fonctionne.

Avez-vous fait un test de retour avec le code ASCII ?

Il semble que ce soit votre compilateur qui ne prenne pas en compte le \n

Restant à votre disposition.

Cordialement,

Jean Baptiste D.

strikel
07/07/2015, 14h09
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

Jean-Baptiste D
30/06/2015, 15h52
Bonjour,

Concernant cette faisabilité, nous avons besoin de quelques détails concernant l'envoi de vos SMS. Sont-ils en 7 ou 8 bits ?

Dans le cas où il s'agirait d'un envoi 7 bits, pouvez-vous nous indiquer si en 8 le phénomène persiste.

Un test dans l'autre sens peut-être envisagé également. Pour ce type de demande je vous invite à passer par le forum plutôt que l'assistance par mail, cela n'entrant pas dans le cadre du support technique (les demandes API).

De même, pouvez-vous nous fournir un exemple de SMS envoyé avec le code complet ?

Cordialement,

Jean Baptiste D.

strikel
30/06/2015, 08h30
Bonjour,

J'ai ouvert un ticket le 15/06/2015 portant le numéro 2015062219018859 et à ce jour toujours pas réponse.

Merci de me renseigner sur la faisabilité

Cordialement

Ludovic

Jean-Baptiste D
22/06/2015, 16h15
Bonjour,

Afin de remonter la difficulté en interne, peux-tu me communiquer le NIC associé à ton compte SMS ?
Nous aurons également besoin de plus d'informations pour résoudre ce phénomène, je t'invite donc à nous envoyer un message au support, je me chargerai d'y répondre au plus vite.

Cordialement,

Jean-Baptiste D

strikel
15/06/2015, 10h39
Bonjour,

j'ai développé une classe vb.net en me basant sur votre exemple d'utilisation de l'api en c# pour l'envoi d'sms.
Les sms sont bien expédiés et je n'ai aucun souci de retour en revanche je n'arrive pas à envoyer d'sms comportant des retours à la ligne.
J'ai essayé \r\n ou %0a%0d mais ces caractères se retrouvent toujours dans le texte du message.

Merci de votre aide