OVH Community, votre nouvel espace communautaire.

Utilisation de "credentials" en sms pour un compte spécifique


asif
03/03/2015, 13h58
Bonjour,
Merci pour la réponse. Je vais regarder les différentes réponses et si bésoin, je reviens ici.

Charles.A
02/03/2015, 09h04
Bonjour Asif,

Désolé pour ce temps de réponse ;

Pour supprimer des tokens, vous pouvez par API (ou via la console) :
GET /me/api/credential
DELETE /me/api/credential/{credentialId}

Pour les expéditeurs, vous pouvez soit les créer par le manager, soit par l'API. (attention cela peut prendre quelques temps pour valider un nom afin qu'il n'y ait pas d'abus ni d'usurpations.)
Voici l'appel pour créer un expéditeur par API, la demande sera validée par un modérateur. Pour la longueur il faut que le nom soit inférieur ou égale à 11 caractères.
POST /sms/{serviceName}/senders

Enfin lorsque vous enverrez des SMS, il ne faudra pas activer le paramètre : senderForResponse sinon vous aurez un numéro court permettant une réponse. A la place il faudra donc préciser le paramètre sender.

asif
27/02/2015, 14h17
Bonjour,

Personne pour me répondre ?
(c'est peut être à cause des vacances)

Même si vous n'avez pas la réponse, faites signe de vie lolz.

asif
24/02/2015, 10h43
Bonjour,

J'avais transmis le code à mon collègue développeur et visiblement cela l'a aidé puisque cela à l'air de fonctionner.
Et je vous en remercie tous, plus particulièrement "Charles" qui a prit le temps de m'appeler.

Par ailleurs, toujours par API,je reçois des SMS dont les numéros d'expéditeurs sont par exemple : “3 63 12”, “3 63 12”, “3 63 11” ou “3 61 10”.
Est-ce possible de remplacer ces numéros par un champs / texte paramétrable ? Par exemple à place on aurait "Office DIAG".
Autre exemple, je crée un compte "Office DIAG Paris", et je lui attribue 10 sms, ensuite lorsqu'un SMS est envoyé avec ce compte, l'expéditeur soit "Office DIAG Paris" sans que j'ai à gérer cela depuis le "Manager". Idem pour le compte "Office DIAG LYON".
Si oui, Est-ce que le nombre de caractères pour ce champ est limité ?

Autre question que j'avais déjà posé, Est-ce qu'on peut supprimer certains credentiels (tokens) qu'on a déjà crées ?

Charles.A
13/02/2015, 17h42
Si vous avez encore des problemes de droits c'est qu'il doit y avoir un probleme d'appels sur des méthodes non autorisées.

Je vous propose de tester pas à pas :
GET /1.0/sms/sms-dm41805-1/users/maurice4sms HTTP/1.1

Attendu :
{
"quotaInformations": {
"quotaStatus": "inactive",
"quotaLeft": 0
},
"password": "xxx",
"ipRestrictions": [],
"alertThresholdInformations": {
"support": "mail",
"alertThreshold": -1,
"alertEmail": "",
"alertNumber": ""
},
"login": "cxxxxxx",
"callBack": ""
}


Puis un test d'envoi de message :
POST /1.0/sms/sms-dm41805-1/users/maurice4sms/jobs HTTP/1.1

Attendu :
{
"totalCreditsRemoved": 1,
"invalidReceivers": [],
"ids": [xxxxxx],
"validReceivers": ['xxxx']
}

Voici du code pour vous aider.
private static void getSmsAccount()
{
String AK = "your_app_key";
String AS = "your_app_secret";
String CK = "your_consumer_key";

//Paramètres de la méthode appellée
String METHOD = "GET";
String QUERY = "https://eu.api.ovh.com/1.0/sms/sms-dm41805-1/users/maurice4sms";
String BODY = "";

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

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

//Creation de la requete
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
{
//Récupération du résultat de l'appel
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();

}
//Gestion des exceptions
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());
}
}
}
private void sendSms()
{
String AK = "your_app_key";
String AS = "your_app_secret";
String CK = "your_consumer_key";


//Paramètres de la méthode appellée
String ServiceName = "sms-dm41805-1";
String METHOD = "POST";
String QUERY = "https://eu.api.ovh.com/1.0/sms/"+ServiceName+"/users/maurice4sms/jobs/";
String BODY =@"{ ""charset"": ""UTF-8"", ""receivers"": [ ""+33660000000"" ], ""message"": ""Test SMS OVH"", ""priority"": ""high"", ""senderForResponse"": true}";

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);

//Creation de la requete
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);

//Ecriture des paramètres BODY
using (System.IO.Stream s = req.GetRequestStream())
{
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(s))
sw.Write(BODY);
}

try
{
//Récupération du résultat de l'appel
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());
}
}
}

asif
13/02/2015, 14h46
Citation Envoyé par Charles.A
Si vous avez juste besoin d'un user : vous pouvez le créer dans la console, il suffit de se connecter, autoriser l'usage pour un jour : voici le lien https://api.ovh.com/console/#/sms

Pour créer un user il faut faire un appel POST /sms/{serviceName}/users Create https://api.ovh.com/console/#/sms/{serviceName}/users#POST
De mémoire il vous faudra un mot de passe alphanumérique de 8 caractères.

Si vous faites tout par API, voici le lien pour avoir les bons droits :

https://eu.api.ovh.com/createToken/?...41805-1/users/
J'ai fais ce que vous avez conseillé mais visiblement cela ne fonctionne pas.

J'ai crée un utilisateur "maurice4sms" avec un mot de passe depuis la console.
Ensuite, je suis allé dans mon manager à partir du lien suivant : https://www.ovh.com/managerv3/sms-ma...ome.xsl&csid=0
Et j'ai pu constater qu'en plus des users existants (asif2015 et maurice), le nouveau user (maurice4sms) est présent. Toujours depuis le manager, j'ai ajouté un quota de 5 sms à ce nouveau user.
Par la suite, j'ai crée les tokens avec le lien suivant : https://eu.api.ovh.com/createToken/?...41805-1/users/

Mais j'ai toujours la même erreur.

Est-ce que vous pourriez m'expliquer étape par étape ce que je devrais faire car j'ai l'impression que j'ai "loupé" un étape.
Ou sinon laissez moi un numéro sur lequel vous appeler ou appeler moi sur mon portable : 06 13 64 75 09 car je m'arrache les cheveux

Charles.A
13/02/2015, 12h11
Si vous avez juste besoin d'un user : vous pouvez le créer dans la console, il suffit de se connecter, autoriser l'usage pour un jour : voici le lien https://api.ovh.com/console/#/sms

Pour créer un user il faut faire un appel POST /sms/{serviceName}/users Create https://api.ovh.com/console/#/sms/{serviceName}/users#POST
De mémoire il vous faudra un mot de passe alphanumérique de 8 caractères.

Si vous faites tout par API, voici le lien pour avoir les bons droits :

https://eu.api.ovh.com/createToken/?...41805-1/users/

asif
13/02/2015, 11h55
Citation Envoyé par Charles.A
Vous pouvez vérifier que votre users existe bien avec GET /sms/{serviceName}/users (je precise car les users api sont différents de ceux dans le manager)
Bonjour,
Cela devient intéressant...En effet, j'ai crée le user "asif2015" depuis le manager. Faut il créer un user api ? si oui, comment le créer ?

N'hésitez pas à retester au cas où avec les nouvelles clés dans votre code :
https://eu.api.ovh.com/createToken/?...ers/asif2015/*
Pouvez vous me donner un nouveau lien avec toutes les clés nécessaires SVP ?

Charles.A
13/02/2015, 11h07
Bonjour,

En effet votre essai 1 devrait etre concluant car il autorise toutes les actions en GET et POST pour votre user, vous devriez ensuite pouvoir réaliser un POST sur /SMS/.../users/.../jobs

Vous pouvez vérifier que votre users existe bien avec GET /sms/{serviceName}/users (je precise car les users api sont différents de ceux dans le manager)

N'hésitez pas à retester au cas où avec les nouvelles clés dans votre code :
https://eu.api.ovh.com/createToken/?...ers/asif2015/*

asif
13/02/2015, 09h43
Bonjour,
Pour info, mon message précédent à été laissé 2 minutes après votre réponse. J'étais en train d'ecrire lorsque vous avez ajouté votre réponse.

Pour revenir au problème, je viens de réessayer avec les informations suivantes et malheureusement mon application m'affiche l'erreur suivante :

ERROR
{"errorCode":"NOT_GRANTED_CALL","httpCode":"403 Forbidden","message":"This call has not been granted"}

Voilà ce que j'ai essayé à partir du lien suivant : https://api.ovh.com/createToken/

Essai 1 :
- GET : /sms/
- GET : /sms/sms-dm41805-1/users/asif2015/*
- POST : /sms/sms-dm41805-1/users/asif2015/*

Essai 2 (avec des slashs à la fin) :
- GET : /sms/
- GET : /sms/sms-dm41805-1/users/asif2015/*/
- POST : /sms/sms-dm41805-1/users/asif2015/*/

En attente de votre aide SVP.

asif
13/02/2015, 09h22
Bonjour,
Merci pour ces messages. qui rassurent que vous ne m'avez pas "laissé tomber"

Est-ce que vous pensez pouvoir solutionner ce matin car cela commence à devenir un petit peu urgent.

J'espère à tout à l'heure.

Asif

Luigi_B
13/02/2015, 09h20
Bonjour.

Les credentials se gèrent directement via l'api sur :

- /me/api/credential/*

Concernant les tests effectués en interne, nous n'avons pas reproduis, ça fonctionne de notre côté en utilisant :

rules: [
{
method: "GET"
path: "/sms/"
}
{
method: "GET"
path: "/sms/sms-xx000000-1/users/monUser/*"
}
{
method: "POST"
path: "/sms/sms-xx000000-1/users/monUser/*"
}
]

Cordialement.

Luigi.B

PierrYves L
12/02/2015, 16h09
Bonjour Asif,

Nous continuons à réaliser des tests en interne en reproduisant le problème recontrés.

Nous pourrons vous faire un retour dès que ces tests seront effectués.

Bien cordialement,
PierrYves L

asif
12/02/2015, 09h23
Désolé le message est passé 2 fois.

asif
12/02/2015, 09h14
Bonjour,
Juste pour vous dire que j'etais en attente de votre réponse.
En réalité cela fait maintenant 1 semaine que je galere avec cette histoire.
J'ai commencé par appeler le 1007 et on m'a conseillé d'ecrire un mail puis finalement vos collègues m'ont redirigés vers ce forum.

Luigi_B
11/02/2015, 16h48
Nous allons tenter de reproduire en interne ce fonctionnement.

Je vous fais un retour dès que les tests ont pu être effectués.

Cordialement.

Luigi.B

asif
11/02/2015, 10h33
Bonjour,
J'ai essayé mais malheureusement cela ne semble pas fonctionner car j'ai la même erreur.

Essai 1 :
- GET : /sms/
- GET : /sms/sms-dm41805-1/users/asif2015/jobs/
- POST : /sms/sms-dm41805-1/users/asif2015/jobs/

Essai 2 :
- GET : /sms/sms-dm41805-1/users/asif2015/jobs/
- POST : /sms/sms-dm41805-1/users/asif2015/jobs/

OU est l'erreur SVP ?

D'autre part, Est-ce qu'on peut supprimer / gérer les crédentials (tokens) déjà crées ?

Luigi_B
11/02/2015, 09h54
Bonjour.

En effet, il y a une erreur dans les informations renseignées.

Vous donnez des droits en GET et POST sur :

- /sms/sms-dm41805-1/users/asif2015/

Il faudrait donner les droits sur:

- /sms/sms-dm41805-1/users/asif2015/jobs/

Il faut toujours utiliser la méthode /jobs pour dé-créditer sur votre quota.

Cordialement.

Luigi.B

asif
10/02/2015, 14h45
Bonjour,
Merci de votre réponse mais je crois que j'ai été mal compris ou alors je me suis mal exprimé.

En fait, j'ai un collègue développeur qui m'a fait un application (en C#) qui necessite les 3 "tokens" : Application Key, Application Secret et Consumer Key.

Avec le lien suivant, j'obtiens bien ces tokens mais lorsque cette application envoi le sms, c'est le compte principal qui est débité. : https://eu.api.ovh.com/createToken/?...T=/sms/*/jobs/

Alors que je souhaiterais créer des tokens uniquement pour l'utilisateur "asif2015" qui a un quota de 5 sms.

Est-ce que d'abord c'est possible ? si oui quels doivent être les droits (get, post, ...etc) et quel valeurs (/sms/) afin generer les 3 tokens ?

Pour information, j'ai reussi à créer les tokens à partir du lien suivant mais lorsque je tente d'envoyer un SMS j'ai une erreur ( "This call has not been granted") qui apparait:
https://eu.api.ovh.com/createToken/?...sers/asif2015/

Dites moi si vous n'avez pas compris ma demande.

D'avance merci.

Luigi_B
10/02/2015, 09h08
Bonjour.

Concernant les crédits du compte principal lors d'attribution des quotas SMS, c'est un fonctionnement voulu.

Je viens de tester la fonction, je n'ai pas reproduis l'erreur donnée, pourriez-vous tester simplement la fonction d'envoi avec le compte secondaire :

https://eu.api.ovh.com/console/#/sms/{serviceName}/users/{login}/jobs#POST

Et si c'est le cas, vérifier que le quota de votre compte secondaire est bien débité :

https://eu.api.ovh.com/console/#/sms...7Blogin%7D#GET

Cordialement.

Luigi.B

asif
09/02/2015, 17h14
Bonjour,
Je sais créer des "credentials" à partir du lien suivant : https://eu.api.ovh.com/createToken/?...T=/sms/*/jobs/
Cela fonctionne bien mais cela debite le compte principal.

J'ai crée un utilisateur "asif2015" et je lui ai attribué 5 sms. J'ai tenté de créer des crédentials à partir du lien suivant : https://eu.api.ovh.com/createToken/?...sers/asif2015/
Mais cela ne fonctionne par car j'ai un message "This call has not been granted".

En résumé cela fonctionne pour le compte principal mais j'aimerais tester l'utilisation de sms pour un compte spécifique (ici asif2015).

Merci de me donner les options à selectionner.

D'autre part,

PS : désolé si quelqu'un à déjà demandé la meme question.