Test Appel avec REST API Calls

Added by Guillaume PODGORSKI 16 days ago

Bonjour,

Je cherche à faire un appel car le REST API de wazo mais j'ai des difficultés à comprendre son fonctionnement.

J'arrive à générer un token :

root@prod-xivo1:~# curl -k -i -X POST -H 'Content-Type: application/json' -u "xivo-auth:XXXXXXXXX" "https://localhost:9497/0.1/token" -d '{"backend": "xivo_service", "expiration": 3600}'
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 422
Access-Control-Allow-Origin: *
Date: Wed, 12 Jul 2017 07:56:51 GMT
Server: prod-xivo1

{"data": {"token": "936545f5-df79-4209-beb8-d76067a2e636", "acls": ["confd.users.read", "ctid-ng.calls.read"], "utc_expires_at": "2017-07-12T08:56:51.354359", "xivo_uuid": "d91d5eaa-13bc-4e4d-908c-89e74e8bc5c6", "issued_at": "2017-07-12T09:56:51.354359", "utc_issued_at": "2017-07-12T07:56:51.354359", "auth_id": "7e25260a-81fc-4ba7-8beb-f52afa4c378b", "expires_at": "2017-07-12T10:56:51.354359", "xivo_user_uuid": null}}

Par contre je ne comprends pas comment effectuer un appel :

root@prod-xivo1:~# curl -k -i -X POST -H 'Content-Type: application/json' -u "xivo-auth:XXXXXXXXXXXXX" "https://localhost:9500/1.0/calls" -d '{
"items": [ {
"bridges": [
"string"
],
"call_id": "string",
"caller_id_name": "string",
"caller_id_number": "string",
"creation_time": "2017-07-11T13:59:45.057Z",
"is_caller": true,
"on_hold": true,
"peer_caller_id_name": "string",
"peer_caller_id_number": "string",
"status": "string",
"talking_to": {
"{channel_id}": "string"
},
"user_uuid": "string"
}
]
}'

Je cherche à pouvoir générer un appel depuis un formulaire sur mon site web. Un genre de call back pour les visiteurs de notre site web.

Merci par avance.

Guillaume


Replies (9)

RE: Test Appel avec REST API Calls - Added by Pascal Cadotte-Michaud 15 days ago

Bonjour,

lors de la création du token, tu as utilisé l'authentification du service xivo-auth. Il faut créer un nouvel utilisateur web service pour ton service.

Tu as également ajouter une ACL à l'utilisateur web service xivo-auth. (ctid-ng.calls.read) cet acl permet de lister les appels en cours. xivo-auth ne devrait pas avoir cette permission.

Pour créer un appel ton nouvel utilisateur devra avoir l'ACL "ctid-ng.calls.create"

Les paramêtres du POST sont les suivant:

{
  "destination": {
    "context": "string",
    "extension": "string",
    "priority": 0
  },
  "source": {
    "user": "string" 
  }
}

Le token doit également être dans le header X-Auth-Token

Voici un exemple avec curl

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Auth-Token: <token>' -d '{ \ 
   "destination": { \ 
     "context": "default", \ 
     "extension": "5555551234", \ 
     "priority": 0 \ 
   }, \ 
   "source": { \ 
     "user": "<user-uuid>" \ 
   }
 }' "https://localhost:9500/1.0/calls" 

Pour faire des tests avec les API tu peux utiliser http://&lt;wazo&gt;/api ton token peut être récupérer sur auth.wazo.community et coller dans la case à gauche du bouton "Explore". Quand tu cliques sur "Try it out" depuis la doc la commande curl équivalente est affiché.

RE: Test Appel avec REST API Calls - Added by Guillaume PODGORSKI 15 days ago

Bonjour Pascal,

Merci pour les infos, j'ai un peu avancé.

Je voulais savoir où récupérer le <user-uuid> dans l'exemple que tu l'as fourni ?

Lorsque je teste maintenant j'ai :

{
"timestamp": 1499860585.135244,
"message": "Invalid extension",
"error_id": "invalid-extension",
"details": {
"exten": "111",
"context": "default"
}
}

avec comme requete :
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Auth-Token: ca5d7db9-cf91-40ce-9823-cf3420316e63' -d '{ \
"destination": { \
"context": "default", \
"extension": "111", \
"priority": 1 \
}, \
"source": { \
"user": "string" \
} \
}' 'https://192.168.10.9:9500/1.0/calls'

Merci par avance.

Guillaume

RE: Test Appel avec REST API Calls - Added by Dominique Da Fonseca 15 days ago

Bonjour
le user-uuid doit correspondre a l'utilisateur qui émet l'appel, le 111 est bien une extension valide ?

RE: Test Appel avec REST API Calls - Added by Guillaume PODGORSKI 15 days ago

Oui, c'est le poste de mon collègue.

Quand tu dis utilisateur c'est son extension style 212 ou son identifiant ligne sip : genre un truc comme ça : SIP/3sb7ca3x

Merci

Guillaume

RE: Test Appel avec REST API Calls - Added by julien dutilleul 15 days ago

hello,

le user-uuid n'est pas l'extention de l'utilisateur.

tu peux le retrouver avec une requête comme:
curl -X GET --header 'Accept: application/json' --header 'Authorization: Basic eGl2by1hcGk6eGl2by1hcGk=' 'https://ton-wazo.community:9486/1.1/users?search=111'

et dans le champ uuid, tu auras l'uuid de l'utilisateur, et ainsi, avoir toutes les infos de l’utilisateur avec:
curl -X GET --header 'Accept: application/json' --header 'Authorization: Basic eGl2by1hcGk6eGl2by1hcGk=' 'https://ton-wazo.community:9486/1.1/users/<user-uuid>'

ça sous-entend que ton visiteur de site web possède un compte ... où alors, tu en utilise un générique (du coup, le <user-uuid>. reste le même.

euh, question bête .. je suis visiteur sur ton site, je clique pour appeler, il se passe quoi concrètement ?
je peux raccrocher ? je dois autoriser mon navigateur web à capter l'audio d'une de mes sources audio ??

bon courage !

RE: Test Appel avec REST API Calls - Added by Guillaume PODGORSKI 15 days ago

Bonjour,

Merci pour les infos.

Alors concrètement :

Tu es visiteur sur mon site tu veux être rappeler.
Tu cliques sur le bouton CallBack, il t'est demandé de saisir ton numéro de téléphone.

Et derrière une action doit faire lancer un appel entre le poste d'un commercial vers ce numéro saisi par le visiteur.

Guillaume

RE: Test Appel avec REST API Calls - Added by Sébastien Duthil 14 days ago

D'après l'erreur, l'extension 111@default n'est pas joignable par personne, alors même si tu obtiens le bon user-uuid tu ne pourras pas passer ton appel. Que dit asterisk -rx 'dialplan show 111@default'?

RE: Test Appel avec REST API Calls - Added by Guillaume PODGORSKI 11 days ago

Salut,

Voici le résultat de la commande.

Il s'agit d'un groupe :

root@prod-xivo1:~# asterisk -rx 'dialplan show 111@default'
[ Context 'default' created by 'pbx_config' ]
'111' => 1. Set(XIVO_BASE_CONTEXT=${CONTEXT}) [pbx_config]
2. Set(XIVO_BASE_EXTEN=${EXTEN}) [pbx_config]
3. GoSub(group,s,1(17,)) [pbx_config]
[ Included context 'default' created by 'pbx_config' ]
'111' => 1. Set(XIVO_BASE_CONTEXT=${CONTEXT}) [pbx_config]
2. Set(XIVO_BASE_EXTEN=${EXTEN}) [pbx_config]
3. GoSub(group,s,1(17,)) [pbx_config]

Voici l'utilisateur associé :

root@prod-xivo1:~# asterisk -rx 'dialplan show 211@default'
[ Context 'default' created by 'pbx_config' ]
'211' => hint: SIP/xwozjo [pbx_config]
1. Set(XIVO_BASE_CONTEXT=${CONTEXT}) [pbx_config]
2. Set(XIVO_BASE_EXTEN=${EXTEN}) [pbx_config]
3. GoSub(user,s,1(5,,42)) [pbx_config]
[ Included context 'default' created by 'pbx_config' ]
'211' => hint: SIP/xwozjo [pbx_config]
1. Set(XIVO_BASE_CONTEXT=${CONTEXT}) [pbx_config]
2. Set(XIVO_BASE_EXTEN=${EXTEN}) [pbx_config]
3. GoSub(user,s,1(5,,42)) [pbx_config]

J'ai le même résultat si j'essaie d'appeler l'extension de l'utilisateur (211) à la place de son groupe (111)

Merci

Guillaume

RE: Test Appel avec REST API Calls - Added by Sébastien Duthil 10 days ago

Y'a un truc étrange dans le retour de la commande: le contexte default est inclus dans le contexte default... tu dois avoir une boucle d'inclusion de contextes, par exemple default inclut to-extern qui lui-même inclut default ?

(1-9/9)