21Sep, 2017
0Réaction(s)

Comment envoyer des SMS lorsqu’une saisie est enregistrée sur Kizeo Forms ?

 

Cette Kize’Astuces nécessite que vous connaissiez un minimum le fonctionnement de Kizeo Forms et que vous ayez des compétences en développement informatique.

Vous envoyez déjà trop de mails ? En plus, vous vous doutez bien que les destinataires les lisent en diagonale. Il faut trouver une autre solution pour que votre message soit pris en compte. Revenons-en aux fondamentaux : un bon petit SMS, ça parle à tout le monde…

Admettons que vous ayez un formulaire tout simple de prise de RDV avec un nom de client, une adresse, une date et un commercial  :

Formulaire Kizeo Forms

Il serait super intéressant d’avertir rapidement le commercial de ce nouveau prospect directement sur son mobile.

La solution existe pour mettre en place ce scénario de RDV par SMS, il faut utiliser l’API Kizeo Forms :
https://www.kizeoforms.com/doc/?action=article_show&article=rest/rest_getting_started

Le fait d’utiliser cette API va vous permettre d’automatiser une tâche et ce ne sera plus vous « être humain » qui allez « cliquer » mais un ordinateur qui fera le travail, et lui, ne dort jamais.

Avec cette API, nous allons pouvoir bâtir un programme avec ces 3 étapes :

1ère étape : Obtenir un token

Le token est une sorte de mot de passe provisoire qui permettra à votre programme de voir les données comme si c’était vous quand vous êtes connecté sur le back-office.

2ème étape : Parcourir toutes les données nouvelles Kizeo Forms

Pour un formulaire bien précis, et pour chaque donnée, le programme va construire le contenu de votre SMS grâce aux valeurs qui ont été saisies dans le formulaire.
Suivant l’exemple ci-dessus, le programme récupèrera facilement le nom du client, son adresse… Et surtout le numéro de téléphone mobile du commercial.

Une fois le contenu du message « calculé », il faudra utiliser un service tiers comme le propose par exemple OVH pour « vraiment » envoyer ce SMS :

https://www.ovhtelecom.fr/sms/api-sms.xml

Voici le résultat :

Résultat sur le mobile

3ème étape : Marquer les données « traitées » sur le serveur de Kizeo Forms

Votre SMS a été envoyé, vous avez le sourire qui monte aux oreilles mais ce n’est pas fini. Si jamais le programme est relancé, ce joli SMS repartira.

Il faut terminer le programme en faisant un nouvel appel API qui marquera sur le serveur que cette donnée a été traitée, de manière à prévenir les envois en double. Pas de panique, la nouvelle donnée est toujours présente sur le back-office.

Vous trouverez ci-dessous la vraie partie « technique » de cet article, c’est un exemple en PHP :

require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

$user = 'login';
$password = 'pass';
$company = 'global_code';
$array_login = array("user" => $user, "password" => $password, "company" => $company);
$json_login = json_encode($array_login);

$service_main_url = "https://www.kizeoforms.com/rest/v3";
$service_url = $service_main_url . '/login';
$ch = curl_init($service_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_login);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: '.strlen($json_login)));
$curl_response = curl_exec($ch);
curl_close($ch);


$array_json_token = json_decode($curl_response, true);
$token = "";


if ($array_json_token['status'] == 'ok'){
$token = $array_json_token['data']['token'];
}

$array_ids = array();
$form_id = 00000;

$service_main_url = "https://www.kizeoforms.com/rest/v3";
$service_url = $service_main_url . '/forms/' . $form_id . '/data/readnew';
$ch = curl_init($service_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: '. $token));
$curl_response = curl_exec($ch);
curl_close($ch);

$array_json_data = json_decode($curl_response, true);
if ($array_json_data['status'] == 'ok' && count($array_json_data['data']) > 0 ){
foreach ($array_json_data['data'] as $key => $data) {
$array_ids[] = $data['id'];
$commercial = $data['fields']['commercial']['value'];
$client = $data['fields']['nom_du_client']['value'];
$date = $data['fields']['date_et_heure_du_rdv']['value'];
$adresse = $data['fields']['adresse_address']['value'] . ' ' .$data['fields']['adresse_zip']['value'] . ' '. $data['fields']['adresse_city']['value'];

$endpoint = 'ovh-eu';
$applicationKey = "appKey";
$applicationSecret = "appSecret";
$consumer_key = "consumerKey";

$conn = new Api( $applicationKey,
$applicationSecret,
$endpoint,
$consumer_key);
$smsServices = $conn->get('/sms/');
$content = (object) array(
"charset"=> "UTF-8",
"class"=> "phoneDisplay",
"coding"=> "7bit",
"message"=> "Bonjour $commercial, merci de noter dans votre agenda le RDV suivant avec $client. $adresse le $date",
"noStopClause"=> false,
"priority"=> "high",
"receivers"=> [ $data['fields']['telephone']['value'] ],
"senderForResponse"=> true,
"validityPeriod"=> 2880
);
$resultPostJob = $conn->post('/sms/'. $smsServices[0] . '/jobs/', $content);
}
}


if (count($array_ids)){
$service_main_url = "https://www.kizeoforms.com/rest/v3";
$service_url = $service_main_url . '/forms/' . $form_id . '/markasread';
$ch = curl_init($service_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: '. $token));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array('data_ids' => $array_ids)));
$curl_response = curl_exec($ch);
curl_close($ch);
$array_json_data = json_decode($curl_response, true);
if ($array_json_data['status'] == 'ok'){
// c'est bon signe
}
}

N’hésitez pas à commenter cet article !
Nous sommes disponibles pour répondre à vos questions, suggestions, remarques, etc..!

Poster un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *